From the course: DevOps Foundations

DevOps guiding principles: The Three Ways

From the course: DevOps Foundations

DevOps guiding principles: The Three Ways

- Let's talk about strategic principles you can use to take the core DevOps values and bring them to life. The most respected set of principles is called the Three Ways of DevOps. They were developed by Gene Kim, author of the "Phoenix Project" and "The DevOps Handbook", and Mike Orzen, author of "Lean IT." The three ways are systems thinking and the principles of flow, amplifying feedback loops, and a culture of continuous experimentation and learning. The first way systems thinking and the principles of flow tells us that we should make sure and focus on the overall outcome of the entire system. It's easy to make the mistake of optimizing one part of the value chain at the expense of overall results. For example, when you're trying to optimize performance in an application, increasing performance or system resources in one area causes the bottleneck to move sometimes to unexpected places. Adding more application servers for a good example can overwhelm a database server with connections and bring it down. You have to understand the whole system to optimize it well. This same principle applies to IT organizations. A deployment team might establish processes to make their own work go smoothly and their productivity numbers look good, but those same changes can compromise the development process and reduce the organization's overall ability to deliver solutions. If you ride all the software in the world, but you can't deliver it to a customer in a way that they can use it, you lose. Handoffs and friction between parts of the organization that participate in delivering something is often where the flow from concept to cash goes wrong. Use systems thinking as guidance when defining success metrics and evaluating the outcome of changes. And remember that overall flow from beginning to end is how you actually produce value. The second way, amplifying feedback loops is all about creating, shortening, and amplifying feedback loops between the parts of the organization that are in the flow of the value chain. A feedback loop is just a process that takes its own output into consideration when deciding what to do next. The term originally comes from engineering control systems. Short, effective feedback loops are the key to productive product development, software development and operations. Take the story of a simple code bug. If that bug is found by the developer before they check it into source control because unit tests on their desktop caught it, you've eliminated a problem with very little time wasted. But if that bug slips by and is found by a QA team and is documented in a ticketing system and then pushed back to a developer to fix, it's still resolved, but with more time wasted. If it gets all the way into a customer release and is encountered by end users logged with a support organization, churn over in support, escalated back to development reprioritized by a product manager and then fixed, it wastes even more time and money for a same or worse outcome. Effective and fast feedback yields a better and more efficient system. Use amplifying feedback loops to help you when you're creating multi-team processes, visualizing metrics and designing delivery flows. The third way. A culture of continuous experimentation and learning reminds us to create a work culture that allows for both continuous experimentation and learning. You and your team should be open to learning new things, and the best route to that is actively trying them out to see what works and what doesn't work, and adjusting and iterating. Instead of falling into analysis paralysis. It also means engaging in the continuous practice required to master the skills and tools that are already part of your portfolio. You master your skills by the repetition of practice and you find new skills by picking them up and actually trying them. You may have heard technologists say things like working code wins. If it hurts, do it more often and fail fast. These all speak to this kind of culture which learns by retaining a practical focus on doing instead of just talking about doing. Use a culture of continuous experimentation and learning when creating team processes and standards and as part of your leadership style, encourage sharing and trying new ideas. The three ways provide a practical framework to take the core DevOps values of cams and effectively implement specific processes and tools in alignment with them. As you move forward in your DevOps implementation. Always keep thinking about the whole system, asking yourself how you can build in more feedback loops and seeing how you can create an environment that facilitates experimentation and learning.

Contents