Software Aphorisms

Pithy sayings capturing software truths

Happiness is not achieved through correct software.

"If you don't like needles in your haystack, don't put your haystack by a needle factory."
            -- Mark Sadler, SSTC, Salt Lake City, Utah, 4 May 2006

"The study of software engineering has yet to outgrow the mathematical roots from which it originated. Belief in the mathematical approach has resulted in a research culture where performing experiments is considered unimportant and every attempt is made to remove human characteristics from consideration."
            -- Derek M. Jones
                The New C Standard, Preface, page 3, v 1.0, May 30, 2005
http://www.coding-guidelines.com/cbook/sent787.pdf (accessed 16 January 2009)

Testing is process quality control, not product quality control:
"... if test shows too many defects don't send software back to fix - send your developers to get re-trained, add more code reviews etc."
            -- Alexei Polkhanov <apolkhanov@relic.com>
                comp.software-eng news group, 13 June 2007

The same semantics may be expressed with different syntax.
Syntax can be directly manipulated; semantics cannot.

Rice's theorem proves that any non-trivial software property is undecidable.

"... when you can measure what you're speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind: it may be the beginning of knowledge, but you have scarcely, in your thoughts, advanced it to the stage of understanding."
            -- William Thomson (Lord Kelvin) (1824--1907)
                Popular Lectures and Addresses 1:73, 1891-4.
                originally: Lecture to the Institution of Civil Engineers, 3 May 1883

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

"You seem to be under the impression that quality is an attribute. It isn't; it's a relationship between some person and a product or service."
            -- Michael Bolton
              comp.software.testing 4 Apr 2007
He credits Jerry Weinberg: "Quality is value to some person" Quality Software and Testing, 4(1):7, April 2006 http://www.tassq.org/quarterly/docs/TASSQuarterly0604B.pdf (accessed 16 January 2009)

Lines of code are a cost, not an asset.
            -- John Launchbury, HCSS, Linthicum, Maryland, 6 (or 7?) March 2008
He attributes the notion to Dijkstra in 1975.

"An elegant tool to do the wrong thing."
            -- Dick Hamlet 2003

"Pictures tend to mislead, and beautiful pictures tend to mislead beautifully."
            -- Dan Greer 7 May 2007

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

"... debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?"
            -- Brian W. Kernighan in Kernighan and Plauger, "The Elements of Programming Style", Chapter 2

    (Not a software aphorism, but still pretty good.)
"Problems worthy of attack
  prove their worth by hitting back."
            -- Piet Hein


Created Mon Feb 14 14:38:18 2005
by Paul E. Black  (paul.black@nist.gov)
Updated Mon Nov 20 11:24:12 2017
by Paul E. Black  (paul.black@nist.gov)