It all started with Jeff’s tweet from a week and a half ago:
It got me thinking: what, then, does motivate us? My initial reaction was to disagree: nothing is a bigger de-motivator than a project schedule that’s unrealistically short. As soon as I got over my sense of smug satisfaction from having a decent counter-argument, though, I understood what I believe to be Jeff’s real point. I think it comes across better as the converse:
Never miss an opportunity to make something happen quickly and successfully — it will leave you feeling motivated like nothing else can.
The importance of having an accurate schedule for any project — software projects most certainly included — is hard to overstate. When I’m wearing my “project manager” hat here at Increo, I usually follow the Spolsky method of scheduling, and it works really well for us.
We started doing this last September after one of our releases ballooned out of control, going from an initial “deadline” of two weeks after we started to a final release seven weeks later. Talk about lessons learned, but suddenly our eyes were open: our next couple of projects eked out ahead of schedule, and office morale skyrocketed.
Programmers straight out of school often don’t realize this, but “the old college try” isn’t sustainable. Saying you’ll give it your best shot and that that has to be good enough doesn’t cut it: everybody already is doing their best, all the time. We have a luxury that most people would kill for: a team of total rock stars who get to do what they love to do every day.
Projects don’t fall behind schedule because the people aren’t working hard, and they don’t fall behind schedule because the people aren’t talented enough.
They fall behind schedule (and they seemingly always fall behind schedule in this gig) because the scope of the project tends to get bigger and because the estimates at the beginning were too small. Spolsky nails it:
Many rookie software managers think that they can “motivate” their programmers to work faster by giving them nice, “tight” (unrealistically short) schedules. I think this kind of motivation is brain-dead. When I’m behind schedule, I feel doomed and depressed and unmotivated. When I’m working ahead of schedule, I’m cheerful and productive.
Programmers, even as dehumanizing as it is to say this, are a finite resource. Each person working on code has the ability to create a fixed amount in an hour. If you want to do more with your projects, you have to spend more time. If you want to spend less time, you have to do less, and there’s no better way to form a cogent argument for figuring this out than to have a realistic, correct schedule.
What, then, of the opportunistic heroism in doing an entire week-long project in one hour? After all, it’s no way to organize your projects, because if you start expecting the impossible, all you’ll find is that you’re really bad at estimating.
Instead, successes that come from your elite programming skills really should serve their intended purpose: that extended high from writing really great code that only true nerds like you and me can fully appreciate.