Friday, October 16, 2009

Reflections on 1.0

I'm working with TurboGears a fair amount lately, so you might be expecting me to discuss TurboGears 1.0. I'm not. I'm talking about the general magic of seeing a program with a version number of "1.0".

If there are any non-developers out there reading this, you're likely to only have some vague idea of what I'm talking about. The rest of you, though, are already familiar with it to some degree.

As you might have noticed, the past two weeks have seen a major slowdown in my posting. It would be easy to see just another short term blog, where the author flat out gave up after a couple weeks. What you haven't seen has been what my job did.

For the past three months, I've been working on a fairly significant project. About two weeks ago, almost all of the development aspect became completed, and now came the install. We had to have a fully hardened system, extremely restrictive access policies, token authentication, the works. During the installation, issues kept cropping up every day with what to do next.

This has been the most stressful project I've ever done, and I've even single-handedly converted a company (granted, a small company of  less than 50 employees) from one ERP type system to another. The pressure of "So, we're ready to go in just two more days, right?" has gotten to me tremendously.

Every day, right after waking up, I started focusing on what needed to be done next. I thought about it while showering, driving to the office, during the day, while driving home, while spending time with my wife, and after she went to bed and before I did. This project has dominated every waking moment.

Today, though, marked a huge milestone: I called the code "1.0". It turns out we have a few more minor issues to resolve, but they're getting done, and are all system configuration related.. This code finally has reached a release state.

For the non-developers out there, you might not understand what this sort of moment means to a developer. Developers have too many ideas. I have around 10 projects I'm trying to work on, and that's just personal stuff. I come up with at least three new ideas every day for "Wouldn't it be neat if ... ?" Every couple days, one of those ideas gets a bit of a sketch, a few lines of code, some random notes.

Once in a while, it gets something more: Maybe a whole module or so, maybe even a full on program, or just a hacked up proof of concept. A few times out of those times, the idea will get some real attention, and actually start to go somewhere.

Very few ideas ever manage to make it to 1.0, though. Something always seems to happen. Other obligations come up, other tools obsolete the idea, better ideas come out, ideas get somewhere and prove unworkable after that point, the list is endless. Extremely few ideas can be carried through to something that can be called 1.0.

Today, that happened: A project made it to 1.0. Granted, it was a work project, so I got paid to make that happen, but it still happened. It's a nice feeling. Despite that, I wish I didn't have to go through the last two weeks to have reached this point. I've taken to calling it my "hell project", and that label still fits.

Still, though, today, I accomplished something. I'll be back with more regularly scheduled blogs by Monday. I think I'm going to take the weekend off and enjoy it (well, as much as I can, got some unit tests/functional tests to write before I can completely let this go).

How about you? Any similar experiences out there?

1 comment:

mae said...

Some people say a 1.0 will probably kill you or take away every bit of soul out of you. I think it's both.