Software Engineering Stories


Software Engineering Proverbs

collected by Tom Van Vleck

cartoon, building tower from top down

Drawn by Angus Macdonald

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

-- Einstein

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.

Jerry Weinberg

Wexelblat's Scheduling Algorithm:

Choose two:

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 again and expecting different results.

"There's no time to stop for gas, we're already late"

-- Karin Donker

Deming's 14 points

  1. Create constancy of purpose.
  2. Adopt the new philosophy.
  3. Cease dependence on mass inspection to achieve quality.
  4. Minimize total cost, not initial price of supplies.
  5. Improve constantly the system of production and service.
  6. Institute training on the job.
  7. Institute leadership.
  8. Drive out fear.
  9. Break down barriers between departments.
  10. Eliminate slogans, exhortations, and numerical targets.
  11. Eliminate work standards (quotas) and management by objective.
  12. Remove barriers that rob workers, engineers, and managers of their right to pride of workmanship.
  13. Institute a vigorous program of education and self-improvement.
  14. 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

When somebody begins a sentence with "It would be nice if..." the right thing to do is to wait politely for the speaker to finish. No project ever gets around to the it-would-be-nice features: or it they do, they regret it. Wait for sentences that begin "We have to..." and pay close attention, and see if you agree.

-- Tom Van Vleck

The Troops Know

-- Tom Van Vleck

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

-- Scott Cherf

Everybody Knows:

Everybody Knows:

Everybody Knows:

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

-- Tom Van Vleck

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

Everybody Knows:

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:

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."

-- Lao-Tzu

You must be the change
You wish to see in the world

-- Gandhi (now a bumper sticker)

Experiment escorts us last,
His pungent company
Will not allow an axiom
An opportunity.

-- 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.

Kerry Zallar

Q: How many software engineers does it take to change a lightbulb?
A: Just one. But the house falls down.

Andrew Siwko

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.

--Larry Zana

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 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, Communications of the ACM, Mar 2001, Vol. 44, No. 3

About the use of language: it is impossible to sharpen a pencil with a blunt ax. It is equally vain to try to do it with ten blunt axes instead.

-- E. W. Dijkstra

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

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

Here is a great page about some kinds of management actually observed, and some insights on quality processes, by Joseph Koshy, via Robert Watson

"If you want to build a ship, don't drum up the people to gather wood, divide the work, and give orders. Instead, teach them to yearn for the vast and endless sea."

-- Antoine De Saint-Exupery

The First Rule of Program Optimization: Don't do it.

The Second Rule of Program Optimization (for experts only!): Don't do it yet.

-- Michael A. Jackson

My friend Roger once showed me his plan for a file system. He planned so many months to write the code, so many to debug, and so on. I said, "You mean you plan to write code with bugs mixed in, and then strain the bugs out?" He replied, "Sounds kind of dumb when you put it like that."

-- Tom Van Vleck part of a longer note.

When I worked in the Operations Research department of a big company, my boss taught me to ask, every 30 minutes, "What are we trying to optimize?" so that I wouldn't waste the next 30 minutes.

-- Tom Van Vleck

When asked how to respond when a root cause analysis proposed "human error" as a cause:

Quote Nancy Leveson: "Human Error is a Symptom, Not a Cause." And then read her book.

-- Earl Boebert

Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often. What you eat before you step onto the scale determines how much you will weigh, and the software-development techniques you use determine how many errors testing will find.

-- Steve McConnell

Suppose you notice your neighbor filling the gas tank of his car from the garden hose. You tell him, "That won't work." And he says, "I know, but it's much cheaper."

-- Tom Van Vleck

You can't rewrite a program too many times, especially if you make sure it gets smaller and faster each time.

-- Steve Johnson, Computerworld, JUL 10, 2008

99% should be a failing grade. I have encouraged friends who teach programming to grade their exercises this way: one bug = failure. Zero Defects is the only acceptable goal.

-- My deduction from Max Barry's nice post: "99".

Miró's grandson wrote that his grandfather had once watched the architect Gaudí on site at the Sagrada Familia. Gaudí did not make drawings: he would simply gesture at the foreman. "Do thus," he told the foreman, and showed him a staircase with a gesture.

Someone who has never worked on a cathedral-like project might think "hmm, architect makes no drawings, that's why it has taken 138 years and isn't done yet." But we know, that's not the point. If that's how long it takes to get it right, then that's how long it has to take.

-- Tom Van Vleck

I dreamed about computer security last night and was trying to explain the problem to Steve Cook. In the dream I said, "Suppose you live in a house with a hundred windows and doors. And as you drop off to sleep, you say 'Gosh, I hope all the windows and doors are shut and locked.' Hope is not enough."

(We have all watched heist movies where the ex-con bank robber goes back for one more score. And the first thing he does is hire a guy who can disable the bank's alarms, and another guy who can crack the safe. And then he makes a plan with lots of diagrams. We never see the bank guys making a plan to not get heisted.)

-- Tom Van Vleck

08 Nov 2023