Considering the current sad state of our computer programs, software development is clearly still a black art, and cannot yet be called an engineering discipline.
The most important single aspect of software development is to be clear about what you are trying to build.
In theory there is no difference between theory and practice. In practice there is.
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.
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
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.
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
When I am working on a problem, I never think about beauty but when I have finished, if the solution is not beautiful, I know it is wrong.
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.
The trouble with programmers is that you can never tell what a programmer is doing until it's too late.
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
The task of the software development team is to engineer the illusion of simplicity.
Design adds value faster than it adds cost.
Linux is only free if your time has no value.
To understand recursion, one must first understand recursion.
One bad programmer can easily create two new jobs a year.
Testing by itself does not improve software quality. Test results are an indicator of quality, but in and of themselves, they don't improve it. Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often. What you eat before you step onto the scale determines how much you will weigh, and the software development techniques you use determine how many errors testing will find. If you want to lose weight, don't buy a new scale; change your diet. If you want to improve your software, don't test more; develop better.
When debugging, novices insert corrective code; experts remove defective code.
No matter how slick the demo is in rehearsal, when you do it in front of a live audience the probability of a flawless presentation is inversely proportional to the number of people watching, raised to the power of the amount of money involved.
My definition of an expert in any field is a person who knows enough about what's really going on to be scared.
Nine people can't make a baby in a month.
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.
Any intelligent fool can make things bigger and more complex... It takes a touch of genius - and a lot of courage to move in the opposite direction.
It takes a touch of genius - and a lot of courage to move in the opposite direction.
Follow AzQuotes on Facebook, Twitter and Google+. Every day we present the best quotes! Improve yourself, find your inspiration, share with friends
or simply: