Kanban is adapted to software development as a project management approach. Kanban in software development supports a continuous workflow, termed as Value Stream.
The Value Stream consists of all actions required to bring a project from creation to completion.
The actions can −
Anything that does not add any value to the project is known as Waste. Kanban facilitates elimination of waste.
In software development, there are three types of waste −
Waste in code development is due to the following reasons −
Partially completed work − The partially completed work can become outdated and unusable. It can be eliminated with iterative cycles and with modular code that completes within the iteration.
Defects − In developing a code, correction and retesting requires time and resources. It can be eliminated with up-to-date test suite, completing testing within the iteration and continuous customer feedback.
Waste in project management is due to the following reasons −
Extra Processes − Unnecessary documentation that requires time and resources. It can be eliminated with −
Pre-planning of what processes are relevant and necessary.
Documentation review, that ensures relevant and necessary processes are followed.
Code Handoffs − means passing the work from one person or team to another, after the first person’s work is complete. It may give rise to lack of knowledge. It can be eliminated by keeping the flowcharts and wireframes visible and clear.
Extra Functions − These are features that are not required by the customer. Effort and time are wasted in developing the functions required to implement the features that the customer does not want. It can be eliminated with continuous interaction with customer and testers involving in the requirements gathering as they can better visualize the scenarios and expected behavior of the system.
Waste in team potential is due to the following reasons −
Task Switching − It leads to the danger of multi-tasking, which is a waste. It can be eliminated with focus on a task with every release. Large process steps are segmented into tasks to −
Improve visibility
Reduce dependencies
Enable easy flow of work
Focus on the cycle-time of delivered work
Give a way to detect and resolve bottlenecks
Waiting − Time for getting instructions or information – Team is subjected to sit idle if the decisions are not made by the team, or if the information provided to the team (developers, testers, etc.) are expensive resources. It can be eliminated by allowing the team members (developers, testers, etc.) to −
Take decisions so that they do not have to wait for instructions
Have access to information so that it can be used as and when required