Share this
Kanban boards, done columns and work in progress limits
by Martin White on 13 March 2013
For those who use Kanban in their software development projects, a common way of visualising work is to first define the stages through which it passes - a relatively simple process might have ANALYSIS, DEVELOPMENT, TEST - and then split those stages into sub columns to indicate whether a task is being actively worked on, or is queued for the next stage. Some people use Ready and Doing, like this:
Others prefer Doing and Done, like this:
I prefer Doing and Done, but always had difficulty explaining why - until recently. Last month I had the pleasure of working with Al Shalloway, CEO of NetObjectives and a recognised leader in lean/agile thinking, to deliver a series of simulations designed to teach Kanban through playing a game. He and I talked through this problem, and we came up with the following explanation.
What most people are concerned with is what work they have in their to-do list, and what they are currently doing. This is what leads many to use the Ready/Doing split. The problem with this is that if we are looking at flow, we also want them to think about the next stage of the process. For example, if in the above process Test already has a lot on, we don't want Development to do more work and make things even worse for Test - we'd rather they found something else to do, like improving the build process or refactoring some code. So the developer has to monitor their own Ready and Doing columns - but the columns into which they can move tasks (and therefore affect flow) are their own Doing column and Test's Ready column. This leads to a rather odd-looking board if you want to show WIP limits by responsibility:
By switching it around to Doing and Done, the board is much simpler:
Admittedly the developer has to look backwards to see what work they have coming up, but given that the whole point is to focus on flow, I believe this makes sense.
There is a downside. Because Development now has control over Test's work queue, the implication is that Development has the ability to say when something is ready for Test to work on. Really it ought to be Test who get to say that a task is in a valid state for them to work on before they accept it. We can mitigate this by being explicit about what we mean by Done. In our team, we have a clearly defined policy, or ‘Definition of Done’ for each Done column, which has to be met before a task can be moved into that column. This looks something like this:
The other concept Al and I discussed was the level at which we should set the WIP limits. At first I thought they should be set at the Doing/Done level, like this (WIP limits noted in brackets):
But thanks to Al I now understand why setting them at the level above that makes more sense; it is because the purpose of WIP limits is to prevent a task from being started if there is nowhere for it to go, rather than to prevent it from being finished once it has been started. If tasks existed like this:
and an analyst finished T2, they would have to either exceed the WIP limit for Analysis-Done or hold the task in Analysis-Doing even though it is finished, which is a misrepresentation of the truth. Assuming they chose to exceed the WIP limit, there would then be nothing to prevent them picking up yet another task, which if they finished it before Development picked up T1 or T2 would make Analysis-Done even more over its limit, and before you know it:
DISASTER! Your Analysis-Done column is way over its WIP limit, and Development is now overloaded and is a bottleneck - through no fault of their own, but because Analysis worked on the wrong things!
So just to summarise, the following is how I recommend you structure your board – acknowledging that your process may include different stages to the example of ANALYSIS, DEVELOPMENT, TEST:
Questions or comments based on your own experience are most welcome!
Also see our recent article Picking the right Kanban software - Visual Studio vs JIRA vs Trello vs LeanKit.
Share this
- Agile Development (89)
- Software Development (68)
- Scrum (41)
- Agile (32)
- Business Analysis (28)
- Application Lifecycle Management (27)
- Capability Development (23)
- Requirements (21)
- Lean Software Development (20)
- Solution Architecture (19)
- DevOps (17)
- Digital Disruption (17)
- Project Management (17)
- Coaching (16)
- IT Professional (15)
- IT Project (15)
- Knowledge Sharing (13)
- Equinox IT News (12)
- Agile Transformation (11)
- IT Consulting (11)
- Digital Transformation (10)
- Strategic Planning (10)
- IT Governance (9)
- International Leaders (9)
- People (9)
- Change Management (8)
- Cloud (8)
- MIT Sloan CISR (7)
- Working from Home (6)
- Azure DevOps (5)
- Innovation (5)
- Kanban (5)
- Business Architecture (4)
- Continuous Integration (4)
- Enterprise Analysis (4)
- Client Briefing Events (3)
- GitHub (3)
- IT Services (3)
- AI (2)
- Business Rules (2)
- Communities of Practice (2)
- Data Visualisation (2)
- Java Development (2)
- Lean Startup (2)
- Scaling (2)
- Security (2)
- System Performance (2)
- ✨ (2)
- Automation (1)
- FinOps (1)
- Microsoft Azure (1)
- Satir Change Model (1)
- Testing (1)
- March 2025 (1)
- December 2024 (1)
- August 2024 (1)
- February 2024 (3)
- January 2024 (1)
- September 2023 (2)
- July 2023 (3)
- August 2022 (4)
- July 2021 (1)
- March 2021 (1)
- February 2021 (1)
- November 2020 (2)
- July 2020 (1)
- June 2020 (2)
- May 2020 (3)
- March 2020 (3)
- August 2019 (1)
- July 2019 (2)
- June 2019 (1)
- April 2019 (3)
- March 2019 (2)
- December 2018 (1)
- October 2018 (1)
- August 2018 (1)
- July 2018 (1)
- April 2018 (2)
- February 2018 (1)
- January 2018 (1)
- September 2017 (1)
- July 2017 (1)
- February 2017 (1)
- January 2017 (1)
- October 2016 (2)
- September 2016 (1)
- August 2016 (4)
- July 2016 (3)
- June 2016 (3)
- May 2016 (4)
- April 2016 (5)
- March 2016 (1)
- February 2016 (1)
- January 2016 (3)
- December 2015 (5)
- November 2015 (11)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (7)
- June 2015 (7)
- April 2015 (1)
- March 2015 (2)
- February 2015 (2)
- December 2014 (3)
- September 2014 (2)
- July 2014 (1)
- June 2014 (2)
- May 2014 (8)
- April 2014 (1)
- March 2014 (2)
- February 2014 (2)
- November 2013 (1)
- October 2013 (2)
- September 2013 (2)
- August 2013 (2)
- May 2013 (1)
- April 2013 (3)
- March 2013 (2)
- February 2013 (1)
- January 2013 (1)
- November 2012 (1)
- October 2012 (1)
- September 2012 (1)
- July 2012 (2)
- June 2012 (1)
- May 2012 (1)
- November 2011 (2)
- August 2011 (2)
- July 2011 (3)
- June 2011 (4)
- April 2011 (2)
- February 2011 (1)
- January 2011 (2)
- December 2010 (1)
- November 2010 (1)
- October 2010 (1)
- February 2010 (1)
- July 2009 (1)
- October 2008 (1)