Tuesday, November 16, 2004

Wish me luck, part 2

Well, the release didn't happen. I'm going to word this very carefully because I know at least one person at the office reads this blog - but also because effecting cultural change is a slow process and in a relatively creative field such as S/W development it's very difficult to achieve such a change without everyone on the team buying into the deal.

The long and the short of it is that the release didn't happen because a new feature, added at the last minute by one developer at the suggestion of another developer had a bug.

The two developers in question test each others work. I, as the new chum on the team, don't know enough (yet) about what their part of the product does to be able to offer constructive suggestions. Unfortunately, one of the two developers in question is on the other side of the International Date Line at the moment and 15 hours ahead of us. So he gets a new build and tests it - reports a bug and goes to bed. The other guy awakens, sees the bug report, fixes it, sends a new build and goes to bed. The first guy awakens and.... well you get the idea.

So here we are with a release sitting right on the edge and ready to go - with a bug in a new feature. Do you wait another day, just ignore it, or do you conditionally compile out the new feature and postpone it to the next release? I've already said I don't know enough about that part of the product to offer constructive suggestions so my gut feel was to let the author of the new feature make the decision. He believes it's fixed in the build currently awaiting verification (actually, at the time of writing it should have been verified) so I'll let it go another day.

Now understand, I'm not affixing blame here. I've been a software developer long enough to know that curbing enthusiasm is sometimes a good thing but I also know how an idea can take hold of you and beg to be coded. I don't want to, and won't, discourage anyone on the team from offering up ideas for consideration. I also don't want a situation where the 'release date' becomes the all consuming passion of everyone and every decision is warped by that looming presence. Nonetheless, sometimes it's necessary to draw a line in the sand, freeze features and focus on getting a functioning release out the door.

When I arrived at the office this morning I found an email from the developer who's currently on the other side of the IDL suggesting a change to my part of the product. It's a good suggestion, pretty easy to implement and useful to the customer. And my first thought was 'no way is it going into todays release'.

Let's be honest. In part that thought was because even though the idea is a good suggestion, pretty easy....... blah blah..... it's just not sexy and we, as developers, are partly driven by the sexiness of an idea. 20 years ago I'd have probably started implementing it anyway just to prove what a clever/fast bastard I can be. But not now. Now I know that we're not judged solely by how clever we are. Customers want, first and foremost, software that works. In much the same way that I'm no longer impressed by an engine with double overhead cams and an all aluminium head (because I don't care how the car works - just that it gets me to where I want to go) our customer isn't impressed by how cleverly we wrote a multithreaded pool manager. They don't care how we do it - what they want is for their $80,000 batch of semiconductors to be tested in 8 hours and to get an accurate report that tells them which ones to ship and which ones to post mortem.

We've now agreed that we're going to feature freeze 5 days ahead of release date. Let's see if that agreement holds shall we?

[Let down]. So today I created the template for our CD label and wrote the HTML page our CD will offer up when autostart kicks in. I did a test burn with what we had, labelled the CD and tested it on every machine I could see (to be sure the label didn't render the CD unreadable). I'm going to keep that incomplete CD and probably staple it to a wall somewhere to remind me of today.

So we missed the deadline but I still finished the day feeling like we'd accomplished something. I even got to go home early

No comments: