Lean Software Development Principles – Part 2
In part two of our series, we expand on the principles outlined in part one and explore the value-stream map concept, process, and tools in lean software development.
The foundations of Lean:
Lean management focuses mostly on the elimination of waste and optimizing the software development process as a whole. There are many tools and techniques that can be used to reach that goal. The ultimate starting point for optimizing all the process elements is the preparation of the value-stream map.
It is in the value-stream map that each process element added to the final product is identified with its cost and value.
The value-stream map concept in lean software development:
A value-stream map is a visualized form of the software creation flow. It includes the representations of all resources used in product development as well as the time needed to accomplish each flow step. For example, the time needed to develop the code, approve and deploy the change, as well as the testing effort. It also distinguishes the inactive time of the process where knowledge handoffs are being done or the change is waiting for the approval as well as the bottlenecks in testing when detected defects bounce back to the testing phase again. Those flow elements can be considered as a waste and should be analyzed and eliminated or reduced as much as possible.
Value-stream map visualization
Identifying waste and inefficient process elements
A value-stream map shows how the value flows through the whole process and helps make improvements that will lead to the quick delivery of a better product. Grey squares represent the process elements like the development or testing phases. Arrows represent the transitions between phases. The timeline in the bottom shows the active and inactive periods of time in the flow. The essential thing about the value-stream map is the recognition of the value-added and non-value added periods. As you can see in the example above each square representing a flow part is related to ‘added value’ as well as the cost which can be measured in the effort needed to accomplish it.
The timeline shows that there are lags between phases that bring absolutely no added value. All of this leads to the calculation of the effective value-added time. Elimination of ineffective process elements that are considered waste can greatly increase the value-added time. This results in lower cost and faster delivery as well as more frequent feedback from the customer.
The software development process, due to its nature, can be highly unpredictable. For example, bouncing defects from the test phase back to the development process can seriously affect the developers’ work. That’s why it’s important not to only visualize each step of the process but also the work of team members. There are widely used tools like JIRA or Kanban which help manage and optimize the workflow as well as give information on the effort for each process step which is needed to visualize the value-stream map.
Benefits of using process management tools:
- They give insight into how much effort was spent on each process step e.g. analysis, development or testing phase
- What the team capacity is and how many story points the team is able to deliver
- What the bottlenecks are in the delivery process
All these observations can be measured and applied in the value-stream map. Also, any related waste can be either completely eliminated or at least reduced.
Applying lean software development
Lean management can be applied in any business process. In software development, it leads to an optimized and controlled software creation flow which continuously evolves in time while the development team goes further into the project development. To fully understand that we will show how to apply lean principles on an example project in part 3.