An ever growing list of quotations about computer science, with an emphasis on software maintenance. Started by Ken, updated by him and the SciTools staff. Feel free to share your favorite quote – [email protected]
Sometimes, the elegant implementation is a function. Not a method. Not a class. Not a framework. Just a function.
Good code is code that can be understood by a junior engineer. Great code can be understood by a first year CS freshman. The best code is no code at all.
–Drunk Programmer (Reddit)
The cheapest, fastest and most reliable components of a computer system are those that aren’t there.
— Gordon Bell
Software is always the slave of its own history, its own legacy.
— Jaron Lanier
The thing I like the most is deleting code.
— Jason “Hack” Haslam, Senior Engineer, Scitools
We build our computer (systems) the way we build our cities: over time, without a plan, on top of ruins.
— Ellen Ullman
The realization came over me with full force that a good part of my life was going to be spent in finding errors in my own programs.
— Maurice Wilkes, Memoirs of a Computer Pioneer
A successful software tool is one that was used to do something undreamed of by its author.
— Stephen Johnson
(Note from Ken: We see examples of this almost every day with Understand).
Bad documentation is worse than no documentation.
— Unknown source
Premature optimization is the root of all evil.
— Donald Knuth
One of my most productive days was throwing away 1000 lines of code.
— Ken Thompson
Computer science is no more about computers than astronomy is about telescopes.
— Edsger Dijkstra*
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
— Martin Fowler
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
— Edsger Dijkstra
The purpose of software engineering is to control complexity, not to create it.
Before software can be reusable, it has first to be usable.
Optimization of clear code is easy. Clarification of optimized code is hard.
All problems in CS can be solved by another level of indirection, except for the problem of too many layers of indirection.
Strive to add function by deleting code.
No matter how slow you are writing clean code, you will always be slower if you make a mess.
About 1,000 instructions is a reasonable upper limit for the complexity of problems now envisioned.
–John von Neumann (1946)
Hardware eventually fails. Software eventually works.
Inside every large program is a small program trying to get out.
Programming is a Dark Art, and it always will be. The programmer is fighting against the two most destructive forces in the universe: entropy and human stupidity. These are not things you can overcome with a “methodology” or on a schedule.
Debugging is like being the detective in a crime movie where you are also the murderer.
Code is like poetry; most of it shouldn’t have been written.
The problem with quick and dirty… is that dirty remains long after quick has been forgotten.
–Steve C. McConnell
Debugging is twice as hard as writing the code in the first place. Therefore, if you write code as cleverly as possible, you are, by definition, not smart enough to debug it.
–Brian W. Kernighan
Code is a liability, not an asset. So goal of software engineer is delivering the maximum amount of desired functionality at the cost of the least amount of code complexity, even as desired functionality evolves over time.
Code never lies; comments sometimes do.
The enjoyment of one’s tools is an essential ingredient of successful work.
–Donald E. Knuth
A common fallacy is to assume authors of incomprehensible code will be able to express themselves clearly in comments.