If debugging is the process of removing software bugs, then programming must be the process of putting them in.
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.
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.
There are two ways to write error-free programs; only the third one works.
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
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.
Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.
When debugging, novices insert corrective code; experts remove defective code.
Beware of bugs in the above code; I have only proved it correct, not tried it.
Controlling complexity is the essence of computer programming.
In theory there is no difference between theory and practice. In practice there is.
I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
It should be noted that no ethically-trained software engineer would ever consent to write a DestroyBaghdad procedure. Basic professional ethics would instead require him to write a DestroyCity procedure, to which Baghdad could be given as a parameter.
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
Premature optimization is the root of all evil in programming.
One of my most productive days was throwing away 1,000 lines of code.
As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications.
or simply: