Having an efficient DevOps toolchain is key to developer productivity, but it comes at a price. Read how to get the best ROI on your DevOps tax money.
Running an effective and highly optimized software development and delivery organization is a demanding job. As the level of automation increases, the DevOps toolchain becomes more extensive and the maintenance and support tasks get more complex along the way. Maintenance work creates a real burden on the development team and significantly reduces their delivery efficiency. This is called the “DevOps tax”, and it’s estimated to be about 10% of a team’s total work.
“Many dev teams see a “DevOps tax” on their team of approximately 10%, meaning 10% of their dev team is devoted to maintaining the DevOps toolchain" Forrester (2019)
Lean software development
As software developers we are often inspired by the lean concept of waste. We want to spend as much of our time as possible on value-adding activities. This makes a lot of sense because we want to provide end-users with the maximum bang for their buck. Wasteful activities like handoffs and rework are tasks we’d like to unconditionally minimize because they do not have any value at all. But, we also have enabling activities, or overhead, that we can’t necessarily reduce to zero.
We can say that there is a right amount of overhead. Although most developers would probably argue that the right amount of meetings is zero, I would propose that while it should not be a large chunk of the weekly schedule, it is definitely more than zero.
Mapping the value stream helps to visualize the flow of work through an organization, and can help us figure out where bottlenecks and issues can be optimized. And a robust DevOps toolchain can help eliminate bottlenecks and waste in the value stream.
Fast, automated test suites that run on every commit prevent us from passing on defects, and it shortens the feedback loop to the developer, thus enabling flow.
Integrated toolchains that can share information and metrics, create transparency, and reduce the overhead from those dreaded status meetings. This can increase developer productivity because there are fewer interruptions and context switches.
We can shift left on security, QA and compliance, integrating checks for licenses, code quality, and known vulnerabilities in our pipelines using tools like Sonatype and JFrog X-ray. This in turn empowers our developers to take charge of their products and deploy safely to production environments.
And, speaking of production environments, we can manage our infrastructure as code using Terraform and public cloud providers/Kubernetes. This finally gives development teams total end-to-end control, enabling them to maximize their impact on end-users and, ultimately, stakeholder value.
Spend your budget on whatever makes the customer choose you
The software industry is starved of talent. There are never enough qualified engineers and we spend a lot of effort growing, attracting, and retaining talent in our technology organizations.
This means that business performance is constrained by our ability to provide value to the end-users. Unfortunately, we end up spending an inordinate amount of energy on work that does not differentiate us from our competitors. This is commonly known as spending time on context rather than on core business, and it’s one of the key drivers of the migration towards cloud computing. Developing and upgrading infrastructure and networks is simply not part of core business differentiators, even if they have become commoditized over the last few years.
We can make the same argument for maintaining our DevOps toolchains with Jira instances, Jenkins masters, and Kubernetes clusters. Unfortunately, we see many “DevOps” or tools teams that are spread too thinly over a vast tool landscape. This leads to unmaintained and unoptimized toolchains. Most companies simply do not have the capacity to stay up-to-date on release notes, security vulnerabilities, and best practices. And over time these issues accumulate and become riskier and more expensive to fix.
The most annoying part is that we will always end up spending time on something that our end-users will never see or experience. The good news is we can outsource our toolchain to domain experts that care about DevOps tools in much the same way we outsource infrastructure to the public cloud providers such as AWS, Azure, or Google Cloud.
Examples of this are cloud-hosted Circle-CI or Github. Our own Eficode ROOT DevOps platform integrates all of your DevOps tools in one managed bundle, hosted either on-premises or in the cloud.
So, ask yourself, are you happy with where your DevOps tax money is being spent? Or could you get more bang for your buck by outsourcing your context?