Guiding Principles
The guiding principles for DevOps are:
-
-
-
-
The whole system shapes the
goals
The focus is on collaborative performance on the system as a whole. Business teams engage early and often
with customers. Development, test, and deployment teams collaborate to shared goals.
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.
|