There's a fable from India that has a various number of people (usually six) encounter an elephant for the first time, and they are either in the dark or blind. Each person happened to touch a different part of the elephant before s/he walked or was led away. Thereafter, the people variously claimed that the elephant must be like:
- A dried-mud wall (its side)
- A great tree-trunk (its leg)
- A sword (its tusk)
- A butterfly (its ear)
- A snake (its trunk)
- A rope (its tail)
The fable has been interpreted as a warning against arguing with only partial understanding, and also the pointlessness of arguing theology. But it's not a bad lesson to keep in mind if you ever have to take over a software project originally written by someone else. In that case, you can put out your (metaphorical hand) to make your judgements based on things like:
- The code
- The database structure
- What the screens look like in The Real World
- How it fits into the organization's priorities, processes and politics
As with the elephant, each aspect of the software gives a completely different impression of how the software actually "works." None of them is to be relied upon. As a programmer, it's tempting to think that once you've wrapped your brain around the first two, understanding is a done deal. Yet the projects where I've been able to shadow the users and to actually (ab)use the software on a test system have generally be the successes (local politics permitting). I've been pretty lucky, because that's been the norm rather than otherwise. The other situations, however, have typically been pretty rocky experiences for all involved.
In other words, if programmers asking questions of real, live users is "a waste of time," I have no pity to spare for the time wasted on software re-writes and any collateral damage caused by deadlines being missed. Because, to a degree, each one of us is feeling around in the dark. And while we most often have to make decisions with incomplete information, only the fool is certain of her/his understanding.
- - -
See you on January 2nd, folks. Cheers and thanks very much for sharing 2009 with me!