What's your favourite quote about programming?
One quote per answer, and please check for duplicates before posting!
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.
— Brian W. Kernighan
Walking on water and developing software from a specification are easy if both are frozen.
— Edward V Berard
It always takes longer than you expect, even when you take into account Hofstadter's Law.
— Hofstadter's Law
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
— Rick Osborne
You can have the project:
- Done On Time
- Done On Budget
- Done Properly
Some people, when confronted with a problem, think "I know, I'll use regular expressions."
Now they have two problems.
— Jamie Zawinski
In theory, there is no difference between theory and practice. But, in practice, there is.
— Jan L. A. van de Snepscheut
You can use an eraser on the drafting table or a sledgehammer on the construction site - Frank Lloyd Wright
Not exactly a programming quote but it most certainly applies.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
— Rick Cook
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
— Bill Gates
Nine people can't make a baby in a month.
— Fred Brooks, The Mythical Man-Month
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.
— Donald Knuth, Structured Programming with go to Statements, JACM Computing Surveys, Vol 6, No. 4, Dec. 1974, p.268
This is extracted from the below two paragraphs, which not only say why he comes to the above conclusion, but gives information on how to avoid this mistake:
There is no doubt that the grail of efficiency leads to abuse. Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
Yet we should not pass up our opportunities in that critical 3%. A good programmer will not be lulled into complacency by such reasoning, he will be wise to look carefully at the critical code; but only after that code has been identified. It is often a mistake to make a priori judgments about what parts of a program are really critical, since the universal experience of programmers who have been using measurement tools has been that their intuitive guesses fail. (…)
Debuggers don't remove bugs. They only show them in slow motion.
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.
If Java had true garbage collection, most programs would delete themselves upon execution.
— Robert Sewell
Computer Science is no more about computers than astronomy is about telescopes
— Edsger Dijkstra
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
— Edsger Dijkstra
There are only two kinds of languages: the ones people complain about and the ones nobody uses
— Bjarne Stroustrup
The best thing about a boolean is even if you are wrong, you are only off by a bit. - (Anonymous)
On two occasions I have been asked, "Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?" In one case a member of the Upper, and in the other a member of the Lower House put this question. I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.
— Charles Babbage
Arguably the first documented case of a programmer encountering stupid user questions.
I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone
-- Bjarne Stroustrup
It's all talk until the code runs.
— Ward Cunningham
Unicode support is not a “feature”. It is expected behaviour.
Granted, it is very specific, but it is my favourite because obsolete character sets are just too widely used still...
Commenting your code is like cleaning your bathroom - you never want to do it, but it really does create a more pleasant experience for you and your guests.
— Ryan Campbell
The fool wonders, the wise man asks.
— Benjamin Disraeli
Programming is like sex: one mistake and you have to support it for the rest of your life.
— Michael Sinz
Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher.
— Antoine de Saint-Exupéry, French writer (1900-1944), Terre des Hommes (1939)
(It would seem that perfection is attained not when there is nothing left to add, but when there is nothing left to take away.)
— Chris Heilmann
Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.
Or, less formally,
Given enough eyeballs, all bugs are shallow.