This was originally published April 2017
Time-boxing is used as a project planning technique. The schedule is divided into a number of separate time periods (time=boxes), with each part having its own deliverables, deadline and budget. In Agile, these time boxes are known as “iterations” (XP and generic Agile) or “sprints” (Scrum). The deliverables of each time-box is working and tested software. If the amount of work planned for a particular time-box cannot be met, then it is considered to be better to complete as much code as possible while minimizing the amount of incomplete code at the end of the time-box.
The purpose of time-boxing has often been described as a method to get quick feedback on:
Time-boxing also provides a cadence for:
These are all good things. But there are other reasons to use time-boxes. These include:
However, one thing that is often not mentioned is that using time-boxing provides a certain level of discipline to the team. In other words, when time-boxing is actually used, one can clearly see what has been completed. It also encourages against bad practices that are common in Agile. These include having one time-box be for design, another for code, another for testing (sometimes called “Scrumerfall”). It does this by clarifying the objective is completed code at the end of every iteration. It is also facilitates getting accurate information on where the team is because you only get credit for work actually completed. This encourages a focus on completion not on starting.
The discipline provided by iterations is one reason that many new Agile teams should start with Scrum. However, the practice of time-boxing is not necessary to achieve all of the aforementioned objectives. The key is that if the practice of time-boxing is abandoned, it is critical that the objectives mentioned above still need to be met.
This is why many teams that merely abandon time-boxing and say they are doing Kanban (without taking on the practices of Kanban) are doing neither Scrum nor Kanban. It is fine not to use iterations, but the objectives of the iteration must still be accomplished in one way or another. Kanban’s practices of managing work in process, focus on finishing, working on small pieces of work, managing queues, among others, provides these objectives.