Lean Software Development Using Kanbanoriginally written by Charan Atreya
Our summary and key takeaways
There was a time, when project managers generally applied traditional, linear process approach to software development, as if building software was a linear process. Well, it isn't. Going one way doesn't mean it's impossible to change direction at almost any later stage. This is why Agile development methods were started for software production processes.
Among the Agile methodologies there are Rational Unified Process, eXtreme Programming, Scrum and Kanban. The author of this article places particular significance on Kanban, as this is the method that resulted with an 80% reduction of delivery times in his software development team.
The pull method
Kanban works on perfecting the resource assignment, managing how much can be produced and when. It originated at industrial production, but has been successfully adapted to knowledge based work in the early 2000's. It bases on a pull method - as team members become available, they pick up new tasks themselves, so items aren't pushed into their laps to create chaos and added pressure.
Why is this the best way to go?
The best way to improve the process may well be through an evolutionary change, one that allows for making small adjustments as often as necessary, as well as taking big changing steps. With Kanban, evolving the change and the process alongside each other is perfectly possible.
How does it work?
There are three principles to Kanban:
- Visualization of the workflow - Kanban divides the process visually into stages - columns, through which the tasks are being progressed. Thanks to this, you are always able to see where exactly which task is in the process
- Limitation of work in progress - this puts a definite stop to any multi-tasking, as it only generates waste and decrease of quality. By enforcing a WIP limit at each stage of the process, you'll ensure better focus, higher quality and less waste caused by context switching
- Cultivating a "don't start a new task when the old isn't yet finished" approach - Charan takes this as far as getting people from across the team to help in completion of an item, so that the client gets it, before they begin work on a new piece. This is what he means by completing work before moving on.
The greatest of Kanban's properties is the fact, that it does not require from you to change the way you work in general. All it needs from you to work is limiting how much you do at once and visualizing it, so that everyone gains a better awareness of what's going on.