Evolutionary project organisation uses time boxing rather
than feature boxing. With a fixed set of resources it is possible to realise
either:
- A fixed set of features in the time needed to realise these
features. We call this feature boxing.
- The amount of features we can realise in a fixed amount of
time. We call this time boxing.
To realise a fixed set of features in a fixed amount
of time with a given set of resources is only possible if the time is sufficient to
realise all these features. In practice, usually the time allowed is insufficient to
realise all the features asked:
What the customer wants, he cannot
afford.
If this is the case we are only fooling
ourselves if we try to accomplish the impossible. This has nothing to do with lazy
developers: if the time is insufficient to realise all the required features within the
time (budget) available, they will not all be realised. It is as simple as that.
The Evo method makes sure that the customer gets the most and most important features possible.
Asking developers to accomplish the impossible is one of the main energy drains in
projects. By wasting energy the result is always less than otherwise possible.
In practice, time boxing means:
- A set number of hours is allowed for the task
- At the end of the time box, the task should be 100% done. That
means really done.
- Time slip is not allowed in a time box, otherwise the other
tasks committed to in this cycle may not all be done. And all committed task should be
done!
- Before the end of the time box we check how far we can finish
the task. If we foresee that we cannot finish a task, we should define what we know now,
try to define what we still have to investigate and estimate the time needed to do these
investigations. Also we should check whether we could go into less detail this moment,
finishing the task to a sufficient level of detail. Finally we should define new tasks
(NT's) to add to the Candidate List.
- Within the time box a TaskSheet is
used to define:
- The goal of the task
- The strategy to perform the task
- The way the result will be verified
- How we will make sure that when the task is done, it is really
done (i.e. There is really nothing we have to do any more for this task)