Imagine that you are teaching a child to ride a bike. First you run alongside her, holding the bike. When you feel her balancing, you let go briefly. You repeat this till she can balance successfully. Then you teach her to start on her own. Once she’s got this and is zooming away from you, you realize that she doesn’t know how to stop! After a few more starts and stops, she is confidently zooming around and stopping with brakes screeching.
Handoffs are similar to giving a bicycle to someone who doesn’t know how to ride. You can give them a big, thick instruction book, but it won’t be much help. It would be much more effective to give them personal instruction with tips, tricks and pointers based on what they do. Using this later method the person will soon know how to ride the bike, but won’t necessarily be able to describe how. This is called tacit knowledge. When we handoff work, a large amount of tacit knowledge is lost. This loss is compounded with each handoff. If we use a conservative estimate of 50% knowledge loss then:
· 25% of knowledge is left after 2 handoffs
· 12 % of knowledge is left after 3 handoffs
· 6% of knowledge is left after 4 handoffs
· 3% of knowledge is left after 5 handoffs
Given this and the fact that handoffs are inevitable, the real question is, how do we minimize this waste?
1. Reduce the number of handoffs
a. E.g. by dev and qa working together there is no handoff and no knowledge loss.
2. Use design – build teams (complete, cross-functional teams) so that people can teach each other how to ride.
3. Use high bandwidth communication: documents leave virtually all tacit knowledge behind. Replace them with face-to-face discussion, direct observation, interaction with mock-ups, prototypes, and simulations.
4. Release partial or preliminary work for consideration and feedback – as soon as possible and as often as practical.
Adapted from: Implementing Lean Software Development: From Concept to Cash, by Mary and Tom Poppendieck