Saturday, April 18, 2009

Why Use Time Boxes In Agile Software Development?

I recently made a response to a post about time-boxing in the Agile Coaching group at LinkedIn. As it turns out, the author of the post was well aware of the Parkinson's Law angle, and so are probably most agile team leaders. However, even if you do know about Parkinson's Law, you might be interested in the other reason. It is (in my opinion) more important, but less well understood.

Here is my response to the LinkedIn post:

Two reasons. One is Parkinson's Law:

Work expands so as to fill the time available for its completion.

You can read about it here:

Parkinson's Law isn't scientifically proven. It is just an observation about the results of human behavior.

The other reason is also a law, but a scientifically proven one. Little's Law says that for a stable system:

t = I / T

t = Lead time
I = Number of items
T = Throughput (Items processed per time unit)

Note that if you want to reduce t, as in reduce project lead time, you can do it two ways, by increasing T, or by reducing I. There are plenty of ways to do either.

If we focus on I for a moment, agile methodologies reduce I by using pull processes, like Kanban and Drum-Buffer-Rope, and also by shortening iterations. This happens at many different levels, for example the release cycle level, the project iteration level, the daily stand-up meeting level and the Test-Driven Design cycle level. Not every agile method uses the same cycles, or cycle lengths, and there are of course differences at the team level.

It is also possible to reduce I by decoupling process batch size from transport batch size in order to have transport batches that are smaller than process batches, which is what the Kanbandev people are doing. They refer to it as decoupling input cadence from output cadence.

When I became interested in agile I did computer simulations to figure out for myself how it worked. Here is a link to a page that contains the results of a simulation. Look at the animation in the sidebar to the right:

Click on the animation to see a larger version. The only difference between the two simulated projects is the length of their iterations.

No comments: