Timeboxing For Top Team Performance
What’s
your definition of a successful software project? How about this:
A
successful software project delivers a quality product on time, within budget.
Time
is always a factor in software development, and developers are always
complaining about it.
“They
didn’t give us enough time.”
“They
didn’t let us estimate; they just told us when it was due.”
“We
had to skip most of the system testing in order to deliver on time.”
Timeboxing
grabs that problem by the horns and wrestles it to the ground. (Forgive me --
I’m from Colorado!) We set an end time -- that is, a timebox -- and then adjust our scope so that we deliver what we can
within the time allotted. This presumes that the schedule is the most important
aspect of the project, and frequently it is. Now there are other aspects,
including resources, development skill, scope and quality. Let’s look at these
aspects realistically, with an eye to managing them so that we look good!
On
a given project, resources are usually fixed; and unless you believe in the
Mongolian Horde Approach (hire a hundred people and hope some of them are good)
the best team is a small one. Once you’ve put that team together, you’ve
established their capability, at least in the short run. Now you have three
aspects to manage, as shown in Figure 1.
Schedule: The time when the software product is due.
Scope: The functions and features delivered in the
software product.
Quality: The absence of defects in the product.
I
call these three “The Iron Triangle” because they have an immutable
relationship. For example:
1. If we
increase the scope, the schedule must grow, or the quality must decline.
2. If we
shorten the schedule, we must decrease the scope or deliver with more defects.
The
best timeboxing strategy holds quality constant and reduces scope to meet a
schedule. Reducing scope flies in the
face of what I call “The World’s Greatest Program” syndrome -- the tendency on
the part of developers to put every
great feature into the first release, even if it causes us to be late. (Roland
Racko calls this creeping or galloping
elegance.) The customer always wants those features; they just don’t
understand how much it will cost them. I’d like to acquaint you with the facts,
so you can feel good about leaving some features out when you’re approaching
the end of your timebox.
Those
latest and greatest features cost more than you expect, and here’s why. Remember the 90:90 rule:
The first 90% of a system takes 90% of the time:
The last 10% takes
the other 90% of the time!
That
sounds like a joke, but Figure 2 shows why it’s true. As we approach 100% complete, our progress slows down
drastically. This is because we’re
making tough decisions in the face of uncertainty. Moreover, they’re not very good decisions. We will probably have to make many of them
over again, when we have more information. This last 10% also accounts for much
of the arguing and fighting that goes on in a project. Timeboxing forces us to forgo these last
features, but it also lets us avoid most of the conflict that goes with
them.
Pareto’s
Law -- the old “80:20 rule” -- gives us another justification for procrastinating
on those last features. In the systems
world, it predicts that:
20%
of the system will give us 80% of the payback.
Now,
in reality, this 20% only applies to a particular set of users. If we have a diverse set of users, we will
have to give each group a different 20%, but it’s reasonable to expect that we
can please the vast majority of our users with 80-90% of the features. Sooner or later, we’re going to deliver
those last features, but not right now!
Making
Pareto’s Law work for you may sound like magic, but there actually is a
systematic way of finding out what features you should deliver first. Ask your customers to rank the features they
want. You can do this most easily in a
group meeting of customers and developers.
Write
each feature on a Post-itÒ, put these on a whiteboard, and have the group
rank them (1 is high, 10 is low.). Then ask your developers to estimate how
difficult each feature will be to implement (1 is easy, 10 is hard) and
multiply these two to give you a priority weight for each feature. On the
whiteboard, build a matrix like the one I’ve shown in Figure
3. It will show
you, the team and the customers which features you should implement first and
which you might postpone. (Quality practitioners will recognize this process as
a part of QFD or “Quality Function Deployment.”)
This
whole process of managing features is the best way to stage incremental
releases of a software product. Jim McCarthy, Program Manager for Microsoft C++
products, asserts that you can build customer confidence through a series of
timely releases, which delivers a steady stream of new features. To do this, he says you have to get into a
stable state, and be ready to ship at any time.
Here’s
a strategy for delivering that first release:
1.
Define your features.
2.
Prioritize them.
3.
Define three subsets:
·
Gotta have
·
Should have
·
Nice to have
3.
Build the ‘gotta have’ subset as a prototype.
Define a timebox, start prototyping, and deliver what you have when you
run out of time. (Since it’s a
prototype, you won’t have trouble
explaining why it looks incomplete.)
4.
Use this early experience with the prototype to define timeboxes for your first incremental release.
5.
Stay within your timeboxes, delivering the features you have ready, on time.
If
you’re in a stable state, you have a much better chance of controlling quality.
A couple of basic metrics will demonstrate stability and dramatically
improve your ability to deliver a quality product as you reach the end of a
timebox. You need Defects Discovered,
and Defects Corrected for each time period (days or weeks.) Figure 4 is a graph of these two measures;
you can also derive (and graph) other important measures such as Defects
Remaining and Mean Time to Repair.
Who
does this defect tracking and graphing?
According to McCarthy, Microsoft has a ratio of one Quality Assurance
(QA) person for every two developers on the team. This graph is a great way for
QA to highlight the coordination between these two factions on your team.
So
far, we’ve been talking about timeboxing for product delivery. As I began studying the literature on
timeboxing (see sidebar) I realized that I had been doing a form of timeboxing
for over a decade. Training companies
frequently have a set format for their courses; for example, all of their
courses may be four days long. To build
a course, you start with an overall four-day timebox, and break that down into
smaller timeboxes to fit within breaks and lunches. That realization led me to
try timeboxing in our methodology experiments at CASELab. We put every activity into a one-to two-hour
timebox and gave the participants an opportunity to expand the box “a little”
but not more than 20%.
We
found that you can timebox any development activity, from requirements definition, to system design,
to paper prototyping your screens. You
define a time interval, and work within it. When you run out of time, you stop,
and move on. Of course, you have to be reasonable; you can’t do ten days of
coding in a two-day timebox; but you actually might able to build a prototype
in three days. You won’t know until you
try.
Early
in my career, as a young IBM Systems Engineer, I was working on a SPOOLing
package with Bill Gunther, an old software hand from Northrop Corporation. I suggested that, for some good reasons, we
might be able to slip the package we were working on a couple of weeks from its
scheduled delivery date.
“NO!!”
he said, vehemently. “People won’t remember why we were late; they will only
remember that we were late.”
That’s
still true; it’s all too easy to get a reputation for always being late. If schedule is important in your software shop,
you CAN be on time, if you’ll simply manage the iron triangle properly. And timeboxing is a good way to do that.
FIGURES

Figure 1. The Iron Triangle

Figure 2. The 90/90 Rule
|
Feature |
Customer Rank |
Delivery Cost |
Priority |
|
Capture existing file |
3 |
4 |
12 |
|
Create new records |
1 |
1 |
1 |
|
Allocate new space interactively |
5 |
9 |
45 |
|
Validate keys interactively |
2 |
2 |
4 |
|
Validate all fields interactively |
6 |
6 |
36 |
|
Recreate file from backup |
3 |
4 |
12 |
|
Update file from journal |
8 |
7 |
56 |
|
Modify existing records |
1 |
3 |
3 |
|
Find record by primary key |
1 |
2 |
2 |
|
Find record by secondary key |
2 |
6 |
12 |
|
... etc... |
.
. . |
.
. . |
.
. . |
Figure 3. Feature Priority Matrix

Figure 4. Defects found vs. Defects fixed.
Sidebar
Want to Learn More About
Timeboxing?
The term ‘timebox’ was first used
by Scott Shultz of DuPont, as a key component of Rapid Iterative Production Prototyping
(RIPP), a predecessor of RAD, which Shultz developed in the early 80’s. James Kerr and Richard Hunter interview him
in Inside RAD: How to build fully functional computer systems in 90 days or
less. (McGraw-Hill, 1994, pp. 14-16.)
In
Rapid Application Development, James Martin calls timeboxing “a
variant of RAD” and devotes an entire chapter to it.(Prentice-Hall, 1991,
Chapter 11.)
Without using the word
“timeboxing”, Tom Gilb provides a cogent discussion of “Deadline pressure: how to
beat it” in Principles of Software
Engineering Management (Addison-Wesley, 1988, Chapter 17.)
For more on QFD, see The
Customer-Driven Company: Managerial Perspectives on QFD by William Eureka and
Nancy Ryan (American Supplier Institute, 1988.)
For an interesting discussion of
creeping or galloping elegance, and incremental delivery, see Roland Racko’s
“Object Lessons: Joseph and the CD-ROM of Many Colors” (Software Development, September 1994.)
Jim McCarthy is a frequent
speaker at Software Development and other national conferences. His talk “21 Rules of Thumb for Delivering
Quality Software on Time” is a classic, available on tape from Conference Copy,
Inc. 717-775-0580. (Session 04, Conf.
#698D)
Finally, Pascal Zachary’s Showstopper!
The Breakneck Race to Create Windows NT and the Next Generation at Microsoft
(Free Press, 1994) is must reading for any one who needs to understand the
realities of the Iron Triangle. (It’s also a GREAT read!)
About the Author. [Updated:]
When this was written, Rick Zahniser was the founder & chairman of CASELab, a startup which
specialized in coaching software teams to world-class performance. In 1999, he decided to watch the Turn of the
Century from Belize, Central America.
You can meet him and chat with him on his website http://belizenorth.com.
Copyright, CASElab, 1995. All rights reserved.