Every now and again I get an urge to repeat some quote on programming. But I can't always find what I'm looking for when I go search for it on Google, in order to quote it accurately and cite the source. So here's a list of some of my favorites which I'll try to keep up to date as I find new ones:
The essence of architecture is the suppression of information not necessary to the task at hand, and so it is somehow fitting that the very nature of architecture is such that it never presents its whole self to us but only a facet or two at a time.
Increasingly, people seem to misinterpret complexity as sophistication, which is baffling---the incomprehensible should cause suspicion rather than admiration. Possibly, this trend results from a mistaken belief that using a somewhat mysterious device confers an aura of power on the user.
The cheapest, fastest, and most reliable components of a computer system are those that aren't there.
Weeks of programming can save you hours of planning.
90% of a program's execution time is spent in only 10% of its code. The standard inference from this rule is that programmers should find that 10% of the code and optimize it ... But a second inference is just as important: programmers can deoptimize the other 90% of the code (in order to make it easier to use, maintain, etc.)
Some facets of usability such as cancellation, undo, progress bars, and others require software architecture support. Because they reach so deeply into the architecture of a system, these facets must be built into the system from its inception rather than added after an initial system design and user interface has been achieved.
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.
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.
That’s the thing about people who think they hate computers. What they really hate is lousy programmers.
There’s an old story about the person who wished his computer were as easy to use as his telephone. That wish has come true, since I no longer know how to use my telephone.
wally: "When I started programming, we didn't have any of these sissy "icons" and "windows". All we had were zeros and ones -- and sometimes we didn't even have ones. I once wrote a database using only zeros."
dilbert: "You had zeros? We had to use the letter "O"."
I mean, if 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say to yourself "Dijkstra would not have liked this", well, that would be enough immortality for me.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
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.
It's been proven there are at most three numbers you should hardcode when programming: 0, 1, and N. I've long been of the opinion that 1 should be avoided. But lately I'm becoming increasingly skeptical about zero.
Most computer technologists don't like to discuss it, but the importance of beauty is a consistent (if sometimes inconspicuous) thread in the software literature. Beauty is more important in computing than anywhere else in technology... Beauty is important in engineering terms because software is so complicated...
Beauty is our most reliable guide to achieving software's ultimate goal: to break free of the computer, to break free conceptually. Software is stuff unlike any other... Software's goal is to escape this gravity field, and every key step in software history has been a step away from the computer, toward forgetting about the machine and its physical structure and limitations -- forgetting that it can hold only so many bytes, that its memory is made of fixed size cells, that you refer to each cell by a numerical address.
Software needn't accept those rules and limitations. But as we throw off the limits, what guides us? How do we know where to head? Beauty is the best guide we have.
We must not forget that the wheel is reinvented so often because it is a very good idea; I've learned to worry more about the soundness of ideas that were invented only once.
And not just about programming, but about learning any subject:
To know where you can find everything...that, in short, is the largest part of learning.