One of the most exciting challenges young companies face is the prospect of scaling up. Successful growth is not just about gaining traction, but about implementing a smart business model that allows you to expand your customer base without increasing overhead at the same rate. Ideally, a scalable strategy will enable exponential revenue growth alongside more incremental cost increases.
When your business has the opportunity to scale, you must evaluate your existing development tools and services. If you’ve integrated DevOps and agile practices, you’re already aware of the invaluable benefits of continuous build, deploy, and delivery. However, just because you’ve added DevOps methods doesn’t mean you’re truly optimizing the software lifecycle to eliminate black holes and inefficiencies — it doesn’t mean you’ve become a well-oiled IT machine.
Having well-planned toolchains is the key to maximizing the potential gains from DevOps. Without defining the entire lifecycle of activities and tools that support the innovation process, you risk missing out on the all of the benefits of your DevOps initiative. You need to maximize automation to fill in the gaps for critical processes and streamline handoffs, because these are the areas that are most vulnerable to inefficiency. Think about it this way: what would happen to a football team if players had to ask the coach what to do after the ball was snapped for every play?
Perfecting your toolchain begins with assessing the current situation and planning carefully. Can you identify specific factors that would prevent you from growing effectively? How might your approach change from managing 100 customers to managing 1000 customers? You might pinpoint some obvious inefficiencies, such as unmanaged complexity, legacy features or processes that are no longer required, an excessive diversity of tools or handoffs, manual testing, post deployment tasks, or lack of coordinated teamwork and collaboration. However, be aware of issues that aren’t yet impacting you at your current size, but will present huge obstacles when you attempt to scale. For instance, do you have the ability to rapidly create development environments and track, audit, and log critical actions and processes in production? How will you verify that your team members are communicating efficiently or how much time is spent in specific activities? Addressing problems early on, before moving forward with scaling, is critical. Otherwise you risk allowing rudimentary inefficiencies to slow you down and increase your costs.
It’s important to understand that there is no one-size-fits-all solution: different organizations will face different challenges — as will different teams within each organization — whether they’re cultural, technological, or financial. The key is to focus on changes that will address specific problems within your organization, and in particular, within each individual team. If you can tackle the individual components of the toolchain — e.g., planning, development, pre-production, release and monitoring — you can focus on improvements and adding value to each. Don’t be afraid to experiment and explore when it comes to making changes. Data and metrics can guide you in testing new methods more intelligently, and help you avoid repeating past mistakes. If you’re measuring it, you’re not just mucking around. There is something very satisfying about watching a graph move in the direction you predicted, and something to be learned if it moves the other way.
At xMatters, I experienced first hand the specific problems and changes we needed to add value and create meaningful change. When I first joined the team, the organizational structure of the company was quite traditional; operations was completely isolated from engineering, located in a different country. We made scheduled quarterly releases, as there was no continuous delivery pipeline. It took a few key people, a mix of new and old employees, to realize that there were too many points of frustration in the existing way of doing things, and that there was a better approach.
So we knocked down the organizational walls that were holding us back from being lean, agile innovators. We quite literally put a bunch of people into a single office and incorporated the “same team” idea; we embedding developers into the operations team, and operation engineers into the software developer teams. Almost immediately we were able to identify some very clear opportunities to incorporate automation, and even eliminated some existing automation because it actually proved too difficult and complex to be efficient. The result is that we’re now able to drive rapid, impactful technology changes using better quality code, fix bugs faster, and create new features more rapidly. We’ve transitioned from massive quarterly releases to smaller updates on as short as a weekly basis.
How will you know where to start? It’s simple: ask yourself which areas are causing you the most pain, and where you can impact change to add the most value. Zero in on the things that aren’t working, and prioritize these in a way that minimizes slow and tedious processes. For instance, a tedious task you perform every day, multiple times a day, is more important to address than one you perform three or four times per year. Figure out ways to optimize that pipeline and the ways to measure its efficacy. Think about what will make the greatest impact on streamlining activities, and start there. Getting started and just making a change is important in order to avoid analysis paralysis. By discovering what doesn’t work for you, you can often find out what does. Part of this involves ensuring your automation tools are truly DevOps friendly and easy to use. Eliminate any tools that are heavy or slowing you down. You need to iterate rapidly to see results and discover what doesn’t fit in any more and not be afraid to get rid of it.
Remember that the benefits conferred by DevOps extend beyond speed and efficiency: they impact the health and morale of your teams. Imagine if you could help people feel more effective in their work and more validated in their decision making. This kind of confidence inspires better collaboration and communication, which are essential to becoming a well-oiled machine.