Explore the wonderful quotes under this tag
Find the simplest model that is not a lie is the key to better software design.
Sep 11, 2025
An organisation that treats its programmers as morons will soon have programmers that are willing and able to act like morons only.
The real tight interface is between the book and the reader-the world of the book is plugged right into your brain, never mind the [virtual reality] bodysuit.
Mathematics, rightly viewed, possesses not only truth, but supreme beauty-a beauty cold and austere ... yet sublimely pure and capable of stern perfection such as only the greatest art can show.
... with proper design, the features come cheaply. This approach is arduous, but continues to succeed.
...wisdom is in large part the knowledge of how to avoid doing dumb things, and thus grows globally as a function of the published inventory of stupid mistakes.
Java development without a little heresy would be a dull place, and a dangerous one.
If we want users to like our software we should design it to behave like a likeable person: respectful, generous and helpful.
Good work is always done in defiance of management.
Perilous to us all are the devices of an art deeper than we possess ourselves.
Learning research tells us that the time lag from experiment to feedback is critical.
The greatest obstacle to discovery is not ignorance - it is the illusion of knowledge.
Software is like entropy. It is difficult to grasp, weighs nothing, and obeys the second law of thermodynamics; i.e. it always increases.
Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris.
Premature optimization is the root of all evil in programming.
The unavoidable price of reliability is simplicity.
Premature optimization is the root of all evil.
Simple things should be simple and complex things should be possible.
The cheapest, fastest, and most reliable components are those that aren't there.
Controlling complexity is the essence of computer programming.
Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity.
Technical skill is mastery of complexity, while creativity is mastery of simplicity.
Out of intense complexities, intense simplicities emerge
The trouble with programmers is that you can never tell what a programmer is doing until it's too late.
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.
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.
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
When debugging, novices insert corrective code; experts remove defective code.
At first I hoped that such a technically unsound project would collapse but I soon realized it was doomed to success. Almost anything in software can be implemented, sold, and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars. But there is one quality that cannot be purchased in this way - and that is reliability. The price of reliability is the pursuit of the utmost simplicity. It is a price which the very rich find most hard to pay.
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.
It is poor civic hygiene to install technologies that could someday facilitate a police state.
A charlatan makes obscure what is clear; a thinker makes clear what is obscure.
The lyf so short, the craft so long to lerne.
...your Web browser is Ronald Reagan.
Microsoft unleashed something called Bob, a program that's supposed to make Windows easier to use. Until a Bob helper is born, you can look forward to reading - I swear this is true - Microsoft Bob for Dummies.
Since when has the world of computer software design been about what people want? This is a simple question of evolution. The day is quickly coming when every knee will bow down to a silicon fist, and you will all beg your binary gods for mercy.
Human beings either function as individuals or as members of a pack. There's a switch inside us, deep in our spirit, that you can turn one way or the other. It's almost always the case that our worst behaviour comes out when we're switched to the mob setting. The problem with a lot of software designs is that they switch us to that setting.
Make everything as simple as possible, but not simpler.
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.
The most important single aspect of software development is to be clear about what you are trying to build.
Design is where science and art break even.
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.
As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications.
The general problem with ambitious systems is complexity. [...] it is important to emphasize the value of simplicity and elegance, for complexity has a way of compounding difficulties.
Increasingly, people seem to misinterpret complexity as sophistication, which is baffling -- the incomprehensible should cause suspicion rather than admiration.
A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.
If you want a language that tries to lock up all the sharp objects and fire-making implements, use Pascal or Ada: the Nerf languages, harmless fun for children of all ages, and they won't mar the furniture.
Design and programming are human activities; forget that and all is lost.
The ability to simplify means to eliminate the unnecessary so that the necessary may speak.