The Three Ways

The Three Ways are a set of principles that all DevOps processes derive from.

The First Way: The principles of flow

The goal of the First Way is to improve the flow of work from development towards delivering value to the customer.

Flow can be increased by the following steps:

  • Make the work visible
  • Limit the amount of work in progress
  • Reduce the batch sizes
  • Reduce the amount of hand offs

Examples:

  • Feature toggles
    • By using feature toggles you can commit often and thus introduce smaller changes to the system. Once the feature is complete, the feature toggle can be enabled.

The Second Way: The principles of feedback

The Second Way is all about shortening the feedback loops. This allows employees to quickly discover any defects early in the chain.

To shorten the feedback loop we should:

  • See problems as they occur by running tests
  • Swarm and solve problems to contain these before they can spread
  • Push quality closer to the source

Examples:

  • Continuous Integration
    • By introducing CI systems we can continually evaluate the quality of our created code. These systems should be designed to give us a short feedback loop. If these builds fail, the feedback should reach the responsible teams and effort should be taken to swarm the problem to reduce it from spreading further.

The Third Way: The principles of continual learning and experimentation

The Third Way mentions the creation of a culture of continual learning and experimentation. Individual knowledge needs to be turned into team and organizational knowledge. Constantly reiterate the current processes and look for improvements.

We can do this by:

  • Making time to clean up technical debt
  • Share individual or team learning across the organization
  • Keep seeking to reduce lead times
  • Introduce controlled failures in systems to make them more resilient
  • Never stop learning

Examples:

  • Blameless postmortems
    • Failures will always happen. Instead of fearing them, we should embrace them and learn from them. In the event of a failure, a blameless postmortem can be written. The goal of these is to spread knowledge and think about possible solutions to prevents these from happening in the future.

Breaking down barriers

Another key principle of DevOps is to increase the collaboration between the different teams. When teams are working in isolated silo’s they are often dependent on other teams. This means that a lot of the time work will simply be stuck in a queue which increases the lead time dramatically. One of the goals of DevOps is to break down these barriers which improves collaboration.

Conway’s Law

Conway’s Law mentions that the architecture of your software reflects the communication and collaboration steams in your organization. If your teams work in silo’s on their own isolated island, the software architecture will reflect that. This leads to all sorts of misalignments and causes frustration and inefficiency. Instead, teams should be build around the needs of the business.