This is the second blog in a three-part series. In the first part, we traced back our growth story and the tech challenges that entailed. Now, we want to take you to the technical strategies which helped us nail challenges in our journey. Let’s begin.
Any engineering team has to excel and focus on 3 critical aspects. All 3 are centered around business excellence. After all, there would be no engineering if there is no business.
- Chase Velocity – Try to deliver the products faster to the market. This helps the business sell more products, keep customers satisfied and run ahead of the competition.
- Sustain Reliability – Velocity doesn’t mean you build products just for the sake of it. Quality is never compromised. Products have to deliver top-notch user experience every single time.
- Slay Costs – We don’t throw money at problems. Where is the fun in building things without a challenge? At our scale, building products economically forces us to widen our thought process and consider solutions that we may not have normally thought of. We constantly focus on keeping our production costs low.
Our strategies are not focused on any particular technology. Our strategies are more like a set of guidelines that we have all adopted. These are not rigid rules that are forced upon the team. In fact, most of these guidelines were proposed by the team and adopted after discussing with their peers.
So, how do we make sure that the engineering team remains focused on these strategies? Answer: By bringing transparency.
Every product owner documents the following and gets it reviewed.
- Clarity – Get to know why the product is being built, use cases, SLA and FUP.
- Planning – Contract with dependent services, architecture diagram.
- Preparation – Unit test cases, load testing, and security testing.
- Iterating – Release the code at will, get feedback faster and act on it.
- Quality – Make sure the product is scalable, available, secure and has proper alerting.
- Monitoring – Keep an eye on SLAs, product usage metrics and costs. Log all the important events.
- Release Plan – Don’t release the changes to all the customers.
- Simplicity and Modularity – Code should be reusable such that systems shouldn’t become redundant. Complex solutions are hard to build and maintain.
Building this level of transparency is hard. When your work is constantly visible to everyone else in the team, it can create a powerful sense of accountability. However, not everyone is comfortable with such visibility. Which brings us to our third focus area – Culture. We could have the most awesome mission and the best strategy on earth, but it would not have worked unless we fostered a culture of openness, candor, and learning.
I am talking about how we went about building this culture in the next and final part of this blog post here.