Point of view is worth 80 IQ points. [Alan Kay]
Good judgement is the result of experience.
Experience is the result of bad judgement. [Mark Twain]
Cleverness is serviceable for everything, sufficient for nothing.
Start stupid, and evolve. [Kent Beck]
The simplest explanation is probably the right explanation.
Yesterday's complexity is tomorrow's order. The complexity of molecular
disorder gave way to the kinetic theory of gases and the three laws of
thermodynamics. [Steve Lukasik]
A system should always look like it was designed top-down (whether it
was created top-down or bottom-up).
A designer knows he has achieved perfection NOT when there is nothing
left to add, but when there is nothing left to take away.
[Antoine de Saint-Exupery]
A complex system that works is invariably found to have evolved from a
simple system that works. A complex system designed from scratch never
works and cannot be patched up to make it work. [John Gall]
There was an important job to be done, and Everybody was asked to do
it. Everybody was sure Somebody would do it. Anybody could have done
it, but Nobody did it. Somebody got angry about that, because it was
Everybody's job. Everybody thought Anybody could do it, but Nobody
realized that Everybody wouldn't do it. It ended up that Everybody
blamed Somebody when Nobody did what Anybody could have done.
Computer time is extremely cheap compared to programmer time. It makes
sense to let the computer locate our mistakes and otherwise pick up
after us. [Peter DeGrace and Leslie Hulet Stahl]
A five-to-one ratio between the shortest and longest implementations is
quite typical, and usually the shorter programs are better.
[Peter DeGrace and Leslie Hulet Stahl]
I once spent days writing two pages of code that used a pair of stacks
to traverse a complex data structure. When I finally viewed the problem
the right way, a recursive program did the job in two dozen lines.
There are two ways of constructing a software design. One way is to
make it so simple that there are obviously no deficiencies. And the
other way is to make it so complicated that there are no obvious
deficiencies. [C.A.R. Hoare]
Problem Solving Hints and Wisdom
by Robert Harris
- Take time to examine and explore the problem thoroughly before setting
out in search of a solution. Often, to understand the problem is to solve
- Breaking the problem into smaller parts will often make solving
it much easier. Solve each part separately.
- The resources for problem solving are immense and ubiquitous.
- You can always do something.
- A problem is not a punishment; it is an opportunity to increase
the happiness of the world, an opportunity to show how powerful you really
- The formulation of a problem determines the range of choices: the
questions you ask determine the answers you receive.
- Be careful not to look for a solution until you understand the problem,
and be careful not to select a solution until you have a whole range of
- The initial statement of a problem often reflects a preconceived
- A wide range of choices (ideas, possible solutions) allows you to
choose the best from among many. A choice of one is not a choice.
- People work to implement their own ideas and solutions much more
energetically than they work to implement others' ideas and solutions.
- Remember the critical importance of acceptance in solving problems.
A solution that is technologically brilliant but sociologically stupid
is not a good solution.
- When the goal state is clear but the present state is ambiguous,
try working backwards.
- Procrastinators finish last.
- Denying a problem perpetuates it.
- Solve the problem that really exists, not just the symptoms
of a problem, not the problem you already have a solution for, not
the problem you wish existed, and not the problem someone else thinks
- A maker follows a plan; a creator produces a plan.
- Creativity is the construction of somethings new out of somethings
old, through effort and imagination.
Case study - assumption articulation
by Robert Harris
Let's say you are the manager of a factory that makes portable electric
generators. Your product is largely bolted together at final assembly by
workers using air wrenches. The wrenches, like those you hear screaming
in auto repair shops, make a lot of noise, hurting the workers' hearing
and job satisfaction. Your problem is, "How can we reduce the noise made
by these air wrenches?"
Note that as with most problem statements, the problem as stated implies
certain solutions. If you simply accepted the problem as stated, you would
probably think of some possible alternatives like these:
But instead of this, you decide to do some assumption articulation. Here
are some of the assumptions being made:
- put silencers or mufflers on the wrenches
- build a sound proof room for the wrench assembly
- install lead curtains around the assembly area to soak up the noise
- install a sound "canceler"
As you think about these assumptions, some new ideas come to you:
- Air wrenches are noisy.
- We must use air wrenches to put the parts together.
- People must use the air wrenches.
- We must use wrenches.
- The fastening must take place in this area or in this factory.
- Bolts must be used to hold the pieces together.
- The employees don't like the noise.
Note that ideas like robots, deaf employees, adhesive bonding and so
on would not be suggested by the original form of the problem statement,
which is based on several perhaps unnecessary assumptions. A little assumption
articulation breaks our thinking out of these restraints and allows us
to see some new possibilities.
- Air wrenches are noisy. Are all air wrenches equally noisy?
Can we buy a quieter brand? Is there a "silent air wrench" being sold?
- We must use air wrenches to put the parts together. Why not
use manual wrenches, or electric wrenches, or hydraulic wrenches?
- People must use the air wrenches. Why not use robots? Can
we use the wrenches less? Rotate employees so that each one uses the wrenches
just a little each day.
- We must use wrenches. Why not use other tools? Nut drivers?
- The fastening must take place in this area of the factory.
Why not move it outside? Subcontract it? Put it in a special soundproof
- Bolts must be used to hold the pieces together. Why not rivets?
Spot welding? Adhesive? Screws? Clamps? Mold some of the pieces together
so they need not be bolted or fastened at all?
- The employees don't like the noise. Get employees who like
noise? Who don't hear it (like deaf people)? Give them ear muffs? Play
loud music to mask the noise?