Technology Choices During Hyper Growth
August 21, 2020
Previously in our hypergrowth series, we spoke about the business and cultural aspects of hypergrowth. We highlighted guidelines such as focusing on sales enablement and empowering your employees as a means to ensure that your company culture can be sustained as your business grows by 40% year over year.
If you’re the one in charge of the software engineering organization, your responsibility is twofold. On the one hand, you’ll need to figure out how these challenges apply to your research and development teams, as well as the tools and infrastructure they use to perform their job. On the other hand, as the business grows, the technology and infrastructure will need to grow with it. You will be tempted to meet these growing demands by hiring even more engineers (hint: this isn’t the answer), which will bring with it its own set of challenges.
As we dive into the second part of our hypergrowth series, we will analyze the impact of this growth on your organization and provide guidelines that will allow you to let your company keep growing.
The bare necessities of scaling
In my experience, the first (and most obvious) impact of hypergrowth on the engineering team will be the need to scale. As more customers use your applications and services, the load on your infrastructure increases.
If you did not have a cloud strategy in place from day one, your teams will scramble as you attempt to scale your infrastructure up and out by deploying more of it in hybrid and public cloud deployments, rather than purchasing additional physical hardware. If you had the very lucky foresight to go cloud first, you’ll still struggle to balance the cost of additional hardware with the risk of service outages and frustrated customers, which will lead to loss of business.
In extreme cases, such as those presented by Netflix and Youtube during the Covid-19 outbreak, you may even intentionally slow down your business growth to avoid losing your business altogether.
Beyond cloud scaling, other measures can be taken to ensure your teams maintain the product quality and the customer satisfaction it promises. Most importantly, ensure that your development and operations teams have the best logging, monitoring, and debugging tools available to make sure they can quickly solve any problem that arises as your organization shifts to the cloud.
If your team has not already done so, this is also the time to shift-left your performance testing. Get ahead of the game and find and fix performance bottlenecks early on to make sure they don’t stop your teams from further scaling up the capacity of your applications.
As with your cloud infrastructure choices, tool selection in this domain should also take into account that continued growth will impact the cost and usage of the chosen testing and operations tools as well. Opt to go after SaaS based tools to ensure that your teams stay productive at scale.
The catch 22 of hiring for growth
As the challenges of cloud scaling and quality grow, the velocity of your development teams may suffer. As your business continues to grow, your software engineers may find themselves spending most of their time solving customer issues or adjusting the architecture of their applications to meet the new cloud needs, rather than developing new functionality that will let your business grow even further.
The natural solution to this problem might appear to be quite straightforward: hire more engineers. Not so fast, though. Hiring software engineers is expensive and time consuming. The culture you have worked so hard to entail in your teams will be much harder to maintain as the team grows and becomes global. You will find yourself investing in tools and methodologies that allow your growing teams to collaborate, and continue to write code efficiently in an ever-growing complexity.
Keep in mind that the engineers you hire will require additional training and onboarding time as they attempt to learn the existing code base and understand the expected behavior of the application. Your attempts at increasing velocity may get thwarted by the need to develop training materials, invest in documentation of your existing code base, and by code review sessions in which your experienced engineers help the newly hired engineers find their footing.
To mitigate these challenges, look for tools and methods that will let you increase velocity and maintain product quality without depending on additional hiring. If you haven’t adopted an Agile, DevOops, and Automation approach yet, this is the time to go there. Look for SaaS based CI/CD, source control management, and test automation tools. Such tools can be force multipliers that make your development team faster and stronger than the sum of its engineers.
Another approach to increasing velocity and quality without additional hiring is to select the correct development frameworks and cloud architectures. Look for software languages and frameworks that promise understandability across a growing, global team, as well as a good fit for cloud and auto-scaling architectures.
Without locking yourself to a specific cloud vendor, consider mixing the benefits of a microservices or serverless architecture with the ease and simplicity of commonly used IaaS and PaaS solutions.
Let your Data grow with you
Make sure the technologies you select can handle an ever-increasing demand for data. Give your engineers the tools they need to fetch data to support their own DevOps flows, as well as business data that will provide actionable insight to the product, sales, and marketing areas of your company. Choosing tools that allow easy collection, scalable storage, and smart analysis of the collected data could be the choice that will allow your company to maintain its hypergrowth state.
We hope this writeup gave you some insight into the challenges your software engineering organization may face as your company goes through a hyper growth cycle. Some hard choices need to be made, and we hope the guidelines we suggested will help you choose the correct path. If we missed any tools or technological considerations on this journey, be sure to drop us a line and let us know!
And sign up to Rookout (or something) 😉