As a problem solver or a programmer, to be able to solve a problem or fix an
error effectively, it's more important to have, among other skills,
- open perspective and keen instinct on the possible causes of a
problem, and
- the skill and ability to deduce the root cause by method of elimination.
I believe in a decision support system as opposed to a decision making
system. It's a common design and education issue when designing, implementing
and deploying such support systems as WTF database.
A user should be educated (which is hard) to expect to use the system to help him make a
decision, not to make a decision for him--an all too common
real life fallacy. A study reported on the news "Spell-Check Can Make Writing Worse"
in March is a classic example. Apparently, many people let the word processor
completely make grammatical and writing decision for them.
Technical support service is a common example where people (both the user and
the tech support) fail to have an open perspective on the possible causes of a
problem.
* *
* * * *
Once, an office worker working on payroll found himself unable to access the
VMS mainframe payroll system via his terminal emulator on his PC. He called tech
support who walked him through on checking various things on his PC and on the
mainframe--to no avail as everything seemed working. Then he was referred to the
hardware vendor who asked him to check on this and that on the hardware--again
to no avail as again everything seemed working.
That went on the whole day.
So I helped. First, I tried to see if it was hardware or software problem.
It's not software because I took my laptop to test on various locations in the
office. The terminal emulator could access the payroll system at some location
but not a few the others. As for the hardware, it seemed to be the problem of a
few jacks through which the PCs were connected to mainframe.
So I traced the jacks and their cables to look for physical damages. It led
all the way back to the computer room where all the hubs, telephone switches and
the mainframe located. Found nothing.
Then I noticed a few lights on a hub were off. I traced the power cable to
eventually a power extension cord buried under a pile of wires, which was
accidentally switched off! That was the problem! A power cord was turned off by
accident (probably by the cleaning crew).
In retrospect, silly, huh? Why didn't the tech supports locate the problem,
given they're sitting in front of a WTF database system as well? It's because
they only sought for the causes directly generated by their products--a narrow
perspective.
* *
* * * *
A best thing a support system can do is to help make the user smarter, not
dumber and lazier.
During the 80s "quality" craze in the business world, many
executives believed control charts, statistical and quality control software
helped them improve productivity but failed to realize that it's the knowledge
of the users behind those tools that helps improve productivity.
In tech world, the technology-first mentality (as opposed to knowledge,
education and leadership first) manifests itself as situations where a management
jumps from technology to technology (such as FastCGI to ASP to JSP to CORBA,
etc.) believing it will somehow magically make their software smarter, better,
faster and easier to use.
* *
* * * *
There's also a real implementation issue--the search strategy, so to speak.
Perlmonks is a best piece of WTF database system powered by real human being.
Still, very so often the respondents have to ask a poster to clarify his
question before they could give him a sensible answer--something very hard or
next to impossible to be done by a machine.
Another issue is common case versus special case fine-tuning, which is very
doable but just needs continuous attention from the designer and creator of the
system. What did I mean by that? Let's consider a few examples.
A candidate selection system that picks a potential successful candidate
based on his/her academic achievements could do consistently pretty well on
average on "common" cases but fail completely on "special"
cases (such as Albert Einstein or Evariste Galois). But a competent interviewer
could pick out a special case easily.
Same situation with financial trading system, it does well on
"normal" situation but not on special situation, such as market
crashes.
Fine-tuning between common and special cases in every algorithm is a tradeoff
problem. Either you make the algorithm favors and includes the common cases more
often at the expense of the special cases or vice versa--but not both--just
as you can't convict and acquit someone at the same time.
That might be also partly why the tech supports failed to locate the
problem in the power cable incident above. Their WTF database probably wouldn't
have shown a power cable as a likely cause even had such an information been in
the system.
Many knowledge system implemented a rating system where users rate the on
answers they receive, presumably, to help the system to better the correlation
between questions and answers. Again, the fine-tuning of such correlation
automatically by the system requires careful intervention by the system designer
or maintainer. A setting leading to too frequent an adjustment on the
correlation can result in the system returning the answers seemingly in a random
manner. An overadjustment issue, so to speak.
* *
* * * *
All in all, any system that helps a user to solve problems is only as good as
the problem solving skill of the user himself. But of course, a good database is always welcome and helpful.