Kanban is an area of agile software development that has been getting more noticed in Project Management in recent years. Kanban is a popular way of implementing Agile Software Development. It requires a lot of communication and transparency within the Project Team and can be a really efficient way of working in your team. But, let’s get back to basics…
What is Kanban?
Kanban shows all of the work to be completed on a “Kanban Board” and allows all team members to be able to see the current status of the work in real time. This allows a lot of flexibility for team members in picking up tasks and for the Scrum Master/Team Lead in being able to see the latest status of tasks without needing so much immediate team input.
But, Kanban is not a new methodology. During the 1940’s Toyota was one of the pioneers of this methodology in their manufacturing lines but the core of the “just in time” process still remains at the heart of Kanban. Kanban also has relatively few “rules” when it comes to how it works which makes it easy for teams to adopt. It’s also useful for making sure that there is full transparency for the work that needs to be achieved during this epic/sprint.
One reason why we have used Kanban in our teams is to be able to speed up the work delivered by the teams and also to assist in our mentoring / peer programming initiatives. We regularly train up juniors on tasks and using a Kanban board enables them to be able to pick up tasks they are able to do and where they might need support from a more Senior developer. We’ve seen that the ramp up time when putting Juniors in a Kanban Team is a lot quicker than in traditional waterfall teams.
An example of a Kanban Board is below:
What’s the difference between Kanban and Scrum?
There are some great articles available that will detail the differences so rather than repeating their great content, I’ve picked two out: here and here.
How does it work in reality?
Atlassian has a great article on how a Kanban board works that i’d recommend reading. In our team the process works something like this:
- At the start of the project/ epic the Product Owner and Technical Lead sit together and map out the tasks that need to be completed to be able to deliver the next release. This includes details for how to complete the tasks, when its considered done and anything special. Each work item has it’s own ‘ticket’ on the board and this allows each team member to visually track each item as it goes through each column/ status.
- This list is put in a Kanban board backlog and during a refinement meeting, the team discuss the card and make sure that everyone understands what needs to be achieved. This is only done once during each Epic/Sprint but allows everyone to fully grasp the content of what is needing to be done and ask any clarifications or questions. During this refinement session, tickets are often added/broken up into more manageble work items or removed if they are not relevant. Having this discussion enables the team members to fully ‘buy in’ on what is going to be worked on and they are empowered to deliver the work.
- Once the team start work, they each pick the top ticket from the backlog. The rule in our team was that if they were Junior and unable to work on the top ticket, they could pick one within their abilities. We try to encourage ‘cross-skilling’ so if one team member does not have the knowledge to perform a ticket, they can work with another developer and learn actively.
- As each ticket is worked on, it goes through the states: To Do, Work in Progress, Under Review (code review), Complete and this is repeated for each ticket until the backlog is empty.
- Throughout the process, tickets may be created for bugs but no new functionality is added unless agreed by the Product Owner.
What are the benefits of Kanban?
The main benefit for me is always around the planning and its flexibilty that it gives me and my team to be able to complete their tasks. The Product Owner can reprioritise tasks on the backlog without needing extensive discussion with the team and the team have the autonomy to work as they need to and they can trust that the Product Owner is putting the “biggest value” items at the top of the board.
Another massive positive for me is the culture of ‘improvement’ that comes from working in a Kanban environment. Team members are often challenging how they work, which ways are the best way to deliver a task and they are constantly learning from their peers.
What tools do you use?
One great tool that we use for our Kanban board is Trello. Not only do you have a lot of flexibility with sharing your board but you’re also able to use established templates (see below for an example)