I invented the term "Object-Oriented", and I can tell you I did not have C++ in mind.
– Alan Kay
Writing software that fully meets its specifications is like walking on water. For each, the former is easy if the later is frozen and near impossible if fluid.
Clutter and confusion are failures of design, not attributes of information. There's no such thing as information overload.
– Edward Tufte
Humans do not always err. But they do when the things they use are badly conceived and designed.
– Donald Norman
Humans do make mistakes, but with proper design, the incidence of error and its effects can be minimized.
– Donald Norman
Rule of thumb: if you think something is clever and sophisticated, beware - it is probably self-indulgence.
– Donald Norman
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.
– C.A.R. Hoare
In the development of our understanding of complex phenomena, the most powerful tool available to the human intellect is abstraction.
– C.A.R. Hoare
Humans can write music, start wars, build cities, create art, fall in love, dream of colonizing the solar system, but they cannot write bug-free COBOL.
– James Martin
Ordre ex chaos is a theme in the natural sciences, and we shouldn't expect the science of design to be any different.
– James O. Coplien
We are like a middle-aged couple who have spent so much of their adult lives trying to guess what their retirement funds would be that they have never taken the time to make plans and set aside the money needed to have a retirement fund. The importance of the goals seems to overwhelm us, and we do not take the time and effort to do what is necessary to actually reach them.
– Norman Fenton/Austin Melton
When you plan your next project, leave time at the end to administer a brief evaluation to the people involved. Remember to include these basic questions: What worked? What didn't? What could have been done better? What are some specific suggestions for improvement? Then take time to read over the answers, asking what you learned from the experience. Before beginning your next project, reflect on these lessons and include them in your plans.
– Diane Dreher
The purpose of software engineering is to control complexity, not to create it.
– Pamela Zave
Elegance: The Mona Lisa has it, and so does the binary search algorithm. The Golden Gate Bridge has it, as do the World Wide Web, Visicalc, Smalltalk and the U.S. Constitution. Public-key cryptography and Michelangelo's Pieta also have it.
– Gary H. Anthes
Beauty is more important in computing than anywhere else in technology. [...] Beauty is important in engineering terms because software is so complicated. Complexity makes programs hard to build and potentially hard to use; beauty is the ultimate defense against complexity
– David Gelernter
Where a new sytem concept or new technology is used, one has to build a system to throw away, for even the best planning is not so omniscient as to get it right the first time.
– Fred Brooks
When you can measure what you are 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 meagre and unsatisfactory kind: it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the stage of science.
– Lord Kelvin
Denn wer ist unter euch, der einen Turm bauen will und setzt sich nicht zuvor hin und überschlägt die Kosten, ob er genug habe, um es auszuführen?
– Lukas 14,28
The tools we use have a profound (and devious!) influence on our thinking habits, and, therefore, on our thinking abilities.
– Edsger W. Dijkstra, How do we tell truths that might hurt?
The art of programming is the art of organizing complexity.
– Edsger W. Dijkstra
As long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem. In this sense the electronic industry has not solved a single problem, it has only created them - it has created the problem of using its products.
– Edsger W. Dijkstra, The Humble Programmer
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.
(Vollkommenheit entsteht offensichtlich nicht dann, wenn man nichts mehr hinzuzufügen hat, sondern wenn man nichts mehr wegnehmen kann.)
– Antoine de Saint-Exupéry, Terre des Hommes (Wind, Sand und Sterne)
Language shapes the way we think and determines what we can think about.
– Benjamin Lee Whorf, Language, Thought, and Reality
Software design is hard, and we need all the help we can get.
– Bjarne Stroustrup
The most fundamental problem in software development is complexity. There is only one basic way of dealing with complexity: Divide and conquer.
– Bjarne Stroustrup
90% of the PC problems are between the keyboard and the chair.
A perfect method should not only be an efficient one, as respects the accomplishment of the objects for which it is designed, but should in all parts and processes manifest a certain unity and harmony.
– George Boole, An Investigation of the Laws of Thought
Computer sind wie die Feen in einem Märchen. Sie erfüllen einem jeden Wunsch - sie sagen einem aber nicht, was man sich wünschen soll.
Skipping deadlines is a drug: it's addictive and it'll kill you.
– Kent Beck
Everything in software changes. The requirements change. The design changes. The business changes. The technology changes. The team members change. The problem isn't change, per se, because change is going to happen; the problem, rather, is the inability to cope with change when it comes.
– Kent Beck, Extreme Programming Explained
As the saying goes "Nine women cannot make a baby in one month." (And contrary to what I've heard from some managers, eighteen women still can't make a baby in one month.)
– Kent Beck, Extreme Programming Explained
Asking for efficiency and adaptability in the same program is like asking for a beautiful and modest wife. Although beauty and modesty have been known to occur in the same woman, we'll probably have to settle for one or the other.
– Gerald Weinberg, The Psychology of Computer Programming
And let there be no mistake about it: the human eye has an almost infinite capacity for not seeing what it does not want to see. People who have specialized in debugging other people's programs can verify this assertion with literally thousands of cases.
– Gerald Weinberg, The Psychology of Computer Programming
If you wait for a complete and perfect concept to germinate in your mind, you are likely to wait forever.
– Tom DeMarco
Inside every large program there is a small program trying to get out.
– C.A.R. Hoare
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
– Donald Knuth
More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason - including blind stupidity.
– W.A. Wulf, A Case Against the GOTO
Rules of Optimization:
Rule 1: Don't do it.
Rule 2 (for experts only): Don't do it yet.
– Michael A. Jackson
When the code and the comments disagree, both are probably wrong.
– Norman Schryer
Nothing is fool-proof to a sufficiently talented fool.
Computer science is no more about computers than astronomy is about telescopes.
– Edsger W. Dijkstra
One of the most important things a code reader does is determine whether the code makes sense to a reader. If it is confusing to read, it probably reflects confused thinking about the problem. If it doesn't contain an error yet, it will after a maintenance programmer makes any change to it.
– Cem Kaner/Jack Falk/Hung Quoc Nguyen, Testing Computer Software
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
– Martin Fowler, Refactoring
Program testing can be used to show the presence of bugs, but never to show their absence!
– Edsger W. Dijkstra, Notes on Structured Programming
I love deadlines. I like the whooshing sound they make as they go by.
– Douglas Adams, The Salmon of Doubt
Human errors can only be avoided if one can avoid the use of humans.
– David Parnas/Paul Clements, A Rational Design Process: How and Why to Fake It
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
– Bjarne Stroustrup