Improve your Software Development Process with Value Stream Mapping.

1_aRp3pkc4xN8SWqklVHTDgg.png

Value Stream Mapping session (source)

Creating value for the customer is essential in any business. You want to be sure that you are maximizing the value you create for them through your development process. The DevOps methodologies aim to build a fast and reliable software delivery process. When adopting this paradigm, you must reassess your existing process and look for inefficiencies.

One way to do this is by using Value Stream Mapping (VSM). This involves gathering people from all parts of the product development process, including the business line, design, testing, QA, operations, and support. Doing so can give you a clear picture of where value is being created and lost.

Value Stream Mapping is centred around a colour-codded map that describes your process and measures its efficiency as the ratio of value-added steps over all the steps of the process.

What is value stream mapping, and why is it important?

Value stream mapping is a useful tool for understanding how value is created and lost (wasted) in a product development process. This method was invented in the context of industrial engineering to make production lines more efficient and Lean.

By gathering people from all parts of the value stream, you can get a clear picture of which step in the process contributes to creating values and which are potential waste. Collecting this information can help you optimize the development process and provide a visual way to explain the process and why a step of the process exists in the first place.

In the context of Lean Manufacturing, Value Stream Mapping is an improvement Kata. An improvement Kata is an iterative process conducted by small and rapid experiments to improve an organisation’s process. The Value Stream Mapping methodologies are built around the four steps of the Improvement Kata:

  • Discovery — Identify areas where you can improve the efficiency of your process.
  • Understanding — Understand where value is being created and lost in your product.
  • Experiments — Select and design small experiments to iteratively improve the processes.
  • Change — Make better decisions about how to optimize the development process.

1_xeICyaxKFWGokYaSSIQoDg.png

Improvement Kata (source)

How to create a Value Stream Map

Creating a value stream map is fairly simple. You first need to gather people from all parts of the product development value stream, including the business line, design, testing, QA, operations, and support. This step is called mapping the process.

It is important to decide on the boundaries of the value stream map. The value stream map should not aim to map all a company’s processes. In the case of software engineering, this decision is fairly simple you often build a map from feature ideation to release to production.

After you have decided on the boundaries of the value stream map, you will need to start documenting everything that happens in the value stream. This includes conducting interviews or workshops where you invite people to complete the map with the steps of the process they know of. This should lead to a map like the one below.

1_v0tvkZSBf2Ny98Dh-TkGqQ.png

Value Stream Mapping Diagram (source)

The final step is to use the information gathered and distinguish the different types of steps in the process. You distinguish the valued step from the rest at that step. With this information at hand, you can create measures of the processes that will serve as references.

Value added task: product or service which the customer is willing to pay for it or is compliance/regulatory time

What you can learn from value stream mapping

The value stream map can also help you track the progress of your improvement efforts by providing a visual representation of the changes made to the process. Additionally, the value map will be used to calculate different metrics and compare the result of your experiments. Concretely on top of the logic and obvious waste, you will use a key performance indicator (KPI) to analyse each step in more detail:

  • Lead time (LT): The time it usually takes to complete the task. If you are using a Kanban, this is the same thing as measuring the time it takes from in progress to do.
  • Process time (PT): This is the active time spent on the task. Many tasks require you to collect information or wait for other things to happen. Concretely we approximate by considering the percentage of time a person spends on that task alone.
  • Percent complete and accurate (%C/A): the proportion of times that a process receives something from an upstream process that it can use without requiring rework.

You should not be afraid of making changes. Once you have the map and identify waste, you should collect metrics such as How much time it takes to get from step D to step G. Implement the change that you think will improve the situation and measure the result of the improvement.

Did the change you made reduce the time it takes to go from step D to step G? If not, then move on and design a new solution based on the lessons you learned.

Thought about VSM in the Software Industry

Value Stream Mapping is popular in the Lean manufacturing communities. The idea is that you can use value stream maps to visualize and improve the flow of value without being transposable to the software industry. In a way, the software delivery pipeline is much simpler than what you could find in the manufacturing world. Asa result, implementing VSM should be straightforward.

By creating a value stream map and tracking the changes made to the process, you can see how your improvements are impacting the flow of value through the system. This can help explain the change when they are made simply and visually.

The definition of a value-added task is quite difficult in the context of software engineering. We should think about it to see if we can reduce the number of steps in the process but not spend too much time on it.

The Percent complete and accurate (%C/A) metric is a powerful metric to drive improvement. However, the goal is not to reach 100%, this would kill any kind of iterative process.

References

Bonus

You can render this diagram using PlantUML online here → https://www.planttext.com/

                @startuml

actor User as u
node "Design & Analysis" as da
node "Planning" as plan
node "Development" as dev
node "Deployment to test environment" as test
node "Demo and UAT" as demo
node "Performance testing" as perf
node "Deployment to production" as prod

u --> da 
da --> plan 
plan -> dev 
dev -> test 
test -> demo 
demo -> perf 
perf -up-> prod

note "LT: 10d\nPT: 6d\n%C/A: 50%" as n0
n0 .-right- da

note "LT: 2w\nPT: 1d\n%C/A: 50%" as n1
n1 .-up- plan

note "LT: 1d\nPT: 1d\n%C/A: 50%" as n2
n2 .-up- dev

note "LT: 1d\nPT: 1d\n%C/A: 50%" as n3
n3 .-up- test


note "LT: 2d\nPT: 3d\n%C/A: 90%" as n4
n4 .-up- demo

note "LT: 1d\nPT: 1d\n%C/A: 90%" as n5
n5 .-up- perf

note "LT: 1d\nPT: 1h\n%C/A: 90%" as n6
n6 .-> prod


@enduml
            

Only registered users can post comments. Please, login or signup.

Start blogging about your favorite technologies and get more readers

Join other developers and claim your FAUN account now!

Avatar

Alexandre Couëdelo

@acouedelo
Complex Systems Engineering and Management Specialist. I embrace the DevOps culture since I started my career.
Stats
26

Influence

2k

Total Hits

3

Posts