Many people will think that handling hyperfast growth is a nice problem to have in their business. Yes and no. While it is great to have a business that is growing in revenue and customers, in these days of Software as a Service and virtualized servers, keeping up can be a challenge. It isn’t always obvious how to build an infrastructure that can scale up quickly. A recent article about the career of Aditya Agarwal in First Round is worth reading. Agarwal went to Oracle right out of college, and has been with Facebook when it had just a few employees, and has worked at Dropbox and other Internet companies.
If you are trying to build an engineering team that can handle growth, here are some of the highlights from the article that resonated with me.
1. Be flexible. You might have to move to a different team, or take a different approach, because of the increased scale. Or realize that your code was built for a smaller customer base. Don’t dwell on it.
2. See the bigger picture. They wanted people “who can think about the product all the way down to the infrastructure.” That means understanding how your code fits in to the overall project and how what you work on can influence someone else’s code too.
3. Be a polyglot programmer. Don’t use a hammer for every job, and learn new programming languages when it is appropriate for a particular project. Spend some time to develop your skills so you can work on multiple platforms, OSs etc.
4. Fight complacency or depression. Try to work each day on a more even keel. This is going to be hard work, and don’t get discouraged. Accept failure as part of the learning process. Be on the outlook for what needs to be done and set your sights accordingly.
5. Develop your leadership skills. Know when you can’t fix something by yourself and how to find someone who can help you. Leading a team isn’t just about telling someone to do something, but also about understanding what your team’s strengths and weaknesses are and how to code around these problems. It is also about providing the right motivation, resolving conflicts quickly, and making sure communication and collaboration is flowing in a positive direction. Be transparent about your decision process and communicate often and clearly about what you are doing and why.
6. Know the trade offs between producing quality or quantity. There are times to focus on one or the other, and just be able to deal with that. There is no right or wrong or absolute way. Agrawal mentioned that when he went to Oracle for his first job, he wasn’t expected to deliver any code for the first month. Facebook was another story: there he was expected to contribute code on his first day.
7. How much chaos can you tolerate? How much can your customers tolerate? These are important questions to ask and get answers to that define your daily work habits.
8. Know the corporate values and cherish them. Learn from your new hires that have worked at established software companies and how they have built their cultures over the years.