Slightly Better DevOps Through Value Stream Mapping

You can’t improve a process without visibility. Value stream mapping, originally a Lean-management method, is a powerful way to get visibility on an IT organisation’s pipeline for delivering value to customers (measured by working software in production), and an excellent starting point for making the process of delivering value more efficient, and less painful.

It’s an exercise that you can do at any time, but is particularly effective when an organisation wants to get faster at delivering value to customers.

How to do it:

  • Get representatives of all the roles involved in delivering value to customers in one room… ideally, they are also people with the power to change and improve their part of the process.
  • Map out each step, from idea to ‘code running in production’.
  • For each step, capture the average lead time, as well as the average % of time the step is successfully completed, and does not need to be redone. You may also wish to call out idle time spent waiting on a dependency vs. time spent actually completing the task.
  • For each step, capture stakeholders, dependencies, and handoffs.
Source: https://www.ibm.com/devops/method/content/think/practice_value_stream_mapping/

Identify and explore parts of the process with long lead times, a low % successful, or many steps and dependencies clustered around a particular stage. If you use Post-It notes or something similar, they will tend to swarm around the parts of the process that are the most difficult.

Some questions to ask about the painful parts:

  • Is this step really necessary, or just a rubber-stamp?
  • If it is necessary, how could we reduce lead times?
  • How can we ensure it is successfully completed every time?
  • How might we automate this step?

The most useful thing about value stream mapping is that it breaks down a potentially complex process into small, discrete parts. A long and complex path to production might seem overwhelming to fix, but value stream mapping provides a starting point for small, targeted improvements with the potential to add up over time.

A simpler version: if you can’t get everyone in a room, start with one developer who has a good understanding of the value stream.