In a class I taught in Copenhagen, we had a discussion about limiting work in progress and concentrating on getting each story to “Done” before taking on more work. Later, as I was going through security at the Copenhagen airport and going through passport control, I was reminded why small batches are so important.
Picture this: one line going into security … everyone waiting their turn patiently but moving along each in their own turn. People are not happy, but content. It is expected. And then, you are suddenly batched and put into a smaller line… but you get into a slow line – you see people that were behind you, now going ahead… Wait, they were ‘lower’ priority – why are they getting through first.
And then, you allow yourself an extra 15 minutes to get from the shopping area to get to your gate, and now you have to line up for passport control – an unexpected delay. The line which was non-existent 15 minutes ago, suddenly is long but you line up, confident that you will get through… and you wait your turn patiently… The person behind you who didn’t leave the extra time is getting impatient and becoming stressed. And then they open up a new line, and instead of taking the priority (first in line) people, the ones who were there first, they take from the back.
When teams start many stories at once, the idea of highest priority is discarded. No longer does the product owner have control over priority. The goal of incremental development and setting priorities, is to make sure we get the most important work done first. When we start too many things at once and take in less important work, we lose that goal. We do not know which will get finished first.
Limiting work in progress, taking the next most important story, and getting it to “Done” (which of course includes testing) is what makes agile work.