Quotes for Software Geeks
The best way to predict the future is to invent it. — Alan Kay
A thing done well can be done better. — Gianni Agnelli
Software Itself
Software is like entropy: It is difficult to grasp, weighs nothing, and obeys the Second Law of Thermodynamics; i.e., it always increases. — Norman Augustine
Software is a gas; it expands to fill its container. — Nathan Myhrvold
Software is a great combination between artistry and engineering. — Bill Gates
People who are really serious about software should make their own hardware. — Alan Kay
Software gets slower faster than hardware gets faster. — Niklaus E. Wirth (Wirth’s Law)
In software systems, it is often the early bird that makes the worm. — Alan J. Perlis from Epigrams on Programming
Einstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer — Frederick “Fred” P. Brooks
Hardware eventually fails. Software eventually works. — Michael Hartung
Any fool can use a computer. Many do. — Ted Nelson
It has been said that the great scientific disciplines are examples of giants standing on the shoulders of other giants. It has also been said that the software industry is an example of midgets standing on the toes of other midgets. — Alan Cooper
Artificial Intelligence
Software is eating the world, but AI is going to eat software. — Jensen Huang
Artificial intelligence is the science of making machines do things that would require intelligence if done by men. — Marvin Minsky
The question of whether a computer can think is no more interesting than the question of whether a submarine can swim. — Edsger W. Dijkstra
Some people worry that artificial intelligence will make us feel inferior, but then, anybody in his right mind should have an inferiority complex every time he looks at a flower. — Alan Kay
Real stupidity beats artificial intelligence every time. — Terry Pratchett
The danger of computers becoming like humans is not as great as the danger of humans becoming like computers. — Konrad Zuse
Computers are like humans — they do everything except think. — John von Neumann
No computer has ever been designed that is ever aware of what it’s doing; but most of the time, we aren’t either. — Marvin Minsky
Standards
The nice thing about standards is that there are so many to choose from. — Andrew S. Tannenbaum
Whenever a major organization develops a new system as an official standard for X, the primary result is the widespread adoption of some simpler system as a de facto standard for X. — John F. Sowa (Sowa’s Law of Standards)
Software Architecture and Design
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. The first method is far more difficult. It demands the same skill, devotion, insight, and even inspiration as the discovery of the simple physical laws which underlie the complex phenomena of nature. It also requires a willingness to accept objectives which are limited by physical, logical, and technological constraints, and to accept a compromise when conflicting objectives cannot be met. No committee will ever do this until it is too late. … The price of reliability is the pursuit of the utmost simplicity. It is a price which the very rich find most hard to pay. — C.A.R. “Tony” Hoare
If you think good architecture is expensive, try bad architecture. — Brian Foote and Joseph Yoder
Those who can imagine anything, can create the impossible. — Alan Turing
Conceptual integrity is the most important consideration in system design. — Frederick “Fred” P. Brooks
Software is not limited by physics, like buildings are. It is limited by imagination, by design, by organization. In short, it is limited by properties of people, not by properties of the world. — Ralph Johnson
Just because people tell you it can’t be done, that doesn’t necessarily mean that it can’t be done. It just means that they can’t do it. — Anders Hejlsberg
…the purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise. — Edsger W. Dijkstra
A common mistake that people make when trying to design something completely foolproof was to underestimate the ingenuity of complete fools. — Douglas Adams
A good designer must rely on experience, on precise, logic thinking; and on pedantic exactness. No magic will do. — Niklaus Wirth
Assumptions are the mother of all failures. — Said Ouissal
Judge a man by his questions rather than by his answers and the corollary He must be very ignorant for he answers every question he is asked. — Voltaire (François-Marie Arouet)
Re graphics: A picture is worth 10K words — but only those to describe the picture. Hardly any sets of 10K words can be adequately described with pictures. — Alan J. Perlis
Simplicity
Make everything as simple as possible, but not simpler. — Albert Einstein
Truth is ever to be found in simplicity; and not in the multiplicity and confusion of things. — Sir Isaac Newton
Simple things should be simple, complex things should be possible. — Alan Kay
The lurking suspicion that something could be simplified is the world’s richest source of rewarding challenges. — Edsger W. Dijkstra
Increasingly, people seem to misinterpret complexity as sophistication, which is baffling – the incomprehensible should cause suspicion rather than admiration. — Niklaus Wirth
Developers are drawn to complexity like moths to a flame, frequently with the same result. — Neal Ford
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
The belief that complex systems require armies of designers and programmers is wrong. A system that is not understood in its entirety, or at least to a significant degree of detail by a single individual, should probably not be built. — Niklaus Wirth
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. — Dennis Ritchie
A primary cause of complexity is that software vendors uncritically adopt almost any feature that users want. — Niklaus Wirth
The Art of Programming
Controlling complexity is the essence of computer programming. — Brian W. Kernighan
The code you write makes you a programmer. The code you delete makes you a good one. The code you don’t have to write makes you a great one. — Mario Fusco
Oh, I’ve certainly never been short of pleasure. Do you know what real pleasure is? A creative act. A pleasure without creativity is dead boring. — Gianni Agnelli
Some problems are better evaded than solved. — C.A.R. “Tony” Hoare
I don’t know how many of you have ever met Dijkstra, but you probably know that arrogance in computer science is measured in nano-Dijkstras — Alan Kay
The fundamental problem with program maintenance is that fixing a defect has a substantial chance of introducing another. — Frederick “Fred” P. Brooks
Immutability changes everything. — Pat Helland
A good programmer is someone who always looks both ways before crossing a one-way street. — Doug Linder
The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague. — Edsger W. Dijkstra
Programming requires more concentration than other activities. It’s the reason programmers get upset about ‘quick interruptions’ – such interruptions are tantamount to asking a juggler to keep three balls in the air and hold your groceries at the same time. — Steve McConnell
We should forget about small efficiences, say, about 97% of the time. Premature optimization is the root of all evil. — Donald Knuth
Premature optimization is the root of all evil in programming. — C.A.R. “Tony” Hoare
… we do not consider it as good engineering practice to consume a resource lavishly just because it happens to be cheap. — Niklaus E. Wirth
Every program has (at least) two purposes: the one for which it was written, and another for which it wasn’t. — Alan J. Perlis
Good programmers never write what they can steal or borrow. — Jeff Atwood
Programming is not a science. Programming is a craft. — Richard Stallman
You cannot teach beginners top-down programming, because they don’t know which end is up. — C.A.R. “Tony” Hoare
All problems in computer science can be solved by another level of indirection… Except for the problem of too many layers of indirection. — David Wheeler
Everybody has a testing environment. Some people are lucky enough to have a totally separate environment to run production in. — Michael Stahnke
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors — Unknown
The trouble with programmers is that you can never tell what a programmer is doing until it’s too late. — Seymour Cray
Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris. — Larry Wall
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
I couldn’t resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years. — C.A.R. “Tony” Hoare
One bad programmer can easily create two new jobs a year. — David Parnas
Before software can be reusable it first has to be usable. — Ralph Johnson
The three most dangerous things in the world are a programmer with a soldering iron, a hardware type with a program patch and a user with an idea. — Rick Cook
Some people, when confronted with a problem, think, “I know, I’ll use threads,” and then they have two problems. – Ned Batchelder
We don’t do this because it’s easy. We do this because we thought it would be easy. — Unknown (The Programmer’s Credo)
Much of the excitement we get out of our work is that we don’t really know what we are doing. — Edsger Dijkstra
To iterate is human, to recurse divine. — Peter Deutsch
Good programmers don’t just write programs. They build a working vocabulary. — Guy L. Steele Jr.
On two occasions, I have been asked [by members of Parliament], “if you put into the machine wrong figures, will the right answers come out?”…I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question. — Charles Babbage
As a program is evolved its complexity increases unless work is done to maintain or reduce it. — Meir “Manny” Lehman (Lehman’s law of Increasing Complexity)
Without requirements or design, programming is the art of adding bugs to an empty text file. — Louis Srygley
The key to understanding complicated things is knowing what not to look at. — Gerald Jay Sussman
Nothing brings fear to my heart more than a floating point number. — Gerald Jay Sussman
On Languages (Especially Lisp)
A programming language is a tool that has profound influence on our thinking habits. — Edsger Dijkstra
Computer language design is just like a stroll in the park. Jurassic Park, that is. — Larry Wall
Some people prefer not to commingle the functional, lambda-calculus part of a language with the parts that do side effects. It seems they believe in the separation of Church and state. — Guy L. Steele Jr.
C treats you like a consenting adult. Pascal treats you like a naughty child. Ada treats you like a criminal. — Bruce Powel Douglass
If you give someone Fortran, he has Fortran. If you give someone Lisp, he has any language he pleases. — Guy L. Steele Jr.
I did write some code in Java once, but that was the island in Indonesia. — Richard Stallman
I made up the term “object-oriented,” and I can tell you I did not have C++ in mind. — Alan Kay
SQL, Lisp, and Haskell are the only programming languages that I’ve seen where one spends more time thinking than typing. — Philip Greenspun
My being a teacher had a decisive influence on making language and systems as simple as possible so that in my teaching, I could concentrate on the essential issues of programming rather than on details of language and notation. — Niklaus Wirth
Anyone could learn Lisp in one day, except that if they already knew Fortran, it would take three days. — Marvin Minsky
A good programming language is a conceptual universe for thinking about programming. — Alan Perlis
I remember being impressed with Ada because you could write an infinite loop without a faked up condition. The idea being that in Ada the typical infinite loop would be normally be terminated by detonation. — Larry Wall
Programming in Basic causes brain damage. — Edsger Dijkstra
Job Control Language is the worst programming language ever designed anywhere by anybody for any purpose. — Frederick “Fred” P. Brooks
Lisp has all the visual appeal of oatmeal with fingernail clippings mixed in. — Larry Wall
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
FORTRAN was the language of choice for the same reason that three-legged races are popular. — Ken Thompson
As a linguist, I don’t think of Ada as a big language. Now, English and Japanese, those are big languages. Ada is just a medium-sized language. — Larry Wall
Object oriented programs are offered as alternatives to correct ones. — Edsger W. Dijkstra
The greatest single programming language ever designed. — Alan Kay, on Lisp
Lisp has jokingly been called “the most intelligent way to misuse a computer.” I think that description is a great compliment because it transmits the full flavor of liberation: it has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts. — Edsger W. Dijkstra
Computer languages of the future will be more concerned with goals and less with procedures specified by the programmer. — Marvin Minsky
Take Lisp, you know its the most beautiful language in the world — at least up until Haskell came along. — Larry Wall
A programming language is low level when its programs require attention to the irrelevant. — Alan J. Perlis
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense. — Edsger Dijkstra
Lisp isn’t a language, it’s a building material. — Alan Kay
Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot. — Eric S. Raymond
Greenspun’s Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp. — Philip Greenspun
A language that doesn’t affect the way you think about programming is not worth knowing. — Alan Perlis
Lisp … made me aware that software could be close to executable mathematics. — L Peter Deutsch
[Emacs] is written in Lisp, which is the only computer language that is beautiful. — Neal Stephenson
Writing
Writing improves in direct ratio to the number of things we can keep out of it that shouldn’t be there — William Zinsser
I didn’t have time to write a short letter, so I wrote a long one instead. — Mark Twain
Writing is thinking on paper — William Zinsser
Learning
Success is a lousy teacher. It seduces smart people into thinking they can’t lose. — Bill Gates
I, myself, have had many failures and I’ve learned that if you are not failing a lot, you are probably not being as creative as you could be, you aren’t stretching your imagination. — John Backus
The only real mistake is the one from which we learn nothing. — John Powell
Good judgment comes from experience and experience comes from bad judgment. — Frederick “Fred” P. Brooks
You need the willingness to fail all the time. You have to generate many ideas and then you have to work very hard only to discover that they don’t work. And you keep doing that over and over until you find one that does work. — John Backus
I have never let my schooling interfere with my education. — Mark Twain
You can learn more from failure than success. In failure you’re forced to find out what part did not work. But in success you can believe everything you did was great, when in fact some parts may not have worked at all. Failure forces you to face reality. — Frederick “Fred” P, Brooks
Project Management
I have always found that plans are useless, but planning is indispensable. — Dwight D. Eisenhower
Later Equals Never. — Dave LeBlanc (LeBlanc’s Law)
Weeks of programming can save you hours of planning. — Anonymous
Adding manpower to a late software project makes it later — Frederick “Fred” P. Brooks
Nine people can’t make a baby in a month or sometimes the bearing of a child takes nine months, no matter how many women are assigned. — Frederick “Fred” P. Brooks
Never put off till tomorrow what may be done day after tomorrow just as well. — Mark Twain
Technology is dominated by two types of people: Those who understand what they do not manage. Those who manage what they do not understand. — Archibald Putt (Putt’s Law)
It’s harder than you might think to squander millions of dollars, but a flawed software development process is a tool well suited to the job. — Alan Cooper
When to use iterative development? You should use iterative development only on projects that you want to succeed. — Martin Fowler
The best way to get a project done faster is to start sooner. — Jim Highsmith
First law of Bad Management: If something isn’t working, do more of it. — Tom DeMarco
How does a project get to be a year late? One day at a time. — Frederick “Fred” P. Brooks
I love deadlines. I love the whooshing noise they make as they go by. — Douglas Adams
Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates
If we wish to count lines of code, we should not regard them as “lines produced” but as “lines spent.” — Edsger Dijkstra
People and Teams
True greatness is measured by how much freedom you give to others, not by how much you can coerce others to do what you want. — Larry Wall
If we want to build great products, we need great people. If we want to attract and keep great people, we need great principles. — Jim Highsmith
We can debug relationships, but it’s always good policy to consider the people themselves to be features. People get annoyed when you try to debug them. — Larry Wall
The quality of results from any collaboration effort are driven by trust and respect. — Jim Highsmith