The father of computers, Charles Baggage, once remarked the following
On two occasions I have been asked, – “Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?” … I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
The modern paraphrasing of his sentiment is short and memorable: “Garbage in, garbage out“, a.k.a. GIGO. No matter how intricate the computer/program is – it is not magical and cannot overcome erroneous inputs. This is one of the things computers cannot do.
Although principle borders on stating the obvious, in the real world it is anything but. I can recall many times this principle is invoked on my projects, and GIGO is a well known phrase means others have been doing so as well.
This discrepancy of understanding also puzzles me to no end, until one day I re-read Arthur C. Clarke’s 3rd Law:
Any sufficiently advanced technology is indistinguishable from magic.
And voila, all the pieces suddenly fit in my head.
See, Clarke’s 3rd Law applies not only toward a prehistoric caveman accidentally peeping through a wormhole to observe today’s routine surgical procedures and believe them as magic, but also to us modern humans with today’s technologies.
Although today we believe in science instead of magic, any existing technology that we do not understand well qualifies as “sufficiently advanced”; and when we do not understand how it works, we will not be able to correctly judge its capability and limitations.
This leads me to my corollary of Clarke’s 3rd Law:
Lack of knowledge on any sufficiently complex technology will lead to misjudging its capability and limitations.
Those who lack the necessary understanding have little basis to judge what computers can and cannot do, and in that case, it is not surprising that they might over estimate computer’s power, in this case, missing the GIGO principle.
But wait – there is more.
GIGO and Clarke’s 3rd Law (or my corollary if you will) apply not just to hardcore technologies such as computers or software, but also “soft” technologies such as processes and methodologies.
No matter how sophisticated or advanced a process is, it is just a series of steps, an algorithm, not magic. It will not magically transform erroneous requirements, designs, or decisions into correct project outcomes. It is still subjected to GIGO.
And without sufficient understanding on processes and methodologies, we are subjected to Clarke’s 3rd Law and that lead us to the belief that just because we have switched from waterfall to XP or Scrum and everything will now be fine.
Does this mean that process and methodologies are not important? No, but this puts things in proper perspective according to their impacts. Utilizing an agile methodology instead of waterfall might allow us to recover from the impact of a bad requirement or architecture decision more quickly, but it won’t come up with the right answers for us – we still have to find them ourselves.
And we place our trusts in methodologies when we do not sufficiently understand their capability and limitations.
So next time when you run into a process buff telling you that his favorite methodology is the silver bullet to all your project woes, send him the link to this post ;)