• The most important single aspect of software development is to be clear about what you are trying to build.

Bjarne Stroustrup

  • If you think your management doesn’t know what it’s doing or that your organisation turns out low-quality software crap that embarrasses you, then leave.

Edward Yourdon Rise and Resurrection of the American Programmer

  • Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris.

Larry Wall

  • 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.

Alan Cooper About Face

  • The road to wisdom?

Well its plain a nd simple to express:

Err and err and err again,

but less and less and less.

Piet Hein

  • There are perhaps 5% of the population that simply *can’t* think.

There are another 5% who *can*, and *do*.

The remaining 90% *can* think, but *don’t*.

R. A. Heinlein

  • If you lie to the compiler, it will get its revenge.

Henry Spencer

  • Trying to outsmart a compiler defeats much of the purpose of using one.

Kernighan & Plauger, The Elements of Programming Style.

  • It’s hard enough to find an error in your code when you’re looking for it; it’s even harder when you’ve assumed your code is error-free.

Steve McConnell Code Complete

  • If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilisation.

Gerald Weinberg

  • Programming can be fun, so can cryptography; however they should not be combined.

Kreitzberg and Shneiderman

  • 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.

Steve McConnell Code Complete

  • Once a new technology starts rolling, if you’re not part of the steamroller, you’re part of the road.

Stewart Brand

  • The truth does not change according to our ability to stomach it.

Flannery O’Connor

  • Let us change our traditional attitude to the construction of programs. Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.

Donald Knuth

  • Beware of bugs in the above code; I have only proved it correct, not tried it.

Donald Knuth

  • Computers are good at following instructions, but not at reading your mind.

Donald Knuth

  • … the designer of a new system must not only be the implementor and the first large-scale user; the designer should also write the first user manual. … If I had not participated fully in all these activities, literally hundreds of improvements would never have been made, because I would never have thought of them or perceived why they were important.

Donald Knuth

  • Any inaccuracies in this index may be explained by the fact that it has been sorted with the help of a computer.

Donald Knuth Sorting and Searching

  • TeX has found at least one bug in every Pascal compiler it’s been run on, I think, and at least two in every C compiler.

Donald Knuth

  • The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it can be an aesthetic experience much like composing poetry or music.

Donald Knuth

  • You’re bound to be unhappy if you optimize everything.

Donald Knuth

  • These machines have no common sense; they have not yet learned to “think,” and they do exactly as they are told, no more and no less. This fact is the hardest concept to grasp when one first tries to use a computer.

Donald Knuth

  • We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.

Donald Knuth

  • 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.

Steve McConnell Code Complete

  • The trouble with the world is that the stupid are cocksure and the intelligent are full of doubt.

Bertrand Russell

  • A charlatan makes obscure what is clear; a thinker makes clear what is obscure.

Hugh Kingsmill

  • Unformed people delight in the gaudy and in novelty. Cooked people delight in the ordinary.

Erik Naggum

  • An organisation that treats its programmers as morons will soon have programmers that are willing and able to act like morons only.

Bjarne Stroustrup

  • Measuring programming progress by lines of code is like measuring aircraft building progress by weight.

Bill Gates

  • The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.

Tom Cargill

  • Before software can be reusable it first has to be usable.

Ralph Johnson

  • Programmers are in a race with the Universe to create bigger and better idiot-proof programs, while the Universe is trying to create bigger and better idiots. So far the Universe is winning.

Anon

  • Two things are infinite: the universe and human stupidity; and I’m not sure about the universe.

Albert Einstein

  • Just because the standard provides a cliff in front of you, you are not necessarily required to jump off it.

Norman Diamond

  • But in our enthusiasm, we could not resist a radical overhaul of the system, in which all of its major weaknesses have been exposed, analyzed, and replaced with new weaknesses.

Bruce Leverett, Register Allocation in Optimizing Compilers

  • The best performance improvement is the transition from the nonworking state to the working state

John Ousterhout

  • 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.

Maurice Wilkes discovers debugging, 1949

  • Real computer scientists despise the idea of actual hardware. Hardware has limitations, software doesn’t. It’s a real shame that Turing machines are so poor at I/O.

Anon

  • There are only two industries that refer to their customers as “users”.

Edward Tufte

  • Debugging a Direct3D application can be challenging.

Microsoft’s Direct3D Immediate Mode overview.

  • If you want a girlfriend, avoid working in the computer games industry like the plague. If you work seven days a week, 15 hours a day for almost two years, with barely enough time for a pint, you have no time whatsoever for relationships. Plus computer-games makers are regarded as being about as hip and cool as abattoir workers.

Toby Gard, creator of Lara Croft.

  • There are two ways to write error-free programs; only the third works.

Alan J. Perlis

  • To many managers, getting rid of the arrogant, undisciplined, over-paid, technology-obsessed, improperly-dressed etc. programmers would appear to be a significant added benefit.

Bjarne Stroustrup The C++ Programming Language 3e, section 24.2.4

  • I did say something along the lines of “C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, it blows your whole leg off.”

Bjarne Stroustrup

  • I have always wished that my computer would be as easy to use as my telephone. My wish has come true. I no longer know how to use my telephone.

Bjarne Stroustrup

  • Naturally we feel that mentally ill people are not what we are looking for when we hire programmers - although there is no empirical data to support or contradict that view…… Is it appropriate to give tests for mental illness to anyone applying for any kind of job?

Weinberg The Psychology of Computer Programming

  • Lord, give us the wisdom to utter words that are gentle and tender, for tomorrow we may have to eat them.

Rep. Morris Udall

  • Do not worry about your difficulties in mathematics, I assure you that mine are greater.

Einstein

  • Computers are useless. They can only give you answers.

Pablo Picasso

  • Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why.
  • Programmers combine theory and practice: Nothing works and they don’t know why.
  • I really hate this damned machine

I wish that they would sell it.

It never does quite what I want

But only what I tell it.

A Programmer’s Lament

  • UNIX is simple. It just takes a genius to understand its simplicity.

Dennis Ritchie

  • When someone says, “I want a programming language in which I need only say what I want done,” give him a lollipop.

Alan Perlis

  • For every complex problem there is an answer that is clear, simple, and wrong.

H L Mencken

  • One of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs.

Robert Firth

  • Haste is of the devil. Slowness is of God.

H L Mencken

  • If the code and the comments disagree, then both are probably wrong.

attributed to Norm Schryer

  • Good programmers use their brains, but good guidelines save us having to think out every case.

Francis Glassborow

  • …well over half of the time you spend working on a project (on the order of 70 percent) is spent thinking, and no tool, no matter how advanced, can think for you. Consequently, even if a tool did everything except the thinking for you — if it wrote 100 percent of the code, wrote 100 percent of the documentation, did 100 percent of the testing, burned the CD-ROMs, put them in boxes, and mailed them to your customers — the best you could hope for would be a 30 percent improvement in productivity. In order to do better than that, you have to change the way you think.

Fred Brook [paraphrased] as quoted from Allen Holub’s http://www.javaworld.com/javaworld/jw-07-1999/jw-07-toolbox.html

  • Never attribute to malice that which is adequately explained by stupidity.

Hanlon’s razor

  • Sufficiently advanced incompetence is indistinguishable from malice.
  • And the users exclaimed with a laugh and a taunt: “It’s just what we asked for but not what we want.”
  • Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.

Laurence J. Peter

  • Those who cannot remember the past are condemned to repeat it.

George Santayana

  • Fashion is something barbarous, for it produces innovation without reason and imitation without benefit.

George Santayana

  • For a sucessful technology, honesty must take precedence over public relations for nature cannot be fooled.

Richard Feynman

  • The inside of a computer is as dumb as hell but it goes like mad!

Richard Feynman

  • The act of focusing our mightiest intellectual resources on the elusive goal of goto-less programs has helped us get our minds off all those really tough and possibly unresolvable problems and issues with which today’s professional programmer would otherwise have to grapple.

John Brown

  • A most important, but also most elusive, aspect of any tool is its influence on the habits of those who train themselves in its use. If the tool is a programming language this influence is, whether we like it or not, an influence on our thinking habits.

Edsger Dijkstra

  • To iterate is human, to recurse divine.

L. Peter Deutsch

  • Increasingly, people seem to misinterpret complexity as sophistication, which is baffling—the incomprehensible should cause suspicion rather than admiration. Possibly this trend results from a mistaken belief that using a somewhat mysterious device confers an aura of power on the user.

Niklaus Wirth

  • There’s no sense being exact about something if you don’t even know what you’re talking about.

John von Neumann

  • Anyone who considers arithmetical methods of producing random numbers is, of course, in a state of sin.

John von Neumann

  • 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.

C.A.R. Hoare

  • … 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.

John Carmack

  • You can’t have great software without a great team, and most software teams behave like dysfunctional families.

Jim McCarthy

  • Even if you’re on the right track, you’ll get run over if you just sit there.

Will Rogers

  • That’s the thing about people who think they hate computers. What they really hate is lousy programmers.

Larry Niven and Jerry Pournelle Oath of Fealty

  • Trying to get into the details seems to be a religious issue — nearly everybody is convinced that every style but their own is ugly and unreadable. Leave out the “but their own” and they’re probably right…

Jerry Coffin on indentation

  • When you start off by telling those who disagree with you that they are not merely in error but in sin, how much of a dialogue do you expect ?”

Thomas Sowell

  • Einstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.

Fred Brooks, Jr.

  • Incompetents invariably make trouble for people other than themselves.

Larry McMurtry

  • A notation is important for what it leaves out.

Joseph Stoy

  • As we said in the preface to the first edition, C “wears well as one’s experience with it grows.” With a decade more experience, we still feel that way.

Brian Kernighan and Dennis Ritchie

  • A mathematician is a machine for turning coffee into theorems.

Alfr?d R?nyi

  • Ugly programs are like ugly suspension bridges: they’re much more liable to collapse than pretty ones, because the way humans (especially engineer-humans) perceive beauty is intimately related to our ability to process and understand complexity. A language that makes it hard to write elegant code makes it hard to write good code.

Eric S. Raymond

  • PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil, perpetrated by skilled but perverted professionals.

Jon Ribbens

  • Simplicity is prerequisite for reliability

Edsger W.Dijkstra

  • I’ve finally learned what “upward compatible” means. It means we get to keep all our old mistakes.

Dennie van Tassel

  • Exceptions relieve the programmer of tedious writing boilerplate code — without removing the semantics of said code — and they allow the programmer to arrange the code so that error handling code is more separate from the main program logic.

Herb Sutter

  • It is difficult to get a man to understand something when his salary depends on his not understanding it.

Upton Sinclair

  • Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.

Jamie Zawinski

  • The behavior of any bureaucratic organization can best be understood by assuming that it is controlled by a secret cabal of its enemies.

Robert Conquest’s Second Law of Politics

  • Power is the ability to control things, moral authority is the ability to change things

Jim Wallis

  • There is nothing more difficult to carry out, nor more doubtful of success, nor more dangerous to handle, than to initiate a new order of things. For the reformer has enemies in all those who profit by the old order, and only lukewarm defenders in all those who would profit by the new…

Niccolo Macchiavelli, The Prince

  • The open secrets of good design practice include the importance of knowing what to keep whole, what to combine, what to separate, and what to throw away.

Kevlin Henny

  • Rules of Optimization:
    Rule 1: Don’t do it.
    Rule 2 (for experts only): Don’t do it yet.

M.A. Jackson

  • More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason - including blind stupidity.

W.A. Wulf

  • The best is the enemy of the good.

Voltaire

  • There’s a fine line between being on the leading edge and being in the lunatic fringe.

Frank Armstrong

  • The pessimist complains about the wind; the optimist expects it to change; the realist adjusts the sails.

William Arthur Ward

  • Good judgement comes from experience, and experience comes from bad judgement.

Fred Brooks

  • Plan to throw one away, you will anyhow.

Fred Brooks

  • If you plan to throw one away, you will throw away two.

Craig Zerouni

  • Learning is not compulsory. Neither is survival.

W. Edwards Deming

  • C++ tries to guard against Murphy, not Machiavelli.

Damian Conway

  • I have always found that plans are useless, but planning is indispensable.

Dwight Eisenhower

  • We are tied down to a language which makes up in obscurity what it lacks in style.

Tom Stoppard

  • They always say time changes things, but you actually have to change them yourself.

Andy Warhol

  • We only acknowledge small faults in order to make it appear that we are free from great ones.

La Rochefoucauld

  • 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.

Alan Kay

  • We all agree on the necessity of compromise. We just can’t agree on when it’s necessary to compromise.

Larry Wall

  • Perl is another example of filling a tiny, short-term need, and then being a real problem in the longer term.

Alan Kay

  • The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.

Edsger Dijkstra

  • It is practically impossible to teach good programming style to students that have had prior exposure to Basic; as potential programmers they are mentally mutilated beyond hope of regeneration.

Edsger Dijkstra

  • We are apt to shut our eyes against a painful truth…. For my part, I am willing to know the whole truth; to know the worst; and to provide for it.

Patrick Henry

  • A non-virtual function says, you have to do this and you must do it this way. A virtual function says you have to do this, but you don’t have to do it this way. That’s their fundamental difference.

Scott Meyers

  • Comparing to another activity is useful if it helps you formulate questions, it’s dangerous when you use it to justify answers.

Martin Fowler

  • 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.

Bertrand Meyer

  • An API that isn’t comprehensible isn’t usable.

James Gosling

  • Style distinguishes excellence from accomplishment.

James Coplien

  • You know you’ve achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away.

Antoine de Saint-Exupery, Wind, Sand and Stars

  • It always takes longer than you expect, even when you take into account Hofstadter’s Law.

Hofstadter’s Law

  • The ability to simplify means to eliminate the unnecessary so that the necessary may speak.

Hans Hoffmann

  • Simplicity carried to the extreme becomes elegance.

Jon Franklin

  • Simplicity is the ultimate sophistication.

Leonardo da Vinci

  • Moving parts in rubbing contact require lubrication to avoid excessive wear. Honorifics and formal politeness provide the lubrication where people rub together. Often the very young, the untraveled, the naive, the unsophisticated deplore these formalities as “empty,” “meaningless,” or “dishonest,” and scorn to use them. No matter how “pure” their motives, they thereby throw sand into machinery that does not work too well at best.

Robert A. Heinlein

  • It?s so easy to become mesmerized by the immediacy of a result that you don?t question its validity.

Naomi Karten

  • Every program has (at least) two purposes: the one for which it was written, and another for which it wasn’t.

Alan J. Perlis

  • Elegance is not optional

Richard O’Keefe

  • 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.

Henry Petroski

  • Technology is dominated by two types of people: Those who understand what they do not manage. Those who manage what they do not understand.

Putt’s Law

  • Copy and paste is a design error

David Parnas

  • There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code.

Flon’s Law

  • When one is postulating correlations or causations extant in reality, one should always remember that the human brain is mainly a pattern recognition engine. And it is such a persistent pattern recognition engine that it often perceives patterns where none exist.

Jeff Walther

  • Any code of your own that you haven’t looked at for six or more months might as well have been written by someone else.

Eagleson’s law

  • If you can’t be a good example, then you’ll just have to be a horrible warning.

Catherine Aird

  • Alas, to wear the mantle of Galileo it is not enough that you be persecuted by an unkind establishment, you must also be right.

Bob Park

  • Any fool can use a computer. Many do.

Ted Nelson

  • Say what you will about the Ten Commandments, you must always come back to the pleasant fact that there are only ten of them.

H. L. Mencken

  • You can know the name of a bird in all the languages of the world, but when you’re finished, you’ll know absolutely nothing whatever about the bird… So let’s look at the bird and see what it’s doing — that’s what counts. I learned very early the difference between knowing the name of something and knowing something.

Richard Feynman

  • Incorrect documentation is often worse than no documentation.

Bertrand Meyer

  • 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.

Brian W. Kernighan

  • If the lessons of history teach us anything it is that nobody learns the lessons that history teaches us.
  • The primary duty of an exception handler is to get the error out of the lap of the programmer and into the surprised face of the user. Provided you keep this cardinal rule in mind, you can’t go far wrong.

Verity Stob

  • If you want a product with certain characteristics, you must ensure that the team has those characteristics before the product’s development.

Jim and Michele McCarthy - Software for your Head

  • Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. (For example, if you have four groups working on a compiler, you?ll get a 4-pass compiler)

Conway?s Law

  • 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 are 10 kinds of people in this world….Those who understand binary and those who don’t.
  • The perfect project plan is possible if one first documents a list of all the unknowns.

Bill Langley

  • Without stress nothing would move.

Bill Langley

  • 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.

Ray Ozzie

  • Make everything as simple as possible, but not simpler.

Albert Einstein

  • First, solve the problem. Then, write the code.

John Johnson

  • Software obeys the law of gaseous expansion - it continues to grow until memory is completely filled.

Larry Gleason

Digg This:

Popularity: 100%

Share and Enjoy:
  • del.icio.us
  • Furl
  • YahooMyWeb
  • Digg
  • Reddit
  • StumbleUpon