Concept: DevOps Principles

Guiding Principles

The guiding principles for DevOps are:

The above principles guide how to think about DevOps.  The following are principles for how to do this (Implementation Principles).

Implementation Principles

These principles propose key actions you can take, or goals you can set, as part of a DevOps adoption initiative.  These principles apply lean thinking to the DevOps guiding principles.

Deliver and validate small increments

Delivering and validating small increments of business value results in shorter feedback loops that in turn provide an early return on investment and timely feedback to steer further investment.

Anti-pattern: Delivering large chunks of capability without prior validation (waterfall-like development).

Related measures: Median size of feature/capability delivered (can be effort or "points"), Cycle time.

Related guiding principles:   - because small increments reduce time to feedback

Optimize the flow of work

Optimize the flow of work-in-progress to avoid waste.  In turn, deliver value quicker and at lower cost.  Lean workflows require the collaboration described in The whole system shapes the goals and align with Agile methods and automation accelerate innovation - described in terms of queues where work is waiting to be handled, and processes where work is pulled from those queues. Optimize by removing bottlenecks where work is waiting in queues, and by streamlining process steps.

For example:

  • reduce the number of process steps by moving from a predominantly waterfall to an agile development model.

  • manage work in progress to avoid wasted time switching context

  • limit the size of queues to minimize waiting times

  • automate test and deployment

  • balance resources (such as coders vs. testers)

Anti-pattern: Using process measures that hide waste, or worse, credit waste as "earned value".

Related measures: : Throughput, productivity, in-process times, wait times.

Steer to optimize economic value

A business capability is delivered through many small batches. These batches may be delivered by many teams, involving updates to multiple applications across several releases. While work is in progress, priorities can change, and effort redirected to maximize value to the business.  Delays in delivery or changes in requirements, priority, or delivery schedule puts further stress on the system. To maximize the business value delivered, we need to effectively steer the the complex relationship between a business capability and the batches delivering that capability. As a general principle, we seek to sequence high risk, low cost batches first, adding the most value at the lowest cost, while mitigating key risks early on.

To do effective steering, consider introducing a measurement framework, so that you have the information required to make changes, and to determine if the changes have the desired effect. A key guiding principle is Feedback loops reduce time to feedback - because effective steering requires continuous feedback.

Anti-pattern: Drive blindly to program targets.

Related measures: Change reaction time

Related guiding principles: 

Localize decision making

Programs are most efficient when individuals and teams are able to make decisions within the scope of their responsibilities.  Overall governance should be limited to steering the program so that overall business goals and objectives are achieved, while tactical decisions and dependencies are handled by those closest to the work.  This principle relates to "Optimize the flow of work-in-progress", in that localized decision-making avoids bottlenecks and process steps.  It relates to steering to optimize economic value in that it emphasizes that the role of program management is to steer at a high level, and not direct every step.

These guiding principles are also related.  A culture of collaborative learning is crucial - because teams need to be empowered to do collaborative learning.  The whole system shapes the goals - because localized decision making enables collaboration while avoiding bottlenecks.

Anti-pattern: Program plans that direct low level tasks performed by individuals.

Related measures: All of the previous mentioned measures.