Joel on Software
Feb 24: Miami:
Future of Web Apps

Wanted: Software Engineer for AI Company at On Time Systems, Inc. (Eugene, OR 97403). See this and other great job listings at jobs.joelonsoftware.com.

2002/11/19


This item ran on the Joel on Software homepage on Tuesday, November 19, 2002

Good Books

The GoalA few months ago I read The Goal, by Eliyahu M. Goldratt, mainly because it has become extremely popular at business schools, and it looked fun. It was interesting, and fun. I didn't understand how the book's theory, called the Theory of Constraints, could possibly be applied to software development, but it was still interesting enough, and I figured if I ever found myself running a factory again, it would be helpful.

Critical ChainLast week I discovered his newer book, Critical Chain. This book applies the Theory of Constraints, introduced in The Goal, to project management, and it seems to really make sense.

Lets say you're creating Painless Software Schedules. Most people's intuition is to come up with conservative, padded estimates for each task, but they still find that their schedules always slip. Goldratt shows that the slip is precisely because we pad the estimates for each step, which leads to three problems:

  1. "Student Syndrome" - no matter how long you give students to work on something, they will start the night before. Phil Greenspun noticed this: "The first term that we taught 6.916, we gave the students one week to do Problem Set 1. It was pretty tough and some of them worked all night the last two nights. Having watched them still at their terminals when we left the lab at 4:00 am, we wanted to be kinder and gentler the next semester. So we gave them two weeks to do the same homework assignment. The first week went by. The students were working on other classes, playing sports on the lawn, going out with friends. They didn't start working on the problem set until a few days before it was due and ended up in the lab all night just as before."
  2. Multitasking, which, as I discuss, makes the lead time for each step dramatically longer, and
  3. the fact that delays accumulate, while advances do not (for example, if you have finished this week's work on Friday morning, chances are you will waste time on Friday afternoon rather than starting the next week's work. But if you don't make it on time, you'll still leave at 5 o'clock on Friday, accumulating a delay.)

Goldratt's solution is to choose task estimates that are not padded: each individual task's estimate should be exactly in the middle of the probability curve, so there is a 50% chance you will finish early and a 50% chance you will be late. You should move all the padding to the end of the project (or milestone) where it won't do any harm.

I can't do justice to an entire book in this short post, but if you're doing any kind of project scheduling or management, I highly recommend that you read both books (read The Goal first no matter what you do, both because it's more entertaining, and because it teaches you the foundation you need for Critical Chain).



Oh, and by the way: My company, Fog Creek Software, has paid internships in software development for qualified college students. They're in New York City. Free housing, lunch, and more. And you get to work on real, shipping software with the smartest developers in the business.

About the Author: I’m your host, Joel Spolsky, a software developer in New York City. Since 2000, I've been writing about software development, management, business, and the Internet on this site. For my day job, I run Fog Creek Software, makers of FogBugz—the smart bug tracking software with the stupid name, and Fog Creek Copilot—the easiest way to provide remote tech support over the Internet, with nothing to install or configure.

Enter your email address to receive a (very occasional) email whenever I write a major new article. You can unsubscribe at any time, of course.

Email:

 
Home | Email | Bug Tracking Software | Remote Assistance | Complete Archive