You’re a project manager. You have too much work to fit into a project (scope) and not enough time to do it. What do you do? Timebox.
Timeboxing is a technique to fit what you can accomplish (some of the scope) into the time you have allotted. Timeboxing works when you have fixed schedule and fix team size, but the feature set is variable. If your users/customers don’t help you prioritize the choices, the project team will choose which features to implement.
Agile projects timebox as a matter of course, because they have fixed the people and iteration size, and then decide which features/stories to attack in a particular iteration. Since each iteration is of fixed duration, you only start what you can complete in that iteration, given the number of people you have available to perform the work.
In a phase-gate or non-cyclical lifecycle, you have to work harder to timebox. Here’s an example: You’re a project manager for a project that requires six months and 5 people. You only have three months and 3 people. You know the people can’t perform all the work in that time. So here’s what you do to help people perform the work:
- Start defining the requirements and design, but limit the time allotted to requirements and design. To start these 12 weeks, define requirements and prototype a high-level design for 3 weeks (your time frames will vary, this is an example). Focus on finishing the requirements definition serially. Don’t start all the requirements; only define one thing at a time. At the end of three weeks, you’ll know where you’re going with the product. Your scope may still be flexible, but you’ve certainly decreased the scope from impossible to possible.
- Start prototyping or designing the code, again once piece at a time, completing one prototype/design before going on to the next one. Limit your prototyping/design to 2 weeks. Whatever you can prototype/design, you can probably commit to completing.
- Implement and unit test the code, once piece at a time. Limit this time to 5 weeks.
- Test the product. This takes the rest of the time, 2 weeks.
At the end of this time, you have a smaller-scope product, but one that’s complete for the scope you chose to implement.
You can choose when to timebox. In this example, the entire project is timeboxed from beginning to end. But you can choose to timebox just a piece of the project, for example, requirements or design. If you timebox requirements, you’ve reduced the scope tremendously, and the project team can work towards fulfilling the requirements. If you timebox design, you have to deal with resetting the scope expectations later in the project, but you’re much more likely to meet the schedule.
Timeboxing is a technique to force the project team to make structured choices about what fits into the product and what doesn’t. The team works on one thing at a time, finishing that piece before going on to the next. If you can’t figure out how to complete all the work in the available time, and you can’t use an agile lifecycle, use timeboxing to force smaller pieces into fixed periods of time.