In Part One of this article, we introduced the idea of using Kanban for software development projects. In this second part, we work through a detailed example of how the Kanban process might be followed by a software development team during a typical week.
Kanban in one week
Brian has appointed our company to develop the next amazing product of our era that he will launch ASAP. Our company has presented Brian with a development proposal for the project, this has been accepted, and we have a clear vision of what need to be accomplished.
There are still some questions to be resolved but we have enough work to start with. John who is our project manager has agreed with the developers (Paul, George, and Ringo plus the tester and Deployment Manager Stuart) the structure for a Kanban billboard and the WIP for each phase of the process.
John has a set of tasks ready in the backlog so the project has been given the OK to kick off. Just before starting the development the Kanban board looks like this (click the image to view close-up):
Brian and John have identified seven different tasks to start working with. Brian and the whole team have decided to always keep a maximum of two tasks ready to be selected. Brian and John have decided that “Create the login” functionality and the set up of the databases will have the highest priority. Brian will move these two tasks into the Selected column.
Paul, Ringo and George will pick up the tasks and will start working with them. Meanwhile, as the column selected has been emptied, John needs to talk with Brian to decide the next priorities.
By the end of the day the state of the Kanban board will be as follows:
John has come to Brian with the final decision on one of the outstanding points so new tasks have been added to the Backlog column. Paul and George have completed the login functionality and have moved the task to the Done column. They need to decide which task from the Selected column they will pick up next. Stuart is quite happy today as he can work on the login functionality task that is ready to be tested and deployed.
Stuart has started the testing and deployment of the login functionality. Paul and George have decided to pick up the “Create new article” task as it appears straightforward. Meanwhile, John has added a brand new task to the Selected column.
Paul and George have finished the development of “Create new article” task and they have moved it to the Done column. They were going to pick up another task but they can’t as the WIP of the column Develop is set to 2. That means that can’t be more than two tasks at the same time in that specific column. Ringo is working on “Set up databases” and there is a task waiting in the Done column. They have seen that Stuart is having problems with the deployment activity and Ringo is also spending more time that initially thought on the “Set up databases” task. George decides that he will go and help Ringo while Paul will help Stuart to finish the testing and deployment of the task.
During the day, George and Ringo finish the“Set up of databases” task and move it to the Done column. Now two tasks are waiting in the Done column to be picked up and moved to Deploy. George and Ringo find themselves blocked as the WIP of the Develop column does not allow them to start with new work until the tasks in the Done column are moved out. John ask George and Ringo to help Stuart and Paul to test and deploy the “Create login functionality” task.
Brian is worried about his team needing to solve the deployment problem, so his immediate focus is to protect them from any disruption that they could get from elsewhere.
The whole team has managed to deploy “Create login functionality”. Stuart will start with the next task to be deployed while Ringo will help him. Now the WIP of the Develop column is decreased to 1, so Paul and George will pick up another task, in this case they decided to start the “Administrator tool to be created” task. John will add another task to the backlog ready to be selected in the near future, and will start to think about how to avoid the previous bottle neck during the deployment process in the future.
During the day John receives a call from Brian telling him that “Mail communications to be set up” has been discarded from the project and it’s no longer in scope. As this task was not in the Develop column John can take it out of the project without affecting current development activity. He adds another task to the Selected column as a replacement. Stuart and Ringo have managed to deploy “Create new article” task and so Stuart has now started deployment of “Set up of databases”. Ringo is back to development and has started with another task.
The team meets in the morning and has decided to adjust the WIP of the columns. Stuart has expressed a valid point about not having enough “buffer” in the Deploy column. And Ringo is quite confident they can cope with more work in development. The team adjusts the billboard accordingly and starts working against the new version. In the new billboard the WIP in the Develop column has been increased to 3 meaning that a maximum of three tasks can be in that column at the same time. The WIP of the column Deploy has been increased to 2, so Stuart will have more buffer before blocking the developers.
John and the team are happy with this new structure. They know that this process is continual, and the billboard structure can be adjusted throughout the project to continually optimise the process and improve productivity.
Kanban is a flexible tool that can evolve within the lifetime of a project. Kanban also delivers more flexibility to customers during development projects, and changes to requirements can be accommodated easily with minimal impact, as long as the task that the requirement relates to has not yet started the flow. Kanban helps the team stay focused on delivery and maintaining the flow (momentum) of the project.
Bear in mind that the Kanban approach requires a team that will take full ownership of the project, and will be mature and responsible towards delivery. Kanban is a tool to help us in the delivery of a project; but it’s up to the team to tune this tool to make the most of it!