'Orange Light Sparks' by Todd Quackenbush on Unsplash

Today we will examine the key principles of DevOps. This will be a primer to introduce you to the field or remind you of the basics.

DevOps will help you optimize the delivery of technology services and improve the services themselves.

Fundamentally, DevOps is the application of continuous learning and improvement to delivery of technology services. You may already be familiar with these ideas come from the Lean, Agile, and Systems Thinking communities. We observe the systems we build and operate as well as the processes that create, deliver, and operate them. Then we improve those systems and processes to achieve our organization’s targets for responsiveness to customers, safety, cost, and more.

The principles and practices of DevOps are primarily about learning and process improvement.  Tools are means to these ends.

I’m sure many of you were DevOps’ing before we had a name for it. If you are continuously improving the delivery and operation of your software using feedback from customers and internal teams, then welcome to the club.

The Three Ways

Gene Kim provides one of the best models for thinking about DevOps, with The Three Ways of DevOps:

  1. Systems Thinking
  2. Amplify Feedback Loops
  3. Continuous Experimentation

Let’s quickly discuss each of point of this model in its recommended order of adoption.

The Three Ways of DevOps

In Systems Thinking, we account for all of the tasks and dependencies required to deliver a change — from concept to customer. We work to make that process repeatable and safe. Then we optimize the process to increase the flow of changes to customers and reduce the lead time for delivering a change. This is depicted by the left-to-right arc at the bottom of the ‘Three Ways’ figure. We develop robust delivery pipelines first in order gain the ability to change the system from whatever state it is in to something better with #NoDrama (or at least less drama).

Once the ability to deliver changes safely and quickly is in place, the priority is to Amplify Feedback Loops. We create strong signals from our system’s users and feed those signals back into our (product) management decisions. This feedback helps us satisfy our customers by testing product ideas and quickly converging to good implementations of product features.

With the final Way, we create a culture of Continuous Experimentation in our delivery organization. We experiment with new (or even old!) ideas that may improving the processes and tools we use to deliver services to customers. If they succeed, then we adopt them, otherwise discard and move on. This experimentation helps converge or keep our delivery processes to best-in-industry performance.

Summary

DevOps is about learning how our technology systems, delivery processes, and organizations work and then improving them continuously. We will use tools to help us do that, but the principles will be the same no matter where you go. Gene Kim’s ‘Three Ways’ model is one really good way you can think about how to introduce DevOps into your own delivery ecosystem.

Over time, adopting the DevOps principles will help you:

  • Reduce lead time to value
  • Deliver changes correctly and accurately
  • Reduce time to detect and repair problems
  • Improve employee quality of life and retention
  • Enable architectural change

In the next post, I’ll share some data to back those claims up.

#NoDrama