UCOSP

Undergraduate Capstone Open Source Projects

I Guess I’m Unrealistic

Posted by Greg Wilson on 2010/02/02

I posted a link last week to Evan Robinson’s article explaining why crunch mode doesn’t work. Coincidentally, Ruben Ortega’s latest post on the ACM site asks, Why Do Software Developers Tolerate “Crunch Time”? His answer is “progress”, or at least, developers’ need to feel like they’re making progress. A couple of paragraphs later, though, he says:

It is unrealistic to deliver any project without going through some “Crunch time.”

I personally think that is the root of the problem. If you believe broken builds are inevitable, you’re not going to work very hard to make sure that code always compiles. If you believe that users are dumb, you’re not going to put much effort into fixing your user interface. And if you believe that it’s unrealistic to deliver code without all-nighters, guess what? You’re going to wind up pulling all-nighters.

So here’s my data. I haven’t stayed up to see the sunrise since the night my daughter was born, and you’d have to go back at least 15 years before that to my previous all-nighter. Despite that—no, because of that—I get a fair bit done on time and on spec. My algorithm is pretty simple:

  1. List the things that need to be done.
  2. Figure out which ones really matter, and which ones don’t.
  3. Estimate how long each one is going to take.
  4. Sort.
  5. Start work.

For every thing I do, there’s a dozen that I set aside. I always feel a pang of regret (sometimes two), but trying to do everything is a good way to accomplish nothing. And while it took me twenty years to learn how, I’m not pretty good at abandoning things that are half done if it turns out that they’re not as important, or as doable, as I thought they were. (“I’ve started so I’ll finish” sounds macho, but it’s lousy project management.)

I’ve also learned to ask people, “Is this a good idea?” before I put too much work into it. This one was hard too; I’ve always enjoyed walking into a room and saying, “Ta da, look what I’ve done!” These days, though, I’ll ask my wife or a fellow prof or a student what they think before I start writing or coding. As my dad used to say, “A week of hard work can sometimes save you an hour of thought.”

So: what’s your strategy for getting things done? How well does it work? And do you think you’re getting better at it?

One Response to “I Guess I’m Unrealistic”

  1. I’m inclined to take the statement about Crunch Mode being necessary at face value as a shortening of something like: “If we are to get this project done with approximately the right number of features done in approximately the (admittedly optimistic) right time estimate with the resources we have available to us, we’ll have to get more done than we would if we worked normal hours”.

    There are a number of problems with that:
    1) the number of features always increases over the life of a project;
    2) the original time estimate was almost always optimistic — often fantastically so;
    3) the unstated assumption that working more hours will provide more output than working normal hours.

    My strategy? I try to wildly overestimate the time it will take to do something, assume there will be major additions in the course of the development, and finally (and, I think, most importantly), I try my best to arrange my work life so I don’t have artificially imposed deadlines.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: