Mostly Software Engineering Quotes
Practice is the best of all instructors.
"The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do." -- Ted Nelson
A dangling pointer in C++ is as if you are holding the spare key of a car you already sold to someone. If you try to use that car, you may find yourself in trouble. Murat K. Gungor
You should use iterative development only on projects that you want to succeed.
When ideas fail, words come in very handy.
Johann Wolfgang von Goethe
Fast, Cheap, Good: Choose any two.
Its all very well in practice, but it will never work in theory.
anonymous management maxim
Few things are harder to put up with than a good example.
In theory, there is no difference between theory and practice. But, in practice, there is.
Jan L.A. van de Snepscheut
Hardware, n.: The parts of a computer system that can be kicked.
0x2B | ~0x2B
Understanding responsibilities is key to good object-oriented design.
To invent, you need a good imagination and a pile of junk.
Beware of bugs in the above code; I have only proved it correct, not tried it.
Logic is the art of going wrong with confidence.
Joseph Wood Krutch
Experience is that marvelous thing that enables you to recognize a mistake when you make it again.
F. P. Jones
Any sufficiently advanced bug is indistinguishable from a feature.
Luck is the residue of design.
Prediction is very difficult, especially if its about the future.
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil
Adding manpower to a late software project makes it later!
The best way to get a project done faster is to start sooner
How does a project get to be a year late?... One day at a time.
The bearing of a child takes nine months, no matter how many women are assigned. Many software tasks have this characteristic because of the sequential nature of debugging.
Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away
Antoine de Saint-Exupery
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
Program testing can be used to show the presence of bugs, but never to show their absence!
The belief that complex systems require armies of designers and programmers is wrong. A system that is not understood in its entirety, or at least to a significant degree of detail by a single individual, should probably not be built.
A primary cause of complexity is that software vendors uncritically adopt almost any feature that users want.
Good code is its own best documentation. As you’re about to add a comment, ask yourself, ‘How can I improve the code so that this comment isn’t needed?’ Improve the code and then document it to make it even clearer.
Its OK to figure out murder mysteries, but you shouldn't need to figure out code. You should be able to read it.
It is better to wait for a productive programmer to become available than it is to wait for the first available programmer to become productive.
Before software can be reusable it first has to be usable.
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.
You cannot teach beginners top-down programming, because they do not know which end is up.
Why do we never have time to do it right, but always have time to do it over?.
Good judgment comes from experience, and experience comes from bad judgment.
Frederick P. Brooks
Simple things should be simple, complex things should be possible.
The Wiki Way: Quick Collaborate
Simplicity is the soul of efficiency.
Correctness is clearly the prime quality. If a system does not do what it is supposed to do, then everything else about it matters little.
One principle problem of educating software engineers is that they will not use a new method until they believe it works and, more importantly, that they will not believe the method will work until they see it for themselves.
Humphrey - W.S.-The Personal S
I have always found that plans are useless, but planning is indispensable.
The perfect project plan is possible if one first documents a list of all the unknowns.
Always code as if the person who ends up maintaining your code will be a violent psychopath who knows where you live.
Every big computing disaster has come from taking too many ideas and putting them in one place.
Conceptual integrity is the most important consideration in system design.
Fred Brooks-The Mythical Man-M
Testing is the process of comparing the invisible to the ambiguous, so as to avoid the unthinkable happening to the anonymous.
We try to solve the problem by rushing through the design process so that enough time is left at the end of the project to uncover the errors that were made because we rushed through the design process
Programs should be written and polished until they acquire publication quality.
Wirth's law: Software gets slower faster than hardware gets faster.
Testing by itself does not improve software quality. Test results are an indicator of quality, but in and of themselves, they do not 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, do not buy a new scale; change your diet. If you want to improve your software, do not test more; develop better.
Good visual layout shows the logical structure of a program.
Even when you have skilled, motivated, hard-working people, the wrong team structure can undercut their efforts instead of catapulting them to success. A poor team structure can increase development time, reduce quality, damage morale, increase turnover, and ultimately lead to project cancellation.
In software, the chain isn not as strong as its weakest link; it is as weak as all the weak links multiplied together.
The most important single aspect of software development is to be clear about what you are trying to build.
Don not document bad code -- rewrite it.
Kernighan and Plauger
Adding last-minute features, whether in response to competitive pressure, as a developer s pet feature, or on the whim of management, causes more bugs in software than almost anything else.
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
Copy and paste is a design error.
Any code of your own that you have not looked at for six or more months might as well have been written by someone else.
Incorrect documentation is often worse than no documentation.
It\'s not at all important to get it right the first time. It\'s vitally important to get it right the last time.
Andrew Hunt and David Thomas
There\'s an old story about the person who wished his computer were as easy to use as his telephone. That wish has come true, since I no longer know how to use my telephone.
UNIX is simple. It just takes a genius to understand its simplicity
When someone says, "I want a programming language in which I need only say what I want done" give him a lollipop.
The software is done.
We are just trying to get it to work.
-Statement made in a Joint STA
I am a slow walker but I never walk backwards
The road success is always under construction
There is nothing like a dream to create the future
A programmer’s job is to communicate with other programmers, not just a machine. Programming, then, is a human task done by humans for humans. It does not need to be an escape from a society. It can be a means of connecting. Oh, and writing good code at the same time
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows your whole leg off.
If you think good architecture is expensive, try bad architecture.
Brian Foote and Joseph Yoder
A clever person solves a problem. A wise person avoids it.
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization
A good way to stay flexible is to write less code
Documentation is the castor oil of programming. Managers think it is good for programmers and programmers hate it!.
If Java had true garbage collection, most programs would delete themselves upon execution
In a room full of top software designers, if two agree on the same thing, that\'s a majority
If at first you don't succeed, call it version 1.0
One: demonstrations always crash. And two: the probability of them crashing goes up exponentially with the number of people watching.
I think there is a world market for maybe five computers.
Thomas Watson, Chairman of IBM
9 women CANNOT make a baby in ONE MONTH.
Abraham Lincoln reportedly said that, given eight hours to chop down a tree, he’d spend six sharpening his axe.
TidBITS 654, quoted by Derek K
The significant problems we face cannot be solved by the same level of thinking that created them.
It is not enough to do your best: you must KNOW what to do, and THEN do your best.
Walking on water and developing software from a specification are easy if both are frozen.
Edward V Berard
A good programmer is someone who always looks both ways before crossing a one-way street.
If debugging is the process of removing software bugs, then programming must be the process of putting them in.
Software is not complete.. until the last user is dead...
First, solve the problem. Then, write the code.