Development Death March!
There comes a time in just about every major development project where people start to freak out like Chicken Little proclaiming, “The sky is falling.” In these situations the cry is normally, “The deadline is unattainable!” At work right now, that time has come. I might have a weekend this week. We’ll see. The project has been a recipie for disaster from day one, we’ve pushed deadlines back as far as they can go, we’ve had hit and miss cooperation with outside groups, and we’ve generally had some difficulties with motivation. The client interfaces are lagging behind the backend work, with the result being the backend was wrong because it was built on the assuptions and rough guesswork from early in the development cycle. Status reviews haven’t been sufficient. Objectives were muddy until last week. We have roughly a week to finish. I could go into some of the details why this project has had a million to one odds from the beginning, but that would take more time than I can spare.
I’d remained very optimistic until today.
We ran into a show-stopper we’d been hoping wouldn’t exist — anyone with expirence in this type of thing will understand what I mean here. Somewhere along the way, we made the decision that what we had should be good enough to get it all working. In reality, it wasn’t until late in the cycle that this was proven to be an absolute falsehood. The truth was unavoidable in this case — our entire backed datastructures were a mismatch with the requirements. It could have been hacked together into something half-working, but it would never be right, and it would never work well. Add to this that we were already worried we’d miss the deadline. Unfortunately this is a highly visible politically charged project, and failure here will be something I don’t think we’ll ever fully recover from.
I proposed a hackable fix to what we had… but it was sloppy, would take a lot of extra work, and still leave us on shaky ground with a broken foundation for future changes. We mulled over that, then I brought up the other alternative. Redesign the data structures, refactor / rewrite what we had, and keep pushing. Luckily by the time we finished bantering about the hacks, I’d had time to figure out how to fix things the right way. Futher exploration of that route brought us to the same place everytime. We still might not make the deadline, but we’ll be in a better position to make it, and a better position if we miss it. Why waste time in a final push on a design you know is broken when the amount of time to fix it is a drop in the bucket at that point? Might as well miss the deadline in grand fashion. Might as well have a mostly functional demo that’s not totally complete than a hacked up piece of crap that can’t handle the required use cases. We tried to convince ourselves we could hack what we had.
The problem is, with a project like this, where the future of an entire department, team, and possibly the entire hospitals IT direction over the next few years hangs in the balance — second best, hacked up crap is not an option. Especially when the end result is one with the gravity of this project: People could conceivably die — God forbid my knowling hacking together some crap contribute to that.
By ten Henk and I had pretty well settled that the only thing to do was to toss the crap out. I tagged the CVS repository, and then, poof. Out goes the old, in starts the new. We sat down, we drew it out, we planned it, we fixed the compile, we redesigned the beans, we’ve got about 70% of the stuff back in action now. It’s been about 6 hours since we started, and we’re nearly back where we were. Right now I’m thinking, hot damn, we’re good… maybe we have one more snowball that hasn’t melted yet….
We’ve got until Dec 1st to pull this off, I’ll be out for almost four of those days (counting the weekend) and it’d be nice to have some decent testing before the presentation on the first. I might have a weekend. At least if we don’t make it, we’ll have a backend capable of handling the requirements to show for it, instead of a hacked up piece of crap that dosen’t have a prayer in the future.
The sky is falling. Only caffeine can save us now.
Update: 5:55 PM – Everything we’ve redone today compiles, some things are still stubbed. It even deploys to the application server. I’m working on rewriting the old request / command handlers to work with the new session facade. General concensus right now, “Damn. We’re good.”

November 18th, 2004 at 6:23 pm
Chicken Little? He’s called Turkey Lurkey! Must you americans break *all* kids books names! You even cleaned up the innuendo in Captain Pugwash (got rid of Seaman Staines, renamed Rodger the Cabin Boy and renamed Master Bates) :-)
November 18th, 2004 at 6:54 pm
As I recall, Chicken Little first runs into Turkey Lurkey when he’s running around.
And I don’t think I’ve ever heard Captain Pugwash, but I have to admit, those names are some of the more creative I’ve seen in while.
Nice touch. (pun intended)
November 19th, 2004 at 11:03 am
I’d need to go check my nephews kiddy books, but in the UK and Ireland, its only Turkey Lurkey and he’s the one with the Sky is Falling fascination…
In the US, Captain Pugwash has carachters like Timmy the Cabin Boy. Damn censors…
November 22nd, 2004 at 11:41 am
Hmm, I thought it was “Chicken Licken”?
Yeh, Captain Pugwash is cool :)
Saw a classic rainbow episode too the other day -
“I was blowing a lot last night with Rod and Roger”
“Yes, but you broke my plucking instrument”
- a 4 minute thing scripted by the guy who does Zippy and George for some internal ITV regions contest – fantastic though.
Simon (UK)
November 22nd, 2004 at 12:10 pm
Saw it on TV or just watched it on then net :-)
It was “banging a lot”, not blowing, although one of the guys then mentioned blowing…
November 25th, 2004 at 5:06 am
Yeh, on the net.
I’ve just rewatched it, sorry for the misquoting Jane.
“Do you want to blow my pipe while I’m banging away” was the line that led into it…easy mistake to make!