on Aug 18, 2006
Pixy Teaches us a new word today. Or two words. A phrase, really. I guess. Anyway:
(There’s a good name for this sort of activity: deficit programming. I hate deficit programming.)
That one is going right into my personal lexicon. It is directly related to what I have going on these days.
Deficit progrmming is particularly dangerous because it’s easy to get away with it in short term. The project manager can get the job done in less time, and move the coder onto other things. A one-week project gets done in three days. It feels like getting something for free. Once he sees this in action, he’s going to want to do it again. And again. Pretty soon he’ll just assume this is how things should normally be done.
Except all that slapdash code is a ticking timebomb. Since it wasn’t finished, polished, and tested, there are all sorts of problems that can spring up down the road. Those other two days of work needed to be done. If he throws the thing into use and forgets about it, it will chug along until something goes wrong. Then, because of an undiscovered bug or missing safety check, the thing will go down. Then some of the other crap software, similarly constructed, may fail as well. Pretty soon you’re dealing with catastrophic failures arising from what should have been a minor hiccup. Those two days of cut corners will take five days to fix, which will eat into the schedule of some other project, thus creating the need for more deficit programming.
The injustice about this sort of thing is that it is often the coder who gets blamed*. Nobody will remember that he delivered a week-long project in two or three days, but they will remember that he’s the one who wrote it, and the project leader will feel no shame at all in demanding that the coder come in on the weekend and clean up the damage that resulted from the project he was never allowed to finish.
* I’m lucky: My current bosses are actually pretty reasonable about this sort of thing.
I was whining about my current project yesterday. It has suffered from quite a bit of deficit programming, and I’m only now starting to recover. In fact, this morning I have a choice: Do I begin work on the next phase of the project (which is already past due) or put airbags and antilock brakes on the stuff I’ve already written? I’m not complaining: at least I’m to the point where I have a choice!
What to do, what to do…
Shamus Young is an old-school OpenGL programmer, author, and composer. He runs this site and if anything is broken you should probably blame him.