In the technology value stream, work typically flows from Development to Operations, steps consisting of functional areas between our business and our customers.
As stated in the lean principles developed by Toyota, we should optimize to get a single-piece fast and smooth flow for our releases.
We increase flow by:
- Making work visible,
- Reducing batch sizes and intervals of work
- Building in the quality, preventing defects from being passed to downstream work centers.
Why a fast flow is needed?
By speeding up the flow through the technology value stream, we reduce the lead time required to fulfill internal and external customer requests, further increasing the quality of the work while making us more agile.
Our goal is to decrease the amount of time required to deploy the changes into production and increase the reliability of those services.
Make our work visible
A significant difference between manufacturing and technology value streams is that our work is invisible.
It’s so easy for work to keep bouncing off between teams and yet have no visual control over it.
To prevent this and make out work more visible, we can use something like a Kanban board. (I prefer Trello for this).
Ideally, our Kanban board will span the entire value stream, defining work as completed only when it reaches the right side of the board.
Work is not done when development completes, but only when our application is running successfully in production.
Limit Work In Progress (WIP)
In technology, our work is far more dynamic than manufacturing. Teams have to satisfy demands of multiple stakeholders. As a result daily work gets dominated by urgent requests for work coming through every communication channel possible.
We can limit multi-tasking by using Kanban board, such as by codifying and enforcing WIP limits for each column on the board.
For example, we may set a WIP limit of three cards of testing. When there are already three cards in the testing column, no new cards can be added.
Using Kanban ensures that work is visible and WIP doesn’t get piled up.
Reduce Batch Sizes
Another key component to creating smooth and fast-flow is performing work in small batch sizes. Prior to the lean manufacturing revolution, it was common practice to manufacture work in large batches.
However, large batch sizes result in skyrocketing levels of WIP. According to lean principles, the ideal is a single piece flow, where each batch size is of just one.
Let’s take an example:
Suppose we have ten brochures to mail and mailing each one of them requires 4 steps:
- fold the paper
- insert the paper into the envelope
- seal the envelope
- stamp the envelope
Now in the traditional batch processing flow, we will perform each step sequentially for all ten envelopes.
In the lean one-piece flow, only one envelope can be at any given step. In other words, we fold the paper, insert it into the envelope, seal the envelope and stamp it before starting the next one.
How is one-piece flow dramatically better?
In the above example, suppose each step takes 10 seconds. In batch processing, we get our first complete envelope after 310 seconds, but with the one-piece flow we get it just after 40 seconds.
Worst, what if we find that the way we have folded the paper, doesn’t allow the envelope to be sealed. In which case we’ll be in a bigger trouble?
Eliminating hardships and wastes in the value stream
According to the Toyota Production System pioneer Shiego Shingo, a waste is:
The use of any material or resource beyond what the customer required or is willing to pay for
In software development value stream, a waste is anything that causes a delay for the customer, such as activities that can be bypassed without affecting the result.
The following are some common categories of waste that we encounter when implementing lean in software value stream.
- Partially done work
- Extra processes
- Extra features
- Task switching
- Waiting on QA or testing or acceptance testing
- Defects and bugs
- Non-standard or manual work
Explaining each of the above point deserves a post of its own. Will do that soon.
Improving flow through the technology value stream is essential to achieving DevOps outcomes. We do this by making work visible, limiting WIP, reducing batch sizes and eliminating wastes from our processes.
All of this will allow us to become more agile and will help in reducing lead times dramatically, and at the same time increasing the quality of releases.
That’s all, folks!