Below are some of my favorite Software Engineering quotes.
A clever person solves a problem.
A wise person avoids it.
André Bensoussan once explained to me the difference between a programmer and a designer:
“If you make a general statement, a programmer says, ‘Yes, but…’
while a designer says, ‘Yes, and…'”
No matter what the problem is,
it’s always a people problem.
Wexelblat’s Scheduling Algorithm:
Craziness is doing the same thing and expecting a different result.
Tom DeMarco, rephrasing Einstein, who said
Insanity: doing the same thing over and over and expecting different results.
“There’s no time to stop for gas, we’re already late”
— Karin Donker
Deming’s 14 points
- Create constancy of purpose.
- Adopt the new philosophy.
- Cease dependence on mass inspection to meet quality.
- Minimize total cost, not first price of supplies.
- Improve constantly the system of production and service.
- Institute training on the job.
- Institute leadership.
- Drive out fear.
- Break down barriers between departments.
- Eliminate slogans, exhortations, and numerical targets.
- Eliminate work standards (quotas) and management by goal.
- Remove barriers that rob workers, engineers, and managers of their right to pride of workmanship.
- Institute a vigorous program of education and self-improvement.
- Put everyone in the company to work to accomplish the transformation.
We know about as much about software quality problems as they knew about the Black Plague in the 1600s. We’ve seen the victims’ agonies and helped burn the corpses. We don’t know what causes it; we don’t really know if there is only one disease. We just suffer — and keep pouring our sewage into our water supply.
— Tom Van Vleck
The Troops Know
- The schedule doesn’t have enough time for maintenance in it.
- A lot of bugs get past the tests.
- Most old code can’t be maintained.
To go faster, slow down. Everybody who knows about orbital mechanics understands that.
— Scott Cherf
- 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 don’t understand it, you can’t program it.
- If you didn’t measure it, you didn’t do it.
If something is worth doing once, it’s worth building a tool to do it.
Your problem is another’s solution;
Your solution will be his problem.
- If you’ve found 3 bugs in a program, best estimate is that there are 3 more.
- 60% of product cost comes after first shipment.
The significant problems we face cannot be solved by the same level of thinking that created them.
— Albert Einstein
On the radio the other night, Jimmy Connors said the best advice he ever got was from Bobby Riggs:
- do it
- do it right
- do it now
It is not enough to do your best: you must know what to do, and THEN do your best.
— W. Edwards Deming
A leader is best when people barely know that he exists.
Less good when they obey and acclaim him.
Worse when they fear and despise him.
Fail to honor people, and they fail to honor you.
But of a good leader, when his work is done, his aim fulfilled,
they will say, “We did this ourselves.”
You must be the change
You wish to see in the world
Experiment escorts us last,
His pungent company
Will not allow an axiom
— Emily Dickinson
when the cart stops
do you whip the cart
or whip the ox?
Q: How many QA testers does it take to change a lightbulb?
A: QA testers don’t change anything. They just report that it’s dark.
Q: How many software engineers does it take to change a lightbulb?
A: Just one. But the house falls down.
One test is worth a thousand opinions.
“If you didn’t write it down, it didn’t happen.”
This saying is popular among scientists (doing experiments), but I believe it applies to software testing, particularly for real-time systems.
We reject kings, presidents, and voting.
We believe in rough consensus and running code.
—Dave Clark (1992)
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 woven in elegant unification, as in APL, or the Forth language, or the game of chess.
— Ted Nelson
“If you think good architecture is expensive, try bad architecture.”
— Brian Foote and Joseph Yoder
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
… 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 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, Communications of the ACM, Mar 2001, Vol. 44, No. 3
You can only find truth with logic if you have already found truth without it.
— Gilbert Keith Chesterton (1874-1936) “ The Man who was Orthodox“, via Paul Black