This is one of my favourite pictures of a Kanban board:
What is the function of a Kanban board?
Many people think it is too keep track of status. For example, I hear all the time teams say that it helps testers to know that a ticket is ready for test. No, the daily stand-ups (and other verbal communication) are for this. Possibly a note on the ticket saying "test this" but even that I would disagree with. Testing should be an integral part of the development process. Developers should not hand-over a ticket to QA. QA should already be preparing the tests as soon as the tickets enters the team. QA is a parallel process to coding and is as much a part of development as programming code is.
It is my firm belief that the board should have two primary functions:
1. It gives the team an overview of everything, something easily lost in an iterative, ticket-based process. But to do this requires no more states than ready, ongoing, and done. This is important because we don't want to give the false impression that things are nearly done. We've all seen bugs surface at the "last minute" that increase development time by a large %. Using Lean as a guideline; stories/tickets have no value and are considered waste until they are done. Therefore the only important states are Ongoing and Done!
2. The Kanban board helps us to improve our process. Limiting WIPs and columns means problems create bottlenecks which slow us down short-term but force us to fix problems thus speeding up the process long-term. This is the principle from Lean that we fix our problems now, even if it means stopping production, because it is more expensive to fix them later. It is this drive to solve problems in the process that make Kanban an effective tool for improving the development process. Otherwise it's value is severely limited.