Recent research conducted by Google Cloud’s DevOps Research and Assessment (DORA) team found that companies with the most sophisticated software delivery practices deploy code 200 times more frequently than low performers with a seven times lower change failure rate. These elite performers are also twice as likely to meet or exceed their goals for organizational performance, seeing potential returns between $16.7 million and $80.6 million when they invest in DevOps.
At first glance, this data appears paradoxical. How can faster, more frequent delivery correlate with better quality? The secret is in the tooling, incentives, processes, and cultural backing the organization gives its developers.
Speed matters. Organizational agility is the most important business dynamic of this decade and the ability to digest information quickly and act may be the only source of competitive advantage left. Customers are less patient than ever; if you can’t deliver as fast as the next guy, they’ll go elsewhere.
Yet it’s surprising how many companies persist in archaic software development practices rooted in waterfall methodologies and “throw it over the wall” thinking. Take the age-old practice of rewarding developers based on the number of lines of code they produce. That’s backward. They should be incented to remove lines of code instead.
Then there’s penny-wise, pound-foolish thinking. Organizations that fuss over the cost of laptops overlook the fact that a 10% increase in a developer’s productivity more than pays for all the infrastructure investments they’ll make to support that person over the next five years.
Perhaps the biggest productivity killer is waiting times. No matter how agile your development organization is, the need to open a ticket to configure a virtual machine brings progress to a screeching halt. Agility only works when the entire process is agile.
Here are five things you can do to improve not only the velocity of your development teams but also the quality of their work.
- Automate everything possible. Find every bottleneck that stands in the way of getting code into the customer’s hands and either remove it or automate it. Be sure you have good project management gates and tests in place. If you can’t build reliably, you can’t deliver reliably.
- Capture and share knowledge. Don’t start from scratch with every new project. Tools like the open source Backstage software catalog and developer platform enable teams to work on multiple projects simultaneously without getting in each other’s way. It and many other commercial platforms empower you to build tribal knowledge that continually enhances speed.
- Limit choice. There are so many tools out there that developers can easily become paralyzed trying to pick just the right one. Forget about best-of-breed everything, and give them a curated set of runtimes and continuous integration/continuous delivery platforms that get the job done. Any trade-offs you have to make in features will be more than offset by the benefits of consistency.
- Ship as often as possible. Holding out for big mega-releases every six months is an invitation to disaster. Shipping more often improves your failure rate by limiting the size of the change surface. It’s easier to pinpoint a problem when two changes are introduced than 200.
- Think holistically about performance metrics and incentives. Building applications quickly is a team sport. Everyone should be responsible for the holistic performance of the entire application and should be rewarded accordingly.
IT has not traditionally been optimized for speed. Safety is important, but so is shipping once a month. Put the right support structures, test suites, and guardrails in place, and then let your developers go. Agile development teams correlate with agile businesses that accelerate growth.