Tuesday, June 19, 2012

Our checklist for running a daily meeting with kanban

The squad I manage is fully distributed, like most of Canonical's employees. We are all in relatively overlapping timezones--ranging from Italy to the American east coast--but none of us work in the same building, or even the same city.

We also are on the Lean journey. We're not nearly as far along as others you'll find blogging on the web. However, maybe we're interesting because of the combination: lean, plus a distributed workforce.

I suspect that working in a distributed team increases the importance of good practices. When they are not followed, the pain is more intense. For example, I think that writing everything down is important for running a business well; but it is essential, or more obviously essential, for a fully distributed team.

Another good practice like this is a daily meeting. We've done this for many years now, and it is essential to our coordination. We combine it with an online kanban board, which is central to our daily workflow and coordination.

We've also recently combined it with another good idea, checklists, and that's what I want to share right now.

Our checklist is a live document. We've changed it multiple times a week. We keep it, and other checklists I'll maybe write about later, on a wiki over at https://dev.launchpad.net/yellow#daily-call-checklist. Therefore, I'm talking about what the checklist looks like right now, and not as it will evolve for us later. Similarly, I offer this as a source of ideas for others, and a call for suggestions, rather than any sort or prescriptive advice.

All that said, here it is. (I'm even revising as I copy it over.) If you're not sure what a kanban board is, or why it is nice, that list probably doesn't do much for you, but if you do, maybe this will look familiar and/or interesting.

Move all Done-Done cards (fully completed) to the archive, off the main board. Celebrate!

Have any active cards been in the same lane for more than 24 hours? If so, discuss pairing and problem solving.

Are the developers stuck? Consider "convening a panel" after this call to become unstuck.

Has the card been in the same lane for more than 48 hours? If so, consider adding or rotating programmers.

Is no-one available for regular pair programming? If so, strongly consider blocking an active card in order to get that developer(s) available for focusing on the non-moving card. If more than one card is not moving, consider focusing on one at a time.

Do any non-done cards on the board have deadlines? If so, review as necessary.

Review all blocked cards everywhere. Are any of them unblocked? Do we need to take action to unblock any of them?

Make sure there are clearly kanban cards to be done

Rotate through the squad. Each person should mention any items that everyone should know: remind people of reduced availability, request help such as code reviews or pair requests, etc.

Then that's the end of the meeting. We might have another meeting right after (maybe I'll blog about our weekly review and "convening a panel"), but most often we stop.

The list is nice because it helps us remember the daily bits that keep us working together well. It's already reminded me numerous times of things I would have forgotten in the midst of talking about problems and successes. It also could help us switch around the responsibility of leading the meeting, which is something I intend to try next!

Thanks for reading. If you have any ideas or suggestions, I'd be happy to read them in the comments.