Justifying Embarrassing Errors.

I remember when one one of my grandchildren helpfully decided reorganise a bookshelf whilst by himself. Upon being discovered, sitting in front of an empty shelf with books strewn all around him, his instinctive reaction made me feel proud to be his grandpa. He looked up and said, “Oh dear! Oh dear! what happened?”, as if this calamity had occurred spontaneously, astonishing him as much as the angry parent who was going to have to tidy it all up. It is hard to hide amusement when you watch your kids have to deal with their kids.

Advanced Disaster Management Strategy for Grandchildren and Programmers

You see, he had acquired the first step in Advanced Disaster Management Strategy for individuals who have caused the disaster and know it. Display Of Surprise, is good for buying time, creating a flicker of doubt in the prospective accuser, and allowing the next phase to be implemented. Such is the lot of us amateur programmers, who in attempting to display what they had felt was a masterpiece, are discovered having produced mangled unintelligible rubbish. The ever-helpful Perl programming community are able to step in and gently point out that usingperl-untidy was not such a good idea.

The next phase in ADMS in any project, is to Identify Someone Else to Blame. At first glance it might appear difficult in solo projects, but inevitably all projects have dependencies, and one can always say “If only $target_for_blame was able to cope with my advanced needs…”. This target could be a module on CPAN or the language itself.

But eventually you get found out. You get found out because the people you are sharing the code with know a lot more, have experienced bad coding practices, and spoken out against these before. Personally, I have a sneaky suspicion they have done dodgy coding themselves, no matter how much they deny it. But here we are, red-faced, mumbling, shuffling feet and looking at the floor. The next phase starts. You start Justifying the Errors. The old “feature-not-a-bug” strategy. “I wasn’t trying to create obfuscated code…I was trying to make it more compact”.

The eventual “recovery phase” requires a reluctant re-write. It is true that Paella v0.07 grew in size by 80% to v0.09 without adding any significant functionality. This was purely to try and make the code a little more legible, object-orientated, structuring subroutines into packages, such that it may be easier to reuse elsewhere, perhaps allow others to re-spin the code and many other potential benefits. I tried to do this, without grumbling all the time. It was difficult. You see the purpose of the project was discovery, but progress was being held back by the desire to satisfy the tidy-minded observer.

“Mummy is being really Mean, grand-dad,” said the little monster.
“It’s ok, mate,” I tell my offsprings offspring. “Mummy is only grumpy because she doesn’t understand. Her mummy is the same with me.”
“Does gramma tell you off too?”,
“You betcha!”
“I was only trying to fix it, like you said”, sniffles follow.
“Shhhh! I know, but hey, who needs to keep things tidy, when we have more important things to do…?”

You almost feel obliged to encourage the little beggars.

Leave a comment

About Saif

user-pic An Orthopaedic Surgeon, A Tissue Engineering Scientist, Lecturer, (and Hobbyist Programmer, Electronics Engineer and Roboticist)