Bug-free Quotes About Programming
Welcome to our collection of quotes about software engineering or programming. We hope you mull over them and find them useful. Please share widely.
Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law.
You should imagine variables as tentacles, rather than boxes. They do not contain values; they grasp them—two variables can refer to the same value.

Web development is difficult, only then it is fun to do. You just have to set your standards. If it were to be easy, would anyone do it?

One of the easiest ways to get noticed or hired as a junior developer in the tech industry is by documenting everything you are learning. Build great projects, but don't forget to document your journey along the way.

Programming is the immediate act of producing code. Software engineering is the set of policies, practices, and tools that are necessary to make that code useful for as long as it needs to be used and allowing collaboration across a team.
At forty, I was too old to work as a programmer myself anymore; writing code is a young person’s job.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.

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.
More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason -- including blind stupidity.
No matter which field of work you want to go in, it is of great importance to learn at least one programming language.
Some of the best programming is done on paper, really. Putting it into the computer is just a minor detail.
But while you can always write 'spaghetti code' in a procedural language, object-oriented languages used poorly can add meatballs to your spaghetti.

Don't gloss over a routine or piece of code involved in the bug because you know it works. Prove it. Prove it in this context, with this data, with these boundary conditions.
Delivering good software today is often better than perfect software tomorrow, so finish things and ship.

Virding's First Rule of Programming:
Any sufficiently complicated concurrent program in another language contains an ad hoc informally-specified bug-ridden slow implementation of half of Erlang.

So if an algorithm is an idealized recipe, a program is the detailed set of instructions for a cooking robot preparing a month of meals for an army while under enemy attack,.
When it comes to writing code, the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity.
This approach is refreshing because most of the programming books I've read are drier than a camel's fart.

I'm not saying simple code takes less time to write. You'd think it would since you end up with less total code, but a good solution isn't an accretion of code, it's a distillation of it.

The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.
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.

The best programmers are not marginally better than merely good ones. They are an order-of-magnitude better, measured by whatever standard: conceptual creativity, speed, ingenuity of design, or problem-solving ability.
Documentation is like sex: when it is good, it is very, very good; and when it is bad, it is better than nothing.

The only way for errors to occur in a program is by being put there by the author. No other mechanisms are known. Programs can't acquire bugs by sitting around with other buggy programs.

A lot of people want to make badly designed programming languages easier to use by giving them fancy IDE's. This makes sense if you are forced to use a badly designed language. I think it would be better to try making well designed languages instead.
Progress is possible only if we train ourselves to think about programs without thinking of them as pieces of executable code.
Real programmers don't comment their code. If it was hard to write, it should be hard to understand.
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.

What I love about both programming and music is that they enable you to build incredibly creative, complex, and beneficial things seemingly from thin air -- no additional materials required, just your brain and a keyboard in front of you.
Longer Version/[Notes]:
What I love about both programming and music is that they enable you to build incredibly creative, complex, and beneficial things seemingly from thin air no additional materials required, just your brain and a keyboard in front of you.
Programming and music also both allow for a deep, single-minded immersion in the creative process. They require you to be deeply focused and in the moment for everything to work well, and I find that state of flow to be immensely satisfying.

Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges, and it causes end-user and administrator frustration.
A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.

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.
Computer science is to biology what calculus is to physics. It's the natural mathematical technique that best maps the character of the subject.
If a machine ever gains awareness, it will be not due to our careful programming, but due to an unforeseeable anomaly.
Simplicity is hard to build, easy to use, and hard to charge for. Complexity is easy to build, hard to use, and easy to charge for.
A process cannot be understood by stopping it. Understanding must move with the flow of the process, must join it and flow with it.

The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.
Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.
Einstein repeatedly argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.
It is a real service to humanity and the world to be a good programmer, particularly if you design great products. You make is easier for everybody, everybody has less headaches.
Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships.
Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.
Programmers are in the enviable position of not only getting to do what they want to, but because the end result is so important they get paid to do it. There are other professions like that, but not that many.
Beyond basic mathematical aptitude, the difference between good programmers and great programmers is verbal ability.
Whether you're a programmer or a seamstress, it's all about new techniques, simplifying old techniques, and consolidating steps. Making things go faster -- but not worse.
Software is like entropy. It is difficult to grasp, weighs nothing, and obeys the second law of thermodynamics; i.e. it always increases.
From a programmer's point of view, the user is a peripheral that types when you issue a read request.
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.
FORTRAN is not a flower but a weed -- it is hardy, occasionally blooms, and grows in every computer.
You think you KNOW when you learn, are more sure when you can write, even more when you can teach, but certain when you can program.
The best book on programming for the layman is Alice in Wonderland; but that's because it's the best book on anything for the layman.
You can measure a programmer's perspective by noting his attitude on the continuing vitality of FORTRAN.
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.
Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer.
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
The computing scientist's main challenge is not to get confused by the complexities of his own making.
Are you quite sure that all those bells and whistles, all those wonderful facilities of your so called powerful programming languages, belong to the solution set rather than the problem set?
The tools we use have a profound and devious influence on our thinking habits, and therefore on our thinking abilities.
Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians.
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
Object-oriented programming is an exceptionally bad idea which could only have originated in California.
APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.
The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.
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 most effective debugging tool is still careful thought, coupled with judiciously placed print statements.
Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?
That's the thing about people who think they hate computers. What they really hate is lousy programmers.

I think that great programming is not all that dissimilar to great art. Once you start thinking in concepts of programming it makes you a better person...as does learning a foreign language, as does learning math, as does learning how to read.
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.
It has been said that the great scientific disciplines are examples of giants standing on the shoulders of other giants. It has also been said that the software industry is an example of midgets standing on the toes of other midgets.
I love computer programmers. They have a very beautiful definition of complexity as 'the capacity to transmit the maximum information with the minimum data'.
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
The most important single aspect of software development is to be clear about what you are trying to build.
However, when Java is promoted as the sole programming language, its flaws and limitations become serious.
The mark of a mature programmer is willingness to throw out code you spent time on when you realize it's pointless.
Data is not information, Information is not knowledge, Knowledge is not understanding, Understanding is not wisdom.
People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
Premature optimization is the root of all evil.
Longer Version/[Notes]:
Premature optimization is the root of all evil in programming.

Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better.
The most important thing in the programming language is the name. A language will not succeed without a good name. I have recently invented a very good name and now I am looking for a suitable language.
UNIX is simple and coherent, but it takes a genius (or at any rate, a programmer) to understand and appreciate its simplicity.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.
Programming in different languages is like composing pieces in different keys, particularly if you work at the keyboard. If you have learned or written pieces in many keys, each key will have its own special emotional aura.
As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications.
The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.
The intellectual property situation is bad and getting worse. To be a programmer, it requires that you understand as much law as you do technology.
Programming is similar to a game of golf. The point is not getting the ball in the hole but how many strokes it takes.
The most amazing achievement of the computer software industry is its continuing cancellation of the steady and staggering gains made by the computer hardware industry.
The cost of adding a feature isn't just the time it takes to code it. The cost also includes the addition of an obstacle to future expansion. ... The trick is to pick the features that don't fight each other.
One of the big lessons of a big project is you don't want people that aren't really programmers programming, you'll suffer for it!
It is not that uncommon for the cost of an abstraction to outweigh the benefit it delivers. Kill one today!
Programming is not a zero-sum game. Teaching something to a fellow programmer doesn't take it away from you. I'm happy to share what I can, because I'm in it for the love of programming.
Computer Science is the only discipline in which we view adding a new wing to a building as being maintenance.
The world is changing, and I believe that, if I want to stay employed as a programmer, I'm going to have to change with it.
We could talk, act, and dress funny. We were excused for socially inappropriate behavior: 'Oh, he's a programmer'. It was all because we knew this technology stuff that other people found completely mystifying.
Programmers work in bursts of productivity. Then, they let the brain rest and get back into it. A lot about the office world is not a great fit for me.
Object-oriented programming offers a sustainable way to write spaghetti code. It lets you accrete programs as a series of patches.
A programming language is for thinking about programs, not for expressing programs you've already thought of. It should be a pencil, not a pen.
Such is modern computing: everything simple is made too complicated because it's easy to fiddle with; everything complicated stays complicated because it's hard to fix.
