Combat waste with a DevOps feedback loop, triage and automation

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.

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.