Why it all goes Horribly Wrong
Wouldn't it be nice if programming was like painting on a great big canvas.
Over here we'll stick Bacchus, just below him a little panther, up in the sky will be a ring of stars, and so on.
Some of the bits might be tricker than others but with a pencil sketch to figure out how much we have to paint and a little estimate for the hard bits, as long as we don't start changing our minds too much, we should have a pretty good idea of how long the painting will take.
Programming isn't like this. Unfortunately, it gives the appearance of being just like this, especially at the start of a project. It all looks so "doable" at first, then it all goes Horribly Wrong.
Why? Well, as soon as we start putting our metaphorical programming paint to canvas we start to affect areas that we haven't yet visited. It's as if, strangely enough, something about the way we've started to paint that panther has changed how we will later paint those stars. Even though we may be applying paint in the lower left hand corner only, the whole canvas starts to change!
And it changes in strange ways, not just by gaining background colour but by twisting and warping in multiple dimensions. If things get really bad, that little bit where you wanted to paint the stars disappears completely.
These problems are never foreseen. It all looks so simple when we start out.
What happens?
Programmers happen.
Programmers create their own nightmares.
Bad programmers create other programmer's nightmares.
Mediocre programmers do the same once the complexity of the code passes a certain theshold.
Good programmers know when they're getting into trouble and ask for help. The best programmers know how to avoid trouble. No programmer that I have ever met can guarantee to get you out of trouble once you're in it.
The biggest challenge faced by any programmer on any project is, therefore, himself. Staying out of trouble, and basically the secret to being a good programmer, comes down to two things:
1) Having the knowledge and experience to know what is good programming practice.
2) Having the wisdom and strength of conviction to employ it.
All the best
Richard


No feedback yet
Leave a comment