It's all spinning wheels and self-doubt until the first pot of coffee.

I've been on the Death March road

A bit more meditation along the geek-turned-shepherd theme: I've always joked with friends and co-workers that someday, I'm going to go off the deep-end, quit my job, and do one of three things:

  • abstain from touching another computing device for the rest of my life and live out my days gently raising sheep for wool.
  • renounce all personal wealth and possessions and enter grad school on a ?PhD path, intending one day to become a professor
  • go completely apeshit bonkers, develop a slew of dramatic twitches and tics, and speak exclusively in pronounced punctuation symbols until they gag me.

So I've got that feeling again, but any expressions of frustration and angst I've tried writing so far all strike me as spoiled whining. Professionally, I still have a job in the field I love and I doubt that this is in jeopardy, despite shipwrecks and employment carnage everywhere I see. And I'm not facing financial hardships, just minor budgeting dilemmas. Personally, I've only just turned 27 last week. I have a wonderful love and a mostly whole family. And other than some minor surgery approaching, I have my health.

So, in general, life's peachy. But, it only takes one solo death march project and a bit too much personal investment in one's work to lose perspective and make things taste sour. You can see the beginnings of it and my enthusiasm (and perhaps some of my trepidations) back in mid-July. The current project in question is not the web app platform rewrite I'd mentioned then, though, but rather a new major tool that seemed a good candidate as a "rev up for Java before the rewrite" and a break with Perl as the established in-house development language. So, despite a concerned trackback at the time from Brian Donovan of MONOKROMATIK, I've managed to avoid descent into that level of hell thus far. (This may still be naivete - but I'm not yet convinced that starting this over in Java is a bad thing.)

So, my project at present started off as a new venture, with new technologies and techniques, and a planned end product of immense value and demand for the company. But now, it's ending in a vague cloud of missed deadlines and frustrated expectations. A slew of "missing" features have been added far beyond the woefully incomplete original scope, yet features expected from the start have dropped, leaving a sum impression of a diminished result. Initial deadlines have been blown by months, leading to an abandonment of testing and documentation just to sprint to the next already unrealistic due date.

With whom does the blame lie? With everyone - with no one - but no matter: I'm a perfectionist, so I choose myself. I tell myself that I should have known better than to have agreed to that timeline - I should have better forseen the unexpected. I should have never let go of my pristine test-driven development for perceived speed - mystery bugs and instabilities are biting me now. And I didn't stick to my guns on feature creep - the "wouldn't it be nice if" genie is out of the bottle now.

All I wanted was to be accomodating - to deliver an affordable, massively flexible product in a perceivably reasonable timeline that satisfies all parties concerned. And as I write that somewhat convoluted sentence, I realize both that that really has been my motivating goal, and that the goal is unlikely to impossible. Infinitely more so for just one guy, left mostly to his own devices, to pull everything into order. Funny, at the time, I didn't feel like a one of the "hotshot programmers who are convinced that they can run barefoot all the way to the top [of Mount Everest]." (See: Yourdon.)

So what mystifies me now is this: I'm a smart guy, I've been through a few trying times and I read a lot and I try to pay attention. The development pattern I've just described is neither new nor unknown to me - I've been here before and I've read the accounts of others who've been here before. And I know the benefits in sticking to a clean test-driven dev cycle, and keeping a stern check on scope creep. I know these things, and I try to practice these things - I'm normally known as the guy who pees in the happy idea cheerios - so what hit me this time?

I'm carefully trying to steer clear from writing a rant or a whine - I know that my angst comes from a loss of perspective in being nose-to-nose with this project. I know it will get better once this is done, and I know from recent developments that this project can and will be rescued unlike many doomed projects. It will be good and well used and the disappointments will fade. But for the life of this project, the late nights and my absence from life online and off have been real, as have been the doubts and fears.

That said, what the hell happened? And how can I prevent it in the future? Is it just a matter of guts, principles, and discipline? I don't think I'm personally in the wrong line of work - but this sort of thing puts me in an unfortunate mood to question everything. Hmm, I know I've intimated that I'm well read - but I've yet to actually read Yourdon's Death March. I think it's time to dig into a pile of his works.

Anyway, it'll work out in the end. In the future, I need to learn how to steer clear of these rocks - though it seems Yourdon asserts that the rocks are unavoidable. So, even with the knowledge that this is not the end of the world, contemplating doors 1, 2, and 3 seems peculiarly attractive. I'm leaning toward #2 as the more healthy alternative, but it might be fun to pursue some combination of all three.

I'll let everyone know which I choose, when the time comes - but the message may come entirely encoded in non-alphanumeric ASCII.