Timeboxing For Top Team Performance

by

Rick Zahniser

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!

The “Iron Triangle”

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. 

The last features

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!  

The right features

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.”)  

Incremental Releases

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. 

Maintaining Quality

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.

You can timebox anything

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.

Stop apologizing!

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.

##  Go to top    Go to sidebar

 

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.

 Go to top