Every year at about this time I do a bit of community service: I have my computer system make outbound phone calls to friends and relations who want a reminder of one of their religious obligations that's rather easy to overlook.
This year I have a very, very severe case of software rot. "Software rot" isn't a term in any dictionary; it's a phrase that I made up but that any technical person immediately understands. If you put a piece of software aside and don't look at it for six months, you often have trouble starting it up again. The software rots, a problem just as real as if though you'd put away your saddle away after riding without cleaning it properly. In my case, the outbound calls seem to work, but — ironically — the quality-assurance subsystem that I put into place verify that the calls are actually successful is itself failing.
I mean this post as a cautionary tale for managers. This particular application, as are many of the applications I work on, is built of many different subsystems. Some pieces are written in one programming language (Python) and others are written in more specialized languages (CCMXL and VoiceXML). The software relies on a wide variety of Internet protocols to work correctly (DNS and HTTP in particular). I rely on components from outside vendors and I've installed new hardware that uses some apparently very touchy new software.
Although it would be ridiculously expensive to build all this infrastructure from scratch intead of using these coponents, using the disaggregated components does impose some other costs. Any significant project I build uses change control to keep track of the software that I create, but — unlike a commercial service — I haven't instituted controls on this project to track software modules from elsewhere and the various bits of hardware. And since one of the items in the mix is a Windows-based PC, I suspect that I know where the problem really lies.
My point here is that disaggregation brings both incredible costs savings and a certain responsibility. I will get this service up and running correctly again (hopefully sometime today), but if this were a commercial service I'd be in trouble. Just because a service worked six months ago does not mean it will work today. No software exists in a vaccum. Software-based services require constant maintenance to avoid software rot.
Topics: · technology
Link to this story · Comment form · Blog Home
To leave a comment, please fill out this form.URL for TrackBack pings:
http://www.PebbleAndAvalanche.com/weblog/blog-20080422T0846.trackback
