Kathy Sierra has another nice blog entry on “Are our tools making us dumber?” Quoting from life:
That night, you’re helping your 12-year old son with his math homework when you realize–in horror–that while he’s quite good with the calculator, he couldn’t multiply two three-digit numbers using only paper and pencil if his Wii depended on it. These tools were designed to make us more efficient, so that we can focus on something more important than the tedious task of, say, giving change, organizing source code, and doing calculations. But are they helpful timesavers, or are we dumbing ourselves–and our users–down?
One way around this particular problem is realizing that you are dealing with levels of abstraction. In this case:
- The level in question, e.g., multipling two numbers.
- The level below, e.g., multiplication with pencil and paper.
- The level above, e.g., computing the cost of a home loan by multiplying the monthly payment by the number of months in the loan (30 year loan = 360 months).
If you keep all three levels in mind as you work the problem, aids like calculators will make you faster, not dumber.
Other threesomes are:
- Computer variables:
- the value (98.2)
- what it represents (the patient’s temperature)
- how it is represented (the bits and bytes in binary/octal/hex)
- Computer code:
- What you are trying to do (multiply two numbers)
- How to write in the programmng language (
total = payment * duration;) - The machine/assembly language generated by the compiler (is the generated code correct?).
- Program libraries:
- How you expect the API to be used (e.g. what functions are worth optimizing and for what load).
- How to code it correctly.
- How you use any libraries or system calls.
Know where you are and what surrounds you and you can go farther and faster than finding out the hard way by bumping into the sharp edges.