Sergey Nivens - Fotolia
There are few names in DevOps as big as Gary Gruver. He's an experienced software executive with a knack for implementing continuous release and deployment pipelines in large organizations. In fact, he literally wrote the book on the subject. His latest, Starting and Scaling DevOps in the Enterprise, is an insightful and easy-to-read guide that breaks down DevOps principles by putting them all in a context enterprises can use to gain alignment on their journey to continuous delivery.
Gruver sat down with DevOps Agenda to explain enterprise inefficiencies and the value of a quick and effective DevOps feedback loop.
The basic definition of DevOps is the answer to a question: How do you release code on a more frequent basis while enabling all aspects of quality?
It should be a straightforward, easy process, and everybody would be doing it if there weren't waste and inefficiencies in the system.
One thing I like about DevOps is that, when you increase release frequency, it forces you to fix inefficiencies that have existed in your organization for years. It forces you to understand and address the root causes of the problems. Whatever is blocking frequent releases, DevOps provides processes and tools to address those once and for all, making your organization more efficient.
The key to improving the efficiency of software development is understanding that there are three types of work that have different opportunities for improvement.
Quick and effective DevOps feedback loop
The first type of work regards the new and unique features devs are writing. This is the value they're trying to add. The key to improving the efficiency of this work is feedback. Every developer thinks they've done a good job until they get feedback.
To improve efficiency, you need to ensure developers don't waste time working on code that won't integrate with other code or in the production environment. You also need to ensure developers don't waste time working on code that doesn't meet the business needs.
To accomplish this, you need to increase the quality and frequency of feedback. That feedback could be to ensure the code integrates with others' code. That feedback could be functional testing, regression testing or security testing. The key is for a DevOps feedback loop to deliver feedback quickly.
The smaller the batch, the easier to triage
The second type of work that happens in large organizations is triage. In large, tightly coupled systems, teams can spend almost more time and effort setting up, debugging and triaging these big integrated test environments than actually creating the new capabilities. The challenge is to eliminate the waste and inefficiency in that triage.
DevOps addresses this challenge by creating smaller batch sizes with fewer changes to triage.
Why less testing might be better testing
Expert Matt Heusser returned from CAST (Conference for the Association of Software Testing) with five key takeaways. Organizations should engineer failure in their process. If you're having trouble scaling, it's better to be down than slow. To ship more software, give testers more autonomy. Everyone should know security testing. And culture change might just add up to less overall risk.
Automate out human error
The last type of work is all the repetitive software tasks: your build, your deploy and your test processes. There are inefficiencies inherent here simply because doing something manually that can be automated is a waste of time and energy.
Additionally, when you do it manually, you can't do it more frequently; you can't go to the smaller batch sizes to improve triage; and you'll get inconsistencies through human errors. For these repetitive tasks, you can use manufacturing models, and you can look to automate, fine-tune and optimize over time.