The problems of legacy code

Did I tell you that Gavin had written most of the original code for the system? A solid mass of C++ with unlimited overloading. For any of you out there who don’t know the full joys of C==, it works on the idea of creating objects with associated behaviours. So if you say “Go!” to a car object, it drives, and if you say “Go!” to a horse object, it gallops, and if you say “Go|” to a bird object if flies. That is, they can either use a default “Go!” behaviour (say, run) or you can write a special “Go!” behaviour for them  if running isn’t the right thing to do.

But this can mean that you don’t know what they’re actually going to do. And you might not dare change it, because perhaps someone’s “Go!” behaviour is skate, and when you take out all that pointless skating rink code that someone has put in there, the whole program breaks because at some point, something needs there to be a skating rink, but you don’t know which one or why or what.

Anyway, this is the reason why they never bloody change anything. They daren’t. Because if you try and change it the whole damn thing might fall down arse over tip on that damn skating rink.

Anyway, there was a team meeting today, with me and Ian and all of the other lovely lovely lovely developers. And we were reading the customer comments to try and decide what are actual priorities. And it was blatantly obvious that they just wanted something that was dead simple to use and connected to all the other dead simple things they wanted to use. And Gavin said “But they need to be able to do X”. And I lost it. And I siad “No, they don’t” Maybe one person does and makes a big fuss about it. But they are not our customer base. They are a sad geeky person who you like going drinking with.”

Our customer base has too much else to do to spend any time being geeky.

OK, I admit it, that was a very very poor exhibition on my part. I should be endlessly diplomatic. It did make Mr Grumpy laugh. I could hear him sniggering happily in the corner. And bearded Nick tried to tie himself in a knot because he always gets terribly uncomfortable if people disagree with the god of impenetrable code who is none the less the big boss. And Jiri just wants to re-write the whole thing from scratch because he despises messy code. He doesn’t want to make it any less impenetrable as far as I know, he just wants to make it superbly efficient. Christian Jack (maybe I should call him CJ) goes into a bit of a “let me dribble sort of bouncy bouncy puppy who wants to fetch the ball” look. And Gavin lost his temper.

Leave a Reply