Every act of creation is first an act of destruction.
All code can be classified into two distinct roles; code that does work (algorithms) and code that coordinates work (coordinators).
There are only two hard things in Computer Science: cache invalidation and naming things.
Complexity has the same impact on your codebase as compound interest has on your credit card balance.
Don’t worry if it doesn’t work right. If everything did, you’d be out of a job.
The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
One man’s crappy software is another man’s full time job.
The most likely way for the world to be destroyed, most experts agree, is by accident. That’s where we come in; we’re computer professionals. We cause accidents.
It’s a curious thing about our industry: not only do we not learn from our mistakes, we also don’t learn from our successes.
If at first you don’t succeed, call it version 1.0
Why do we never have time to do it right, but always have time to do it over?
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
Any code of your own that you haven’t looked at for six or more months might as well have been written by someone else.
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
Programming is like sex. One mistake and you have to support it for the rest of your life.
Walking on water and developing software from a specification are easy if both are frozen.
The hardest part of design… is keeping features out.
In order to understand recursion, one must first understand recursion.
It is easier to measure something than to understand what you have measured.
Benchmarks don’t lie, but liars do benchmarks.
Better train people and risk they leave – than do nothing and risk they stay.
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
Bad code isn’t bad, its just misunderstood.
Before software can be reusable it first has to be usable.
Software undergoes beta testing shortly before it’s released. Beta is Latin for “still doesn’t work”.
Software and cathedrals are much the same – first we build them, then we pray.