Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. ~ Stan Kelly-Bootle Optimism is an occupational hazard of programming: testing is the treament. ~ Kent Beck Beware of programmers who carry screwdrivers. ~ Leonard Brandwein If your project doesn't work, look for the part that you didn't think was important. ~ Arthur Bloch A hacker on a roll may be able to produce, in a period of a few months, something that a small development group (say, 7-8 people) would have a hard time getting together over a year. IBM used to report that certain programmers might be as much as 100 times as productive as other workers, or more. ~ Peter Seebach The programmer, who needs clarity, who must talk all day to a machine that demands declarations, hunkers down into a low-grade annoyance. It is here that the stereotype of the programmer, sitting in a dim room, growling from behind Coke cans, has its origins. The disorder of the desk, the floor; the yellow Post-It notes everywhere; the whiteboards covered with scrawl: all this is the outward manifestation of the messiness of human thought. The messiness cannot go into the program; it piles up around the programmer. ~ Ellen Ullman Pessimists, we're told, look at a glass containing 50% air and 50% water and see it as half empty. Optimists, in contrast, see it as half full. Engineers, of course, understand the glass is twice as big as it needs to be. ~ Bob Lewis Mostly, when you see programmers, they aren't doing anything. One of the attractive things about programmers is that you cannot tell whether or not they are working simply by looking at them. Very often they're sitting there seemingly drinking coffee and gossiping, or just staring into space. What the programmer is trying to do is get a handle on all the individual and unrelated ideas that are scampering around in his head. ~ Charles M Strauss We shall do a much better programming job, provided we approach the task with a full appreciation of its tremendous difficulty, provided that we respect the intrinsic limitations of the human mind and approach the task as very humble programmers. ~ Alan Turing People that think logically are a nice contrast to the real world. ~ Matt Biershbach Fast, fat computers breed slow, lazy programmers. ~ Robert Hummel Controlling complexity is the essence of computer programming. ~ Brian Kernighan For a long time it puzzled me how something so expensive, so leading edge, could be so useless, and then it occurred to me that a computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are, in short, a perfect match. ~ Bill Bryson The three chief virtues of a programmer are Laziness, Impatience and Hubris. ~ Larry Wall Programs must be written for people to read, and only incidentally for machines to execute. ~ H. Abelson and G. Sussman If you're not failing every now and again, it's a sign you're not doing anything very innovative. ~ W. Allen At the source of every error which is blamed on the computer, you will find at least two human errors, one of which is the error of blaming it on the computer. ~ Anonymous If I had eight hours to chop down a tree, I would spend 6 hours sharpening an axe. ~ Abraham Lincoln In theory, there is no difference between theory and practice, but in practice there is. ~ Anonymous Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. ~ Anonymous, Revised Report on the Algorithmic Language Scheme Programs for sale: Fast, Reliable, Cheap: choose 2. ~ Anonymous There are only 10 different kinds of people in the world: those who know binary and those who don't. ~ Anonymous Weeks of programming can save you hours of planning. ~ Anonymous The most exciting phrase to hear in science -the one that heralds new discoveries- is not "Eureka!" but "That's funny...". ~ I. Asimov More than the act of testing, the act of designing tests is one of the best bug preventers known. The thinking that must be done to create a useful test can discover and eliminate bugs before they are coded - indeed, test-design thinking can discover and eliminate bugs at every stage in the creation of software, from conception to specification, to design, coding and the rest. ~ B. Bezier Good judgment comes from experience; experience comes from bad judgment. ~ F. Brooks The sooner you start to code, the longer the program will take. ~ R. Carlson Simplifications have had a much greater long-range scientific impact than individual feats of ingenuity. The opportunity for simplification is very encouraging, because in all examples that come to mind the simple and elegant systems tend to be easier and faster to design and get right, more efficient in execution, and much more reliable than the more contrived contraptions that have to be debugged into some degree of acceptability....Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated. ~ E. Dijkstra (The Tide, not the waves; in Denning/Metcalfe: Beyond Calculation, Springer-Verlag 1997) An engineer can do for a nickel what any damn fool can do for a dollar. ~ H. Ford Any fool can write code that a computer can understand. Good programmers write code that humans can understand. ~ R. Fowler Habitability is the characteristic of source code that enables programmers coming to the code later in its life to understand its construction and intentions and to change it comfortably and confidently... Software needs to be habitable because it always has to change...Programs are written and maintained, bugs are fixed, features are added, performance is tuned, and a whole variety of changes are made both by the original and new programming team members... What is important is that it be easy for programmers to come up to speed with the code, to be able to navigate through it effectively, to be able to understand what changes to make, and to be able to make them safely and correctly. ~ R. Gabriel Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. ~ M. Golding Great software, likewise, requires a fanatical devotion to beauty. If you look inside good software, you find that parts that no one is ever supposed to see are beautiful too. I'm not claiming I write great software, but I know that when it comes to code I behave in a way that would make me eligible for prescription drugs if I approached everyday life the same way. It drives me crazy to see code that's badly indented, or that used ugly variable names. ~ P. Graham You cannot teach beginners top-down programming, because they don't know which end is up. ~ C.A.R. Hoare Mistakes are the portals of discovery. ~ J. Joyce When certain concepts of TeX are introduced informally, general rules will be stated; afterwards you will find that the rules aren't strictly true. In general, the later chapters contain more reliable information than the earlier ones do. The author feels that this technique of deliberate lying will actually make it easier for you to learn the ideas. Once you understand a simple but false rule, it will not be hard to supplement that rule with its exceptions. ~ D. Knuth Any sufficiently advanced bug is indistiguishable from a feature. ~ R. Kulawiec Learning is never done without errors and defeat. ~ V.I. Lenin Complexity is a sign of technical immaturity. Simplicity of use is the real sign of a well designed product whether it is an ATM or a Patriot missile. ~ D. Ling It's OK to figure out murder mysteries, but you shouldn't need to figure out code. You should be able to read it. ~ S. McConnell Making the simple complicated is commonplace; making the complicated simple, awesomely simple, that's creativity. ~ C. Mingus If I had more time, I would have written a shorter letter. ~ B. Pascal When teaching a rapidly changing technology, perspective is more important than content. ~ R. Pattis Fools ignore complexity; pragmatists suffer it; experts avoid it; geniuses remove it. ~ A. Perlis It goes against the grain of modern education to teach students to program. What fun is there to making plans, acquiring discipline, organizing thoughts, devoting attention to detail, and learning to be self critical. ~ A. Perlis To understand a program, you must become both the machine and the program. ~ A. Perlis Computer Science is the first engineering discipline in which the complexity of the objects created is limited solely by the skill of the creator, and not by the strength of raw materials. ~ B. Reid In time of profound change, the learners inherit the earth, while the learned find themselves beautifully equipped to deal with a world that no longer exists. ~ A. Rogers The highest reward for a person's toil is not what they get for it, but what they become by it. ~ J. Ruskin A designer knows he's achieved perfection not when there is nothing left to add, but when there is nothing left to take away. ~ A. de Saint-Exupery One must learn by doing the thing; for though you think you know it, you have no certainty, until you try. ~ Sophocles Being forced to write comments actually improves code, because it is easier to fix a crock than to explain it. ~ G. Steele Don't get suckered in by the comments - they can be terribly misleading: Debug only the code. ~ D. Storer Furious activity is no substitute for understanding. ~ H. H. Williams From a programmer's point of view, the user is a peripheral that types when you issue a read request. ~ P. Williams Voodoo Programming: Things programmers do that they know shouldn't work but they try anyway, and which sometimes actually work, such as recompiling everything. ~ Karl Lehenbauer If you don't think carefully, you might think that programming is just typing statements in a programming language. ~ Ward Cunningham Get and set methods are evil. ~ Allen Holub Classes struggle, some classes triumph, others are eliminated. ~ Mao Zedong Objects can be classified scientifically into three major categories: those that don't work, those that break down and those that get lost. ~ Russell Baker 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. ~ Rich Cook Let's face the obvious: yesterday we were nerds, today we're the cognitive elite. Let's conquer. ~ Chester G Edwards The trouble with the world is that the stupid are cocksure and the intelligent full of doubt. ~ Bertrand Russell The best way to prepare [to be a programmer] is to write programs, and to study great programs that other people have written. In my case, I went to the garbage cans at the Computer Science Center and fished out listings of their operating system. ~ Bill Gates