Do You Kanban?

December 21st, 2009

3

Software development is hard.
In fact, 66% of software projects fail, according to The Standish Group, a globally respected research firm.

In 2001, 17 well known leaders in the software industry gathered in Utah to ski, I mean, to attempt to create a set of best practices for the software industry.

Their guidelines are called The Agile Manifesto:

• Individuals and interactions over processes and tools.
• Working software over comprehensive documentation.
• Customer collaboration over contract negotiation.
• Responding to change over following a plan.

Even though some of us in Border Stylo have never heard of this manifesto, it seems like intuitively we all follow those guidelines. In this brief blog post, I want to show you one aspect of our development process that relates to those values – our Kanban board.

Kanban is a technique that started in Japan after World War II and is part of the Lean philosophy for process improvement. Kanban is a great way to visualize processes and see the waste. 
It can apply to any process in the company, not just development and it is proven to catalyze organizational process improvement. 

The main idea behind Lean is to eliminate waste by making it visible.
Waste in software can be many things*:
• partially done work
• extra processes
• task switching
• waiting
• motion
• defects
• management activities

How are we using Kanban at Border Stylo?

Our team is located in the same room and is cross functional. The developers, designer and the product owner (or representative) collaborate constantly using a Kanban board.

Take a look at the picture below, staring David, our fierce designer:

Each column represents a step in our process. Backlog → in progress → waiting approval → done
The cards are organized by ROI (return on investment): the higher the card, the more value it has for our company.
Each color represents a type of activity:
Blue = Feature
Yellow = Bug
Purple = Design Task
Orange = Chore

A tilted card represents a ‘blocked’ task – this task is dependent on another task or something external before you can work on it. Employees that work from home should have a ‘sticky buddy’ – someone that takes care of his or her cards.

The Kanban board is changing whenever the process changes. A few days ago we added the ‘waiting approval’ column. We noticed there were too many yellow (bug) cards during the week before a major release. We realized the reason was because we didn’t let the product owner ‘play’ with the feature and approve it before we moved the card to the ‘Done’ column. From now on, bug and other issues will be caught earlier, which will reduce the bug count before releases.

The advantage of using a Kanban is the quick feedback you can get just by glancing at the board for a second:

• Enhance collaboration – since it’s visual in nature, the board is attractive for other people in the company. Suddenly other teams or executives can actually see items that they requested and are related to them.  That’s why it is called a ‘pull system’.  You don’t need to ‘push’ for status updates, just look at the board and get the insights you need.
• Identify quality of development – On the board above we have 30% bugs (8/24). As a team we can decide on a ratio that is acceptable, and if we go above that number we can have a discussion about the reason for an increase in the number of defects.
• Are we working on the most important tasks first? The two top most items are still in development, while many other lower priority tasks are already done. This is a bad sign that should alert the team and lead to (healthy) discussion about why less important tasks are being finished first.
• Identify bottlenecks – the ‘Waiting approval’ column is packed with cards. Our product owner can’t handle the volume of tasks we complete (did I mention that we are rock star developers?) There are several possible reasons for this situation, but the most important step is to first identify where the bottleneck is.
• Identify waste – if the ‘In Progress’ column is packed it means that developers are multitasking. This is one of the definitions of waste in software development. Each time a developer has to switch to another task he or she spends valuable time in getting ‘in the zone’ and are therefore less productive.
• Measure team’s velocity – each week we count the number of completed features and update our velocity.
• Release planning – since we know our velocity (how many features we complete on average in a given period of time), we can give our executives rough estimates for completing future parts of the product.
• Motivation – when you move physical cards toward the ‘Done’ column you really feel great! Comparing a real, physical board to a software based is like comparing jumping from a plane in Second Life to actually doing it in real life.

Wait, are you telling me you rely on sticky notes? What if the strong Santa Ana winds blow all of it away?
Enter Pivotal Tracker. Introduced by Daniel, our software developer extraordinaire and was adopted by other teams at Border Stylo.

This web-based tool is where we keep a digital representation of our Kanban board. It is easy to use and has no permission levels so everybody can create, start, and complete tasks.  It will not generate fancy graphs or brew hot coffee, but it can calculate the velocity of a team and organize your tasks in a clear and simple way.

Here is David after 2 months of heavy Kanban usage!

*Mary and Tom Poppendieck’s book – ‘Lean Software Development: An Agile Toolkit’

Tagged with: Kanban, Software Development

Related Posts

Author

Oren Golan

Small

Oren is a Senior Ruby Developer. When he is not munching on the ruby syntax on his Dvorak keyboard, Oren is busy discovering life changing events. Never talk to the police, iPod Nano and Ubuntu are among his recent interests.

Tags

API Aardvark Athletes AutoCAD AutoLISP Avinash Kaushik Barrelfish Calculus Careers Catalysts Community Community Conferences/Conventions Conferences/Conventions Culture Digital Footprints Evernote Gaming Geek Culture Glass HR HTML Haskell Holidays IPv4 IPv6 IgniteLA Ignorance Innovative Interactions Kanban Knowledge LEGO Lomography Los Angeles Martha Stewart Movies Multikernel Music NBA QA Resolutions SGML Scheme Scriptability Social Fresh Software Development Sports Stereomood Swag Unix Videos World Cup 2010 advice agile ajax apps beta testing beta versions bloggers brands browser call/cc china comet communication community management computation continuations control-structures copyleft copyright coroutines creative workspaces creativity critiques css cucumber cursors customer service customer support data products design designers dynamic code entrepreneur entrepreneurs exceptions extension facebook feed firefox franken post gadgets generators google greasemonkey grid system http humanization innovation intellectual property internet iphone jQuery javascript job search job-hunting jobs lambda lamp marketing markov chain martinis monetization strategies mottos mst3k networking new technology open source software passion patent plugin privacy productivity programming languages pure-function quality assurance readability remote pair programming resumes tips rspec ruby ruby on rails scalability screencast security servers social media software engineering start-ups state syntax team members terminology test threads tips tools turing machine type theory types typography user experience user stories vidcon web development webspider xbl youtube zappos

3 Comments Leave a comment

7 months ago

This looks awesome — thanks for the post! I’ll definitely check it out.

Reply to comment

6 months ago

That was inspiring,
Great information about kanban.
Thanks for writing, most people don’t bother.

Reply to comment

4 months ago

Nice article, Oren. Looks like you’re keeping things well ordered and productive in your new role! Very glad to see that.

Reply to comment

Leave a comment

Anonymous
Right now

Your comment preview

Reply to comment





Incorrect please try again
Enter the words above: Enter the numbers you hear:
If you are not able to read this, you can get another image or hear it
Want to see an image again?

Allowed Tags

_emphasis_
*strong*
??citation??
-deleted text-
+inserted text+
^superscript^
~subscript~
@code@

Add code using a GIST
gist: gistid