Proverbs and quotations
(from Embedded Muse 98 [] and other places)

A clever person solves a problem.
A wise person avoids it.
- Einstein

No matter what the problem is,
it's always a people problem.
- Jerry Weinberg

If the code and the comments disagree, both are probably wrong.

Good judgment comes from experience... and experience comes from bad judgment.
- Fred Brooks

Plan to throw one away, you will anyhow.(Fred Brooks)

Choose two:

Furious activity is no substitute for understanding.

To go faster, slow down. Everybody who knows about orbital mechanics understands that.
- Scott Cherf

There's no time to stop for gas, we're already late.
- Karin Donker

Discipline is the best tool.
Design first, then code.
Don't patch bugs out, rewrite them out.
Don't test bugs out, design them out.

If you've found 3 bugs in a program, best estimate is that there are 3 more.

For every 7 faults corrected, one of at least equal severity injected.
- N.E. Adams

60% of product cost comes after initial shipment.

If you can't write it down in English, you can't program it.

If something is worth doing once, it's worth building a tool to do it.

Abraham Lincoln reportedly said that, given eight hours to chop down a tree, he'd spend six sharpening his axe.
- TidBITS 654, quoted by Derek K. Miller, via Art Evans

Your problem is another's solution;
Your solution will be his problem.

The significant problems we face cannot be solved by the same level of thinking that created them.
- Albert Einstein

Or, as Brian Kernighan put it:
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

do it
do it right
do it right now
- Bobby Riggs

It is not enough to do your best: you must know what to do, and THEN do your best.
- W. Edwards Deming

One test is worth a thousand opinions.

I am a design chauvinist. I believe that good design is magical and not to be lightly tinkered with. The difference between a great design and a lousy one is in the meshing of the thousand details that either fit or don't, and the spirit of the passionate intellect that has tied them together, or tried. That's why programming - or buying software - on the basis of "lists of features" is a doomed and misguided effort. The features can be thrown together, as in a garbage can, or carefully laid together and interwoven in elegant unification, as in APL, or the Forth language, or the game of chess.
- Ted Nelson

Software is too important to be left to programmers.
- Meilir Page-Jones.

If you think good architecture is expensive, try bad architecture
- Brian Foote and Joseph Yoder

While we all know that unmastered complexity is at the root of the misery, we do not know what degree of simplicity can be obtained, nor to what extent the intrinsic complexity of the whole design has to show up in the interfaces. We simply do not know yet the limits of disentanglement. We do not know yet whether intrinsic intricacy can be distinguished from accidental intricacy.
- E. W. Dijkstra

A definition:
Recursive: adj. see Recursive

"When in doubt, use brute force." (Ken Thompson)

"Avoid asymmetry." (Andy Huber)

"Details count." (Peter Weinberger)

"Of all my programming bugs, 80% are syntax errors. Of the remaining 20%, 80% are trivial logical errors. Of the remaining 4%, 80% are pointer errors. And the remaining 0.8% are hard." (Marc Donner)

"A {specification, design, procedure, test plan} that will not fit on one page of 8.5-by-11 inch paper cannot be understood." (Mark Ardis)

"The structure of a system reflects the structure of the organization that built it." (Richard E. Fairley)

"The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time. (Tom Cargill)

"Good customer relations double productivity." (Larry Bernstein)

"Plan to throw one away, you will anyhow." (Fred Brooks)

"Furious activity is no substitute for understanding." (H. H. Williams)

10. There are at least 10 types of capacitors.
9. Theory tells you how a circuit works, not why it does not work.
8. Not everything works according to the specs in the databook.
7. Anything practical you learn will be obsolete before you use it,
except the complex math, which you will never use.
6. Always try to fix the hardware with software.
5. Engineering is like having an 8 a.m. class and a late afternoon lab
every day for the rest of your life.
4. Overtime pay? What overtime pay?
3. Managers, not engineers, rule the world.
2. If you like junk food, caffeine and all-nighters, go into software.
1. Dilbert is not a comic strip, it's a documentary.
Joke for the Week from Embedded Muse 129
Late at Night Before Beta Test

Whose lines these are I think I know.
He's on another project though;
He should not mind my pausing here
to clarify the logic flow.

... though Management does NOT appear
to sanction major changes here.
"Fix it not 'fore it shall break"
and Beta Test is looming near.

Still, best case good ideas enmeshed
with side effects will fail the test
of year two thousand (coming soon).
Change just two lines, and then I'll rest.

Half vast possibilities run deep
but I have promises to keep
And lines to code before I sleep,
And lines to code before I sleep.

by Robot Frost (with apologies to Robert)


I have always wished that my computer would be as
easy to use as my telephone. My wish has come
true. I no longer know how to use my telephone.
- Bjarne Stroustrup

Rajit Manohar's collection of quotes.

Great Quotes from Great Skeptics