I recently was discussing the first complete application that I wrote professionally. It does a whole mess of stuff; data retrieval from several systems, does some calculations, makes some reports*, sticks some derived data in another place. You know the usual stuff.
So, it has been a number of years since I wrote it and it is still in daily use; so, I was inclined to crow a little bit and boast about its longevity and how it is still working well without any modification. Then, as pride comes before a fall, I realised that basically the only reason that it was still in use without any modification is that everyone was too scared to change it because it was such a ghastly, tottering heap of poop. OK, from hero to zero in an hour. Great.
Of course, it isn’t all bad. It has at least been worth keeping rather than re-writing, and I’ve seen a lot worse since. It still gets the answers right; but, IMHO, correct output is the weakest measure of software “goodness”. If it is “right” but not maintainable it is only a matter of time before the world moves on and your app is dead, dead, dead.
* funnily enough, the reporting part actually got turned into a mini “framework” for automating Excel** (I know, I know, I’m blushing). And even now, I still see reports on people’s screens that have used this thing and so my visual tastes and simple table dumping aesthetics are hanging around meme-like on many a app.
** Really funnily though, when I started the app I didn’t use Excel, I did the super-quick “dump to CSV and I’ll sort it later” thing. By some evil, this got into the application stack in places it shouldn’t and things were *blush* being passed around as comma-separated strings.