1256 quotes about technology. Curated.
Silicon Axioms:
1. You don’t manage people, you manage things. You lead people. — Admiral Grace Hopper
2. Program testing can be used to show the presence of bugs, but never to show their absence. — Edsger W. Dijkstra
3. It is impossible to sharpen a pencil with a blunt axe. It is equally vain to try to do it with ten blunt axes instead. — Edsger W. Dijkstra
4. Computer science is no more about computers than astronomy is about telescopes. — Edsger W. Dijkstra
5. If you have a procedure with ten parameters, you probably missed some. — Alan Perlis
6. Adding manpower to a late software project makes it later. — Fred Brooks
7. We can only discover knowledge in an environment that contains that knowledge. — Philip G. Armour
8. Process only allows us to do things we already know how to do. You cannot have a process for something you have never done or do not know how to do. — Philip G. Armour
9. The only processes we can use on the current project were defined on previous projects, which were different from this one. — Philip G. Armour
10. We can only define software processes at two levels: too vague or too confining. — Philip G. Armour
11. What all software developers really want is a rigorous, iron-clad, hide-bound, concrete, universal, absolute, total, definitive, and complete set of rules that they can break. — Philip G. Armour
12. The very last type of knowledge to be considered as a candidate for implementation into an executable software system is the knowledge of how to implement knowledge into an executable software system. — Philip G. Armour
13. If you can’t show that your process is better than random, don’t use it. — Gerald Weinberg
14. Everything in the project must be visible at all times. — Gerald Weinberg
15. Nothing is real until it has passed independent review. — Gerald Weinberg
16. Anything you don’t measure will be out of your control. — Gerald Weinberg
17. If you don’t have to meet requirements, management is no problem. — Gerald Weinberg
18. Hofstadter’s Law: “It always takes longer than you expect, even when you take into account Hofstadter’s Law” — Douglas Hofstadter
19. The animistic metaphor of the bug that maliciously sneaked in while the programmer was not looking is intellectually dishonest as it is a disguise that the error is the programmer’s own creation. — Edsger W. Dijkstra
20. Not everything that can be counted counts, and not everything that counts can be counted. — Albert Einstein (1879–1955)
21. “Cover” is probably the most important word in the tester’s lexicon. If you don’t use some kind of structural coverage metric such as branch cover, you can’t have a quantitative notion of how thorough your testing has been. Am I suggesting that we now drop the use of structural coverage metrics? No! We still want to use whatever coverage metrics we can, such as statement, branch, predicate condition, and data-flow. — Boris Beizer
22. “Good enough software” is rarely good enough. It is a sad manifestation of the spirit of modern times, in which an individual’s pride in his/her work has become rare. The idea that one might derive satisfaction from his or her successful work, because that work is ingenious, beautiful, or just pleasing, has become ridiculed. Nothing but economic success and monetary reward is acceptable. Hence our occupations have become mere jobs. But quality of work can be expected only through personal satisfaction, dedication and enjoyment. In our profession, precision and perfection are not a dispensible luxury, but a simple necessity. — Niklaus Wirth
23. “Interim steps” have a tendency to become permanent in our industry, where “Compatibility” is the way the sins of the fathers are inflicted upon the third and fourth generations … — William Kahan
24. “Legacy code” is a term often used derogatorily to characterize code that is written in a language or style that (1) the speaker/writer considers outdated and/or (2) is competing with something sold/promoted by the speaker/writer. “Legacy code” often differs from its suggested alternative by actually working and scaling. — Bjarne Stroustrup
25. “Paradosfunctionoracle” is the term used by technicians to describe the reason no one knows why your computer won’t work. — J. H. Goldfuss
26. “Privacy,” I repeatedly hear, is the fetish of ponytailed paranoids who have something to hide. Wrong. Digital privacy is a simple, practical matter, a necessary step so we can get on with ecommerce without creating an avalanche of unsolicited interruptions. The digital world is already too noisy — I want anonymity for reasons of tranquility, not dishonesty. — Nicholas Negroponte
27. “Run everywhere” isn’t very everywhere, is it? Some days it’s just “Windows and maybe Linux or Mac.” If J2SE isn’t worth running on set-top boxes and game consoles, and if it’s always behind or half-baked on Mac and Linux, is it ultimately just a “me too” way to write Windows applications? — Chris Adamson
28. “Variety is the spice of life” applies to programming also. — Bjarne Stroustrup
29. In+a+programming+language Simple things should be simple and complex things should be possible. — Alan Kay
30. Internet sites need to be able to interact in one single, universal space. — Tim Berners-Lee
31. John+von+Neumann had the invaluable faculty of being able to take the most difficult problem and separate it into its components, whereupon everything looked brilliantly simple. — Stanislaw Ulam
32. Perl is the sanctuary of dunces. The godsend for brainless coders. The means and banner of sysadmins. The lingua franca of trial-and-error hackers. The song and dance of stultified engineers. — Xah Lee
33. Programming is the only job I can think of where I get to be both an engineer and an artist. There’s an incredible, rigorous, technical element to it, which I like because you have to do very precise thinking. On the other hand, it has a wildly creative side where the boundaries of imagination are the only real limitation. — A. Hertzfeld
34. Software+engineering+advocates have climbed a social ladder for a few decades and are now fighting against a tide of open source software that seems to be bringing bazaar anarchy and taking the well-deserved control out of their hands. Part of this is their utopia of “software engineering” by some magic cathedral approach which has never worked and whose failure the authors of these utopias tend to blame on the lack of control that copyright offers them over their projects. The strange thing here is that they have had the chance to put all these things into practice in their university haven. But, strangely enough, the more successful university projects are carried out in a bazaar-like open-source manner. — Hartmut Pilch
35. Testing+a+statistically+insignificant+portion+of+the+input+space+is a bad bet because you’re asserting that there is a functional relation between the parameters, or even worse, that there is a bug that will create a functional relation between parameters that were not otherwise related. That’s more likely to be sabotage than a bug. You test extreme point combinations only if there is a known functional relation between the parameters or if there is a high likelihood of a bug that could create such a relation. Otherwise, testing combinations of extreme points isn’t much better than attempting all possible input values. — Boris Beizer
36. [The robotic dog’s software is] stored on an 8MB Sony “memory stick” about two inches long. Sure enough, the memory stick gets inserted into the dog’s body in exactly the place you’d sort of hoped they would not have asked you to insert it. — Sony “Aibo” robotic dog owner John Wharton
37. The+trick+in+software+engineering+is+to+find+out how to do intellectually-intensive work in teams. — R. E. Fairley
38. 100 pages of comments will not make a poorly written page of code not suck. — Robert Mollitor
39. 111,111,111 x 111,111,111 = 12,345,678,987,654,321 — from Useless Facts
40. 2 + 2 = 5, for large values of 2. — Anonymous
41. 90% of code written today is getting around other people’s mistakes. — Alan Kay
42. A “hacker” is any person who derives joy from discovering ways to circumvent limitations. — Robert Bickford
43. A programming language is there to allow, not to restrict. — Mathieu Bouchard
44. A brute force solution that works is better than an elegant solution that doesn’t work. — Steve McConnell
45. A C program is like a fast dance on a newly waxed dance floor by people carrying razors. — Waldi Ravens
46. A class is where we teach objects how to behave. — Richard Pattis
47. A common angry protest from software developers and users is that test cases are unrealistic. The developer protests that you’re stressing the software too much in the wrong way, in ways that don’t represent realistic use — I sure hope so. The user complains that because so much of your testing is based on weird situations, that they don’t have confidence that the software will work as intended when actually put to use — the user is also right. But they are also both wrong. They are both wrong because they are confusing two different test objectives. If you make (most of) your tests realistic, you’ll be destroying the effectiveness of the one objective without accomplishing the other. The two objectives are: (1) testing to reveal bugs and (2) testing to support statistically valid inferences about the product’s fitness for use in a real environment. — Boris Beizer
48. A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools. — Douglas Adams
49. A complex system that works is invariably found to have evolved from a simple system that works. — John Gall
50. A computer and a cat are somewhat alike — they both purr, and like to be stroked, and spend a lot of the day motionless. They also have secrets they don’t necessarily share. — John Updike
51. A computer cannot turn bad data into good data. — John R. Pierce
52. A computer does not substitute for judgment any more than a pencil substitutes for literacy. But writing without a pencil is no particular advantage. — Robert McNamara
53. A computer does not think, it feels nothing, and what it is said to “know” — bits of information all cast in the digital mode — has no fringe. Nor has it a memory, only storage room. On any point called for, the answer is all or none. Vagueness, intelligent confusion, original punning on words or ideas never occur, the internal hookups being unchangeable; they were determined once for all by the true minds that made the machine and program. When plugged in, the least elaborate computer can be relied on to work to the fullest extent of its capacity; the greatest mind cannot be relied on for the simplest thing; its variability is its superiority. — Jacques Barzun
54. A computer is a state machine. Threads are for people who can’t program state machines. — Alan Cox
55. A computer is essentially a trained squirrel: acting on reflex, thoughtlessly running back and forth and storing away nuts until some other stimulus makes it do something else. — Ted Nelson
56. A computer is like a violin. You can imagine a novice trying first a phonograph and then a violin. The latter, he says, sounds terrible. That is the argument we have heard from our humanists and most of our computer scientists. Computer programs are good, they say, for particular purposes, but they aren’t flexible. Neither is a violin, or a typewriter, until you learn how to use it. — Marvin Minsky
57. A computer is only as smart as the numbskull sitting in front of it. — Micah Branstetter
58. A computer lets you make more mistakes faster than any other invention in human history, with the possible exception of handguns and tequila. — Mitch Radcliffe
59. A computer once beat me at chess, but it was no match for me at kick boxing. — Emo Philips
60. A computer programmer is a device for turning requirements into undocumented features. It runs on cola, pizza and Dilbert cartoons. — Bram Moolenaar
61. A computer shall not harm your work or, through inaction, allow your work to come to harm. — Jef Raskin
62. A computer shall not waste your time or require you to do more work than is strictly necessary. — Jef Raskin
63. A computer terminal is not some clunky old television with a typewriter in front of it. It is an interface where the mind and body can connect with the universe and move bits of it about. — Douglas Adams
64. A computer will do what you tell it to do, but that may be much different from what you had in mind. — Joseph Weizenbaum
65. A computer without COBOL and FORTRAN is like a piece of chocolate cake without ketchup or mustard. — John Krueger
66. A computer won’t clean up the errors in your manual of procedures. — Sheila M. Eby
67. A consequence of a functional dominance to the test organization is that different tests are likely to be based on different test techniques rather than the specifics of the application. An application orientation means that you’ll have a syntax test followed by a state-machine test, then a domain test, etc., with the consequence that you have to bop back and forth between different test tools: in itself, a major hindrance to both test design and test execution automation. A more practical organization of test suites is: 1. The driver used to execute the test. 1.1. Within that, the technique used to create the test. 1.1.1. Within that, component groups that implement the feature. 1.1.1.1. Within that, the functionality seen by the user. — Boris Beizer
68. A crash is when your competitor’s program dies. When your program dies, it is an “idiosyncrasy.” — Guy Kawasaki
69. A curious kind of tribalism seems to be part and parcel of the social psychology of software development. For many people, being proficient in some technical skill is not enough: one must become a true believer, taking the view that one’s technology of choice is vastly superior and that practitioners of different approaches are misguided, at best. I am a proponent of effective testing, which means that we must consider what can go wrong. Clearly, this analysis must be based on facts, not tribalism. — Robert Binder
70. A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable. — Leslie Lamport
71. A general-purpose programming language should support a variety of ways of thinking and a variety of programming styles. — Bjarne Stroustrup
72. A girl walked into the computer center where I work. She said she was having problems with her Mac. I asked what kind of Mac she had. In an indignant voice, she replied, “Duh, Intosh.” — Samuel Stoddard
73. A good debugging practice is to keep a record of every mistake that is made. Even though this will probably be quite embarrassing, such information is invaluable to anyone doing research on the debugging problem, and it will also help you learn how to reduce the number of future errors. — Donald Knuth
74. A good design is one that you can explain to someone in an elevator ride without wincing internally at your simplifications. The fewer floors you need, the better your design is. — Michael Feathers
75. A good model guides your thinking, a bad one warps it. — Brian Marick
76. A good programmer is someone who looks both ways before crossing a one-way street. — Doug Linder
77. A good programming language is a conceptual universe for thinking about programming. — Alan Perlis
78. A good programming language should, like oil paint, make it easy to change your mind. — Paul Graham
79. A good scare is worth more to a man than good advice. — Edgar Watson Howe
80. A good scientist is a person with original ideas. A good engineer is a person who makes a design that works with as few original ideas as possible. There are no prima donnas in engineering. — Freeman Dyson
81. A good system can’t have a weak command language. — Alan Perlis
82. A good threat is worth a thousand tests. — Boris Beizer
83. A great lathe operator commands several times the wage of an average lathe operator, but a great writer of software code is worth 10,000 times the price of an average software writer. — Bill Gates
84. A hacker on a roll may be able to produce, in a period of a few months, something that a small development group, say seven or eight 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
85. A human can do better than what a machine does best. Recursive and true. — Assaad Chalhoub
86. A language that doesn’t affect the way you think about programming, is not worth knowing. — Alan Perlis
87. A language that doesn’t have everything is actually easier to program in than some that do. — Dennis Ritchie
88. A LISP programmer knows the value of everything, but the cost of nothing. — Alan Perlis
89. A lot is written about digital identity, particularly about using the Net to role-play, to pretend you are somebody other than who you are. Almost nothing is written about the value of being nobody — not somebody different, but nobody in particular. — Nicholas Negroponte
90. A main purpose of testing is to discover bugs. In every test method there is an implicit assumption about the kinds of bugs you’re likely to find. If for example, you have lots of domain bugs, then domain testing is implied. Similarly, a weak front-end for command-driven software implies syntax testing. — Boris Beizer
91. 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. A programming language is a tool that has profound influence on our thinking habits. — Edsger Dijkstra
92. A one-question geek test. If you get the joke, you’re a geek: Seen on a California license plate on a VW Beetle: “FEATURE” — Joshua D. Wachs
93. A pattern is always a problem-solution pair that can be applied in a particular context. Although the solutions might look similar in different patterns, the problems they are solving are different. In fact from ten thousand meters most patterns solve a problem by adding a level of indirection. What is interesting is how this indirection comes about and in particular why it needs to happen. Therefore if you just look at the solution to the problem, it isn’t that enlightening and everything starts to look the same. When we wrote design patterns we often had this feeling — they all started to look like the Strategy pattern. — Erich Gamma
94. A picture is worth 10K words, but only those to describe the picture. Hardly any sets of 10K words can be adequately described with pictures. — Alan Perlis
95. A program is complex when an optimum solution exists but it cannot be found. — Rodolfo A. Frino
96. A program is never less than 90% complete, and never more than 95% complete. — Terry Baker
97. A program should follow the “Law of Least Astonishment.” What is this law? It is simply that the program should always respond to the user in the way that astonishes him least. — The Tao of Programming
98. A program without a loop and a structured variable isn’t worth writing. — Alan Perlis
99. A programmer is a person who passes as an exacting expert on the basis of being able to turn out, after innumerable punching, an infinite series of incomprehensive answers calculated with micrometric precisions from vague assumptions based on debatable figures taken from inconclusive documents and carried out on instruments of problematical accuracy by persons of dubious reliability and questionable mentality for the avowed purpose of annoying and confounding a hopelessly defenseless department that was unfortunate enough to ask for the information in the first place. — IEEE Grid newsmagazine
100. A programming language is a system of notation for describing computations. A useful programming language must therefore be suited for both description (i.e., for human writers and readers of programs) and for computation (i.e., for efficient implementation on computers). But human beings and computers are so different that it is difficult to find notational devices that are well suited to the capabilities of both. — R. Tennant
101. A programming language is a tool that has profound influence on our thinking habits. — Edsger Dijkstra
102. A programming language is like a natural, human language in that it favors certain methaphors, images, and ways of thinking. — Seymour Papert
103. A programming language is low level when its programs require attention to the irrelevant. — Alan Perlis
104. A really good language should be both clean and dirty: cleanly designed, with a small core of well understood and highly orthogonal operators, but dirty in the sense that it lets hackers have their way with it… A real hacker’s language will always have a slightly raffish character. — Paul Graham
105. A scientific approach is generally characterized by the words logical, systematic, impersonal, calm, rational, while an artistic approach is characterized by the words aesthetic, creative, humanitarian, anxious, irrational. It seems to me that both of these apparently contradictory approaches have great value with respect to computer programming. — Donald E. Knuth
106. A software system should be like a Mozart symphony: Perfection at all levels. — Bjarne Dacker
107. A solved problem creates two new problems, and the best prescription for happy living is not to solve any more problems than you have to. — Russell Baker
108. A specification, design, procedure, or test plan that will not fit on one page of 8.5-by-11 inch paper cannot be understood. — Mark Ardis, Wang Institute
109. A standard for copy protection is as premature as a standard for teleportation. — Edward Felten
110. A system support specialist’s life is a sorry one. The only advantage he has over ER doctors is that malpractice suits are rare. On the other hand, ER doctors never have to deal with patients installing new versions of their own innards! — Dick Maliska
111. A UNIX signature isn’t a return address, it’s the ASCII equivalent of a black velvet clown painting. It’s a rectangle of carets surrounding a quote from a literary giant of weeniedom like Heinlein or Dr. Who. — Chris Maeda
112. A well used door needs no oil on its hinges. A swift-flowing stream does not grow stagnant. Software rots if not used. These are great mysteries. — The Tao of Programming
113. A well-designed and humane interface does not need to be split into beginner and expert subsystems. — Jef Raskin
114. A while ago I was received a call from a woman who said that Eudora Pro was showing her password. I found this to be strange, because when you type it in your password in Eudora, it displays asterisks. So when I went over to her office and looked at her desktop. She had renamed the Eudora Pro icon with her password. — Samuel Stoddard
115. A year spent in artificial intelligence is enough to make one believe in God. — Alan Perlis
116. A.C.R.O.N.Y.M. — A Contrived Reduction Of Nouns, Yielding Mnemonics — Unknown
117. About the use of language: it is impossible to sharpen a pencil with a blunt axe. It is equally vain to try to do it with ten blunt axes instead. — Edsgar W. Dijkstra
118. About two months ago, a client called in screaming profanities at me and demanding that I either give him a refund on his one year old system or send a technician out to repair it immediately. His problem was that the taskbar was on the right-hand side of his screen, and he couldn’t get it back to the bottom. — Samuel Stoddard
119. Above all, I hope we in computer science don’t become missionaries. Don’t feel as if you’re Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don’t feel as if the key to successful computing is only in your hands. What’s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more. — Alan Perlis
120. Adapting old programs to fit new machines usually means adapting new machines to behave like old ones. — Alan Perlis
121. After more than 30 years of programming we ought to know that the design of complex software is inherently difficult. Edsger Dijkstra called Software Engineering “Programming in spite of the fact that you can’t.” Indeed, the woes of Software Engineering are largely due to lack of sufficient technical competence. A good designer must rely on experience, on precise, logic thinking; and on pedantic exactness. No magic will do. It is particularly sad that in many informatics curricula, programming in the large is badly neglected. Design has become a non-topic. As a result, software engineering has become the El Dorado for hackers. The more chaotic a program looks, the smaller the danger that someone will take the trouble of inspecting and debunking it. — Niklaus Wirth
122. Ah, the “Birds” fly. Except penguins, kiwis, ostriches… problem. — Hugh Eng
123. AI and Software Engineering. It may well be that the way to build an intelligence is just to get your hands on dirty engineering problems. We don’t have a theory of automobiles. We have good cars, but there are no fundamental equations of automotive science. — Hans Moravec
124. All C programs do the same thing: look at a character and do nothing with it. — Peter Weinberger
125. All language designers are arrogant. Goes with the territory… — Larry Wall
126. All models are wrong; some models are useful. — George Box
127. All parts should go together without forcing. You must remember that the parts you are reassembling were disassembled by you. Therefore, if you can’t get them together again, there must be a reason. By all means, do not use a hammer. — 1925 IBM Maintenance Manual
128. All programmers are optimists. Perhaps this modern sorcery especially attracts those who believe in happy endings and fairy godmothers. Perhaps the hundreds of nitty frustrations drive away all but those who habitually focus on the end goal. Perhaps it is merely that computers are young, programmers are younger, and the young are always optimists. But however the selection process works, the result is indisputable: “This time it will surely run” or “I just found the last bug.” — Fred Brooks
129. All software sucks. — Alan Cox
130. All sorts of computer errors are now turning up. You’d be surprised to know the number of doctors who claim they are treating pregnant men. — Isaac Asimov
131. All stable processes we shall predict. All unstable processes we shall control. — John von Neumann
132. All successful softwares are results of dreams — Assaad Chalhoub
133. Almost without exception the most recent release of any software product is slightly worse than what it’s replacing. Take a deep breath and repeat after me: “Leave it alone.” Well intentioned ameliorations have turned elegant solutions into bloated programs, the “upgrade” often being that you can do almost the same thing in five or more different ways, with inconsistent results. — Nicholas Negroponte
134. Always design your programs as a member of a whole family of programs, including those that are likely to succeed it. — Edsger Dijkstra
135. Always make new mistakes! — Esther Dyson
136. Alzheimer’s Law of Programming: Looking at code you wrote more than two weeks ago is like looking at code you are seeing for the first time. — Dan Hurvitz
137. Americans have a pathological fear of formal manipulation. It seems that the United States has a century of demathematicization which of course is very tragic because in the same century the mathematical computer is invented which is a major mathematical challenge. Somehow or other the mathematical nature of the challenge seems to have been ignored here as politically unpalatable. — Edsger Dijkstra
138. An adequate bootstrap is a contradiction in terms. — Alan Perlis
139. An algorithm must be seen to be believed. — Donald Knuth
140. An application that does something really great that people really want to do can be pathetically unusable, and it will still be a hit. And an application can be the easiest thing in the world to use, but if it doesn’t do anything anybody wants, it will flop. — Joel Spolsky
141. An effective way to test code is to exercise it at its natural boundaries — Brian Kernighan
142. An initial underscore already conveys strong feelings of magicalness to a C programmer. — Larry Wall
143. An interactive debugger is an outstanding example of what is not needed — it encourages trial-and-error hacking rather than systematic design, and also hides marginal people barely qualified for precision programming. — Harlan D. Mills
144. An old puzzle asks how a barometer can be used to measure the height of a building. Answers range from dropping the instrument from the top and measuring the time of its fall to giving it to the building’s superintendent in return for a look at the plans. A modern version of the puzzle asks how a personal computer can balance a checkbook. An elegant solution is to sell the machine and deposit the money. — Jon Bentley
145. An organization that treats its programmers as morons will soon have programmers that are willing and able to act like morons only. — Bjarne Stroustrup
146. Analytical software enables you to shift human resources from rote data collection to value-added customer service and support where the human touch makes a profound difference. — Bill Gates
147. And despite the occasional predictions that assembly language will be outlawed by the US government sometime this decade, it is likely that someone who is absolutely determined to sink to the lowest level of programming languages will be able to find an employer who will indulge his base instincts. — Ed Yourdan in 1991
148. And don’t tell me there isn’t one bit of difference between null and space, because that’s exactly how much difference there is. — Larry Wall
149. And every now and then people find the bugs, and they interpret those as cool failures in the Sims terms. For them it’s like a treasure hunt, you know. Players like to know that they’ve discovered things that even the designers didn’t know were in the game. — Will Wright
150. And no, I’m not a Java fan. I dislike hype, I dislike marketing of programming tools to nonprogrammers, I dislike proprietary languages, and I like lots of programming languages. — Bjarne Stroustrup
151. 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. — B. Bryson
152. Another effective debugging technique is to explain your code to someone else. This will often cause you to explain the bug to yourself. Sometimes it takes no more than a few sentences, followed by an embarrassed “Never mind, I see what’s wrong. Sorry to bother you.” This works remarkably well; you can even use non-programmers as listeners. One university computer center kept a teddy bear near the help desk. Students with mysterious bugs were required to explain them to the bear before they could speak to a human counselor. — Brian Kernighan
153. Another good debugging practice is to keep a record of every mistake that is made. Even though this will probably be quite embarrassing, such information is invaluable to anyone doing research on the debugging problem, and it will also help you learn how to reduce the number of future errors. — Donald Knuth
154. Another terrible stress testing practice is to attempt manual stress testing — only the testers gets stressed. It’s another, worthless, feel-good testing method. — Boris Beizer
155. Any attempt to brew coffee with a teapot should result in the error code “418 I’m a teapot.” The resulting entity body MAY be short and stout. — HTCPCP Spec, RFC 2324
156. Any fool can write code that a computer can understand. Good programmers write code that humans can understand. — R. Fowler
157. Any general system law will have at least two peculiar exceptions. — Gerald Weinberg
158. Any Internet user knows it is quite difficult to stumble across pornography. — Senator Russel Feingold
159. Any nitwit can understand computers. Many do. — Ted Nelson
160. Any noun can be verbed. — Alan Perlis
161. Any one “view” of requirements is insufficient to understand or describe the desired behavior of a complex system. — Alan M. Davis
162. Any performance problem can be solved by removing a level of indirection. — Mike Haertel
163. Any problem in computer science can be solved with another layer of indirection. But that usually will create another problem. — Davin Wheeler
164. Any sufficiently advanced bug is indistinguishable from a feature. — Rick Kulawiec
165. Any teacher that can be replaced by a computer, deserves to be. — David Thornburg
166. Anybody who’s studied software engineering knows that a schedule which underestimates the time needed to develop a project actually makes the project take longer. — Jeff Raskin
167. Anyone attempting to generate random numbers by deterministic means is, of course, living in a state of sin. — John Von Neumann
168. Anyone can make a project fail through sheer luck. Only the savvy know how to do it by design. — Naomi Karten
169. Anyone who has lost track of time when using a computer knows the propensity to dream, the urge to make dreams come true and the tendency to miss lunch. — Tim Berners-Lee
170. Anyone who slaps a “this page is best viewed with Browser X” label on a Web page appears to be yearning for the bad old days, before the Web, when you had very little chance of reading a document written on another computer, another word processor, or another network. — Tim Berners-Lee
171. Anyone with half a brain can see that object-oriented programming is counter-intuitive, illogical and inefficient. — Bjarne Stroustrup
172. AOL is like the cockroach left after the nuclear bomb hits. They know how to survive. — Jan Horsfall
173. Applicants must also have extensive knowledge of UNIX, although they should have sufficiently good programming taste to not consider this an achievement. — MIT job advertisement
174. 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? — Edsger Dijkstra
175. Arguing that Java is better than C++ is like arguing that grasshoppers taste better than tree bark. — Thant Tessman
176. Arguments over grammar and style are often as fierce as those over IBM versus Mac, and as fruitless as Coke versus Pepsi and boxers versus briefs — Jack Lynch
177. Around computers it is difficult to find the correct unit of time to measure progress. Some cathedrals took a century to complete. Can you imagine the grandeur and scope of a program that would take as long? — Alan Perlis
178. Artificial intellegence is no match for natural stupidity. — Sarah Chambers
179. Artificial Intelligence is whatever hasn’t been done yet. — Larry Tesler
180. Artificial Intelligence: the art of making computers that behave like the ones in movies. — Bill Bulko
181. Artificial intelligences make mistakes too, only faster. — Larry Wall
182. As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications. — David Parnas
183. As a slow-witted human being I have a very small head and I had better learn to live with it and to respect my limitations and give them full credit, rather than to try to ignore them, for the latter vain effort will be punished by failure. — Edsger W. Dijkstra
184. As complexity rises, precise statements lose meaning, and meaningful statements lose precision. — Lotfi Zadeh
185. As economics is known as “The Miserable Science,” software engineering should be known as “The Doomed Discipline” — doomed because it cannot even approach its goal since its goal is self-contradictory. If you carefully read its literature and analyze what its devotees actually do, you will discover that software engineering has accepted as its charter, “How to program if you cannot.” The practice is pervaded by the reassuring illusion that programs are just devices like any others, the only difference admitted being that their manufacture might require a new type of craftsman, viz., programmers. — Edsger W. Dijkstra
186. As far as I’m concerned, manual testing is ludicrous and self-contradictory. It’s based upon a fallacy. Anybody who thinks they can test manually, doesn’t take into account the error rate in manual test execution. — Boris Beizer
187. As far as the customer is concerned, the interface is the product. — Jef Raskin
188. As long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now 1972 that we have gigantic computers, programming has become a gigantic problem. As the power of available machines grew by a factor of more than a thousand, society’s ambition to apply these new machines grew in proportion, and it was the poor programmer who found his job in this exploded field of tension between the ends and the means. The increased power of the hardware, together with the perhaps more dramatic increase in its reliability, made solutions feasible that the programmer had not dared to dream about a few years before. And now, a few years later, he had to dream about them and even worse, he had to transform such dreams into reality! It is no wonder that we found ourselves in a software crisis — Edsger Dijkstra
189. As machines become more and more efficient and perfect, so it will become clear that imperfection is the greatness of man. — Ernst Fischer
190. As part of the conversion, computer specialists rewrote 1,500 programs — a process that traditionally requires some debugging. — USA Today, referring to the IRS switchover to a new computer system
191. As soon as the+Wardenclyffe+facility+is completed, it will be possible for a business man in New York to dictate instructions, and have them instantly appear in type at his office in London or elsewhere. He will be able to call up, from his desk, and talk to any telephone subscriber on the globe, without any change whatever in the existing equipment. An inexpensive instrument, not bigger than a watch, will enable its bearer to hear anywhere, on sea or land, music or song, the speech of a political leader, the address of an eminent man of science, or the sermon of an eloquent clergyman, delivered in some other place, however distant. In the same manner any picture, character, drawing, or print can be transferred from one to another place … — Nikola Tesla, Wireless Telegraphy and Telephony, 1908
192. As soon as we have a single requirement in our net we can start testing. The aim is to trap requirements-related defects as early as they can be identified. We prevent incorrect requirements from being incorporated in the design and implementation where they will be more difficult and expensive to find and correct. — Suzanne Robertson
193. 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
194. As testers, we must test every line of code (or see to it that someone has done it). That means exercising many conditions that are unlikely to come up in any one user’s experience. The programmer who protests that we’re being unrealistic is contradicting herself because much of her code is “unrealistic” in the same sense. Another reason for using “unrealistic” tests is that realistically, that’s often the only way to force certain low probability timing and race conditions to which our software must be invulnerable. — Boris Beizer
195. As the world becomes increasingly inundated with information, value shifts from individual pieces of information to the structure placed on the information. — Michael F. Schwartz
196. As Will Rogers would have said, “There is no such thing as a free variable.” — Alan Perlis
197. At a place like IBM, there’s an infinite world of products that you can create. But, too often, management would say, “Great, you big-idea guys, go go go.” But then they give all the money to the people who control the revenue streams, the people with the overhead projectors and PowerPoint slides. — Ted Selker
198. At first I hoped that such a technically unsound project [the PL/I design phase] 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. — Charles Anthony Richard Hoare
199. At Microsoft there are lots of brilliant ideas but the image is that they all come from the top — I’m afraid that’s not quite right. — Bill Gates
200. At some point in the project somebody will start whining about the need to determine the project requirements. This involves interviewing people who don’t know what they want but, curiously, know exactly when they need it. — Scott Adams
201. At some point you have to decide whether you’re going to be a politician or an engineer. You cannot be both. To be a politician is to champion perception over reality. To be an engineer is to make perception subservient to reality. They are opposites. You can’t do both simultaneously. — H. W. Kenton
202. At the risk of being a total killjoy, I propose that you look at the next Dilbert cartoon that falls under your eye in a totally different way. Ask yourself about Dilbert’s role in whatever corporate nonsense is the butt of the joke. At least partly at fault for every bad management move is some gutless Dilbert who allows it to happen. — Tom DeMarco
203. At this time I do not have a personal relationship with a computer. — Janet Reno
204. Bad code isn’t bad, it’s just misunderstood. — Lettie Buena
205. Bandwidth grows at least three times faster than computer power. — George Gilder
206. Barring miracles, you could not run your car by doing a computer simulation of the oxidation of gasoline, and you could not digest pizza by running a program that simulates such digestion. It seems obvious that a simulation of cognition will similarly not produce the effects of the neurobiology of cognition. — John Searle
207. Base eight is just like base ten really, if you’re missing two fingers. — Tom Lehrer
208. BASIC is to computer programming as QWERTY is to typing. — Seymour Papert
209. Basic research is what I’m doing when I don’t know what I’m doing. — John Von Neuman
210. Basically, our goal is to organize the world’s information and to make it universally accessible and useful. — Larry Page
211. Be nice to nerds. Chances are you’ll end up working for one. — Bill Gates
212. Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defense against complexity. The geniuses of the computer field, on the the other hand, are the people with the keenest aesthetic senses, the ones who are capable of creating beauty. Beauty is decisive at every level: the most important interfaces, the most important programming languages, the winning algorithms are the beautiful ones. — David Gelernter
213. Because every person knows what he likes, every person thinks he is an expert on user interfaces. — Paul Heckel
214. Because of its vitality, the computing field is always in desperate need of new cliches: Banality soothes our nerves. — Alan Perlis
215. Because we are returning a copy for postfix expressions, statements such as (c+)+; won’t work as expected. — Weiskamp & Flamig, “The Complete C++ Primer”
216. Before software can be reusable it first has to be usable. — Ralph Johnson
217. Before we work on artificial intelligence why don’t we do something about natural stupidity? — Steve Polyak
218. Being a better programmer means being able to design more effective and trustworthy programs and knowing how to do that efficiently. It is about not wasting storage cells or machine cycles and about avoiding those complexities that increase the number of reasoning steps needed to keep the design under strict intellectual control. — Edsger Dijkstra
219. Being a Linux user is sort of like living in a house inhabited by a large family of carpenters and architects. Every morning when you wake up, the house is a little different. Maybe there is a new turret, or some walls have moved. Or perhaps someone has temporarily removed the floor under your bed. — John R. Levine and Margaret Levine Young in “Unix For Dummies”
220. Being able to break security doesn’t make you a hacker anymore than being able to hotwire cars makes you an automotive engineer. — Eric Raymond
221. Being abstract is something profoundly different from being vague… The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise. — Edsger Dijkstra
222. Being forced to write comments actually improves code, because it is easier to fix a crock than to explain it. — Guy Steele
223. Being really good at C++ is like being really good at using rocks to sharpen sticks. — Thant Tessman
224. Besides a mathematical inclination, an exceptionally good mastery of one’s native tongue is the most vital asset of a competent programmer. — Edsger Dijkstra
225. Best Practice: If you’re trying to find true system bugs and have never subjected this software to a real stress test, then it is high time you started. Dollar for dollar, stress testing has probably the highest payoff of any test technique for finding system bugs. Proper stress testing is useful in finding synchronization and timing bugs, interlock problems, priority problems, resource loss bugs, and general abuse of the API. Stress testing is usually easy to set up. You can create stress loads by looping transactions back on themselves so that the system stresses itself: e.g., an incoming message is output on a looped-back line to generate another incoming message. Alternatively you can use another system of comparable size to create the stress load. — Boris Beizer
226. Best Practice: Once we’ve found and fixed the low level bugs it’s time to address real system bugs. We do this because if we don’t, our end-users will find these bugs for us. Most system bugs, such as resource loss, timing, and synchronization bugs can be found by applying specific system testing methods. There’s no need to be victimized by such bugs if you’ve made a concerted effort to find them. And there’s also no excuse for them. — Boris Beizer
227. Best Practice: Testing the interfaces between otherwise correct components to assure that they are compatible. Integration bugs are just behind unit bugs in frequency; and for object-oriented software, are probably more frequent. — Boris Beizer
228. Best Practice: Using small, representative sample of your installed user base (e.g., under 1%) for+beta+testing can be an effective way to wring out latent configuration sensitivity and performance bugs not previously found. The sample must be representative of both high-end and low-end configurations and high-end and low-end users. — Boris Beizer
229. Best Practice: We build software for users. They’re not (should not be) concerned with how the software works, how it’s organized, or the cute programming tricks we used. They’re only concerned with how it behaves and therefore, testing that behavior must be central to the testing effort. This philosophy must be applied to every level because the “user” of an internal subroutine, say, is the programmer who calls that subroutine. Therefore, testing to requirements of every level should be an objective at every testing level. — Boris Beizer
230. Beta testers are vulnerable to what I have called “programmers’ immunity.” This is the phenomenon in which programmers or testers subconsciously modify their behavior in order to avoid bugs that they are barely, consciously, aware of. It’s amazing how quickly the subconscious mind teaches us how to walk through a mine field. Judging from how often software that flies through beta testing with honors crashes in the field, programmers’ immunity must also be at work with+beta+testers. Automated testing minimizes the effects of programmers’ immunity, but most beta testers aren’t automated and consequently, for them, the immunity is likely to be more prevalent. False confidence again. — Boris Beizer
231. Beta testing seems to be firmly entrenched as the last bastion against rampaging bugs. But beta testing is effective only when the internal testing isn’t. If the software is well tested, beta testers don’t find much that your own testers and programmers haven’t found earlier. Furthermore, they report hundreds of symptoms for the same bug and it’s a big job to correlate all those trouble reports and find out that you’ve been talking about the same bug that has long ago been scheduled for repair. — Boris Beizer
232. Between 1892 say, and 1904, movies were made by the cameraman because he understood the equipment. And that is exactly where we are now in+software+design. In 1904 they invented the director; what was the director? It was the guy who didn’t have to know how to load the camera didn’t have to know how to sew costumes, play a violin, dance, fence, or hang the lights. But, he had to know how to make those effects come together in a unified experience. Why are video games so much better designed than office software? Videogames are designed by people who love to play video games. Office software is designed by people who want to do something else on the weekend. What does showbusiness teach you? It teaches you that design is war; it is a power struggle between the producers, directors, authors, everyone who wants to be involved. — Ted Nelson
233. Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy. — Alan Perlis
234. Beyond this I must add that programming in Smalltalk is fun. On the one hand, the act of assembling expressions into statements and then into methods is not very different from conventional programming. On the other hand, the experience is totally different, for the objects which populate and traverse the code are active entities, and writing expressions feels like organizing trained animals rather than pushing boxes around. — Daniel Ingalls, 1978
235. Blink your eyelids periodically to lubricate your eyes. — page 16 of the HP “Environmental, Health Safety Handbook for Employees”
236. Bringing computers into the home won’t change either one, but may revitalize the corner saloon. — Alan Perlis
237. British troops conducting counter-insurgency operations in Aden in the 1960s reputedly tied terror suspects up to an old IBM mainframe computer, explaining that radiation from their lie detector would drain away their manhood unless they told the truth. — Australian Associated Press
238. Brooks’ Law: Adding manpower to a late software project makes it later. — Fred Brooks
239. BTW, a member of the ANSI C committee once told me that the only thing rand is used for in C code is to decide whether to pick up the axe or throw the dwarf. — Tim Peters
240. Bug, n.: An aspect of a computer program which exists because the programmer was thinking about Jumbo Jacks or stock options when he or she wrote the program. Fortunately, the second-to-last bug has just been fixed. — Ray Simard
241. bug, n: An elusive creature living in a program that makes it incorrect. The activity of “debugging”, or removing bugs from a program, ends when people get tired of doing it, not when the bugs are removed. — “Datamation”, January 15, 1984
242. Bugs lurk in corners and congregate at boundaries. — Boris Beizer
243. Building large applications is still really difficult. Making them serve an organization well for many years is almost impossible. — Malcolm P. Atkinson
244. Burn-out in a developer is the death of the artistic self, a perverse maturation, a shrinking with age, a withering with experience. — Jim McCarthy
245. But I have always been a hacker if you want to put it that way. I prefer to call it unorthodox or guerilla research protocols that test the limits of society, technological advances, overall impact upon our world and the never ending thirst for finding out just what the hell is out there. — Ian Murphy
246. 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
247. But it’s a general way to debug: tell someone what right things your program is doing. Chances are that you will see the wrong thing(s) before the other person has said anything. I just stick a picture of a face on my monitor and talk to it to find bugs. — Richard van de Stadt
248. But let your communication be Yea, yea; nay, nay: for whatsoever is more than these cometh of evil. — Matthew 5:37 New+Testament+affirmation+of+the+binary+number+system
249. But that’s not the most insidious thing about beta testing. You can’t really do away with beta testing because the mythic effectiveness of beta testing is so strong that the trade press won’t let you get away without it. The worst part about beta testing is the pesticide paradox and programmers’ immunity. Beta testers wear out. Because most beta testers aren’t professional testers, they’re unlikely to change their behavior or how they go about finding bugs. But the bugs they could have found are now gone. So you get a clean bill of health from the beta testers and you (falsely) confidently believe that your software is now robust. Wrong! It’s only robust against this group of beta testers and not the general user population. — Boris Beizer
250. But there’s more to defining processes and coordinating people than assigning someone to dream up a checklist and get it blessed in a staff meeting — James Bach
251. But those are negative reasons for having independent testing. Independent testing can be useful (here he goes contradicting himself again) if the tester bring specialized expertise to the test floor that the developers do not, or cannot conveniently have. That is, if they add value. By specialized expertise I mean such things as: localization, usability, performance, security, cross platform compatibility, configuration, recovery, network, distributed processing — and a whole lot more. Whether such value-added independent testing is done by an organizationally independent test group is largely a parochial cultural thing and also a question of process maturity. — Boris Beizer
252. Buying the right computer and getting it to work properly is no more complicated than building a nuclear reactor from wristwatch parts in a darkened room using only your teeth. — Dave Barry
253. By claiming that they can contribute to software engineering, the soft scientists make themselves even more ridiculous. (Not less dangerous, alas!) In spite of its name, software engineering requires (cruelly) hard science for its support. — Edsger Dijkstra
254. C /n./: A programming language that is sort of like Pascal, except more like assembly, except that it isn’t very much like either one, or anything else. It is either the best language available to the art today, or it isn’t. — Ray Simard
255. C has all the expressive power of two dixie cups and a string. — Jamie Zawinski
256. C is often described, with a mixture of fondness and disdain varying according to the speaker, as “a language that combines all the elegance and power of assembly language with all the readability and maintainability of assembly language.” — MIT Jargon Dictionary
257. C is quirky, flawed and an enormous success. — Dennis Ritchie
258. C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg. — Bjarne Stroustrup
259. C program is like a fast dance on a newly waxed dance floor by people carrying razors. — Waldi Ravens.
260. C#: Computer language that reminds us it is not intended for musicians. — Rodolfo A. Frino
261. C() is a write-only, high-level assembler language. — Stefan Van Baelen
262. C++ : Where friends have access to your private members. — Gavin Russell Baker
263. C++ has its place in the history of programming languages. Just as Caligula has his place in the history of the Roman Empire. — Robert Firth
264. C++ in Cantonese is pronounced “C ga ga.” Need I say more? — Mark Glewwe
265. C++ is an atrocity, the bletcherous scab of the computing world, responsible for more buffer overflows, more security breaches, more blue screens of death, more mysterious failures than any other computer language in the history of the planet Earth. — Eric Lee Green
266. C++ is history repeated as tragedy. Java is history repeated as farce. — Scott McKay
267. C++ is like jamming a helicopter inside a Miata and expecting some sort of improvement. — Drew Olbrich
268. C++ is the only current language making COBOL look good. — Bertrand Meyer
269. C++ programmer: Class of person who inherits from multiple parents. — Rodolfo A. Frino
270. C++ tries to guard against Murphy, not Machiavelli. — Damian Conway
271. C+ would make a decent teaching language if we could teach the + part without the C part. — Michael B. Feldman
272. C++: Where friends have access to your private members. — Gavin Russell Baker
273. Cannot empty the recycle bin. Try freeing up some space by emptying your recycle bin. — Windows 2000 error message
274. CautionCape does not enable user to fly. — Batman costume warning label
275. Celestial navigation is based on the premise that the Earth is the center of the universe. The premise is wrong, but the navigation works. An incorrect model can be a useful tool. — Kelvin Throop, III
276. Certainly not every good program is object-oriented, and not every object-oriented program is good. — Bjarne Stroustrup
277. Claiming Java is easier than C++ is like saying that K2 is shorter than Everest. — Larry O’Brien
278. COBOL has almost no fervent enthusiasts. As a programming tool, it has roughly the sex appeal of a wrench. — Charles Petzold
279. COBOL was designed so that managers could read code.
280. BASIC was designed for people who are not programmers.
281. FORTRAN is for scientists.
282. ADA comes from a committee — a government committee no less.
283. PILOT is for teachers.
284. PASCAL is for students.
285. LOGO is for children.
286. APL is for Martians.
287. FORTH, LISP and PROLOG are specialty languages.
288. C, however, is for programmers. — Al Stevens
289. Code generation, like drinking alcohol, is good in moderation. — Alex Lowe
290. Code should run as fast as necessary, but no faster; something important is always traded away to increase speed. — Richard Pattis
291. Code-coverage testing: Making every line of code feel appreciated and needed. — Sara Ford
292. Comments lie. Code doesn’t. — Ron Jeffries
293. Commercial pressures of one sort or another will divert the attention of the best thinkers from real innovation to exploitation of the current fad, from prospecting to mining a known lode. Perhaps this effect explains why so few interesting software systems have come from the larger computer companies; they are locked into the existing world. — Dennis M. Richie
294. Complexity has and will maintain a strong fascination for many people. It is true that we live in a complex world and strive to solve inherently complex problems, which often do require complex mechanisms. However, this should not diminish our desire for elegant solutions, which convince by their clarity and effectiveness. Simple, elegant solutions are more effective, but they are harder to find than complex ones, and they require more time, which we too often believe to be unaffordable — Nicklaus Wirth
295. Complexity is a sign of technical immaturity. Simplicity of use is the real sign of a well design product whether it is an ATM or a Patriot missile. — Daniel T. Ling
296. Composing computer programs to solve scientific problems is like writing poetry. You must choose every word with care and link it with the other words in perfect syntax. There is no place for verbosity or carelessness. To become fluent in a computer lnaguage demands almost the antithesis of modern loose thinking. It requires many interactive sessions, the hands-on use of the device. You do not learn a foreign language from a book, rather you have to live in the country for years to let the langauge become an automatic part of you, and the same is true for computer languages. — James Lovelock
297. Computation has made the tree flower. — Alan Perlis
298. Computer architecture, like other architecture, is the art of determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints. Architecture must include engineering considerations, so that design will be economical and feasible; but the emphasis in architecture is upon the needs of the user, whereas in engineering the emphasis is upon the needs of the fabricator. — Fred Brooks
299. Computer dating is fine, if you’re a computer. — Rita Mae Brown
300. Computer games don’t affect kids, I mean if Pac Man affected us as kids, we’d all be running around in darkened rooms, munching pills and listening to repetitive music. — Marcus Brigstocke
301. Computer programming is an art form, like the creation of poetry or music. — Donald Knuth
302. 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. — Donald E. Knuth
303. Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends — commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see. — Larry O’Brien and Bruce Eckel
304. Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter. — Eric Raymond
305. Computer Science is a science of abstraction — creating the right model for a problem and devising the appropriate mechanizable techniques to solve it. — A. Aho and J. Ullman
306. Computer Science is embarrassed by the computer. — Alan Perlis
307. Computer science is the first engineering discipline ever in which the complexity of the objects created is limited by the skill of the creator and not limited by the strength of the raw materials. If steel beams were infinitely strong and couldn’t ever bend no matter what you did, then skyscrapers could be as complicated as computers. — Brian K. Reid
308. 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. — Brian Reid
309. Computer Science is the only discipline in which we view adding a new wing to a building as being maintenance. — James J, Horning
310. Computer science is to biology what calculus is to physics. It’s the natural mathematical technique that best maps the character of the subject. — Harold Morowitz
311. Computer science only indicates the retrospective omnipotence of our technologies. In other words, an infinite capacity to process data…but only data — i.e. the already given…and in no sense a new vision. With that science, we are entering an era of exhaustivity, which is also an era of exhaustion. — Jean Baudrillard
312. Computer Science: 1. A study akin to numerology and astrology, but lacking the precision of the former and the success of the latter. 2. The boring art of coping with a large number of trivialities. — Stan Kelly-Bootle
313. Computer Science: Science that studies ways to improve algorithms invented in the 18th century. — Rodolfo A. Frino
314. Computer Science:
1. A study akin to numerology and astrology, but lacking the precision of the former and the success of the latter.
2. The boring art of coping with a large number of trivialities. — Stan Kelly-Bootle
315. Computer system analysis is like child-rearing; you can do grievous damage, but you cannot ensure success. — Tom DeMarco
316. Computera million morons working at the speed of light. — David Ferrier
317. Computer-based interruptions fall into a sort of Heisenbergian uncertainty trap: it is difficult to know whether an e-mail message is worth interrupting your work for unless you open and read it — at which point you have, of course, interrupted yourself. Our software tools were essentially designed to compete with one another for our attention, like needy toddlers. — Clive Thompson
318. Computers “remember” things in the form of discrete entries: the input of quantities, graphics, words, etc. Each item is separable, perhaps designated by a unique address or file name, and all of it subject to total recall. Unless the machine malfunctions, it can regurgitate everything it has stored exactly as it was entered, whether a single number or a lengthy document. Human memory, on the other hand, is the invisible psychic adhesive that holds our identity together from moment to moment. This makes it a radically different phenomenon from computer memory. It flows not only through the mind, but through the emotions, the senses, the body. We remember things as no computer can — in our muscles and reflexes: how to swim, play an instrument, use a tool. — Theodore Roszak
319. Computers allow you to make more mistakes faster than any other invention in human history with the possible exception of handguns and tequila. — Mitch Ratcliffe
320. Computers are composed of nothing more than logic gates stretched out to the horizon in a vast numerical irrigation system. — Stan Augarten
321. Computers are good at following instructions, but not at reading your mind. — Donald Knuth
322. Computers are incredibly fast, accurate, and stupid. Human beings are incredibly slow, inaccurate, and brilliant. Together they are powerful beyond imagination. — Albert Einstein
323. Computers are like bikinis. They save people a lot of guesswork. — Sam Ewing
324. Computers are like Old Testament gods; lots of rules and no mercy. — Joseph Campbell
325. Computers are magnificent tools for the realization of our dreams, but no machine can replace the human spark of spirit, compassion, love, and understanding. — Louis Gerstner
326. Computers are merely ingenious devices to fulfill unimportant functions. The computer revolution is an explosion of nonsense. — Neil Postman
327. Computers are obstinate about precision. Miss a period here or a semicolon there, and you’ll get
328. pistachios instead of caviar every time.
n Bill Weinman
329. Computers are to computing as instruments are to music. Software is the score whose interpretations amplifies our reach and lifts our spirits. Leonardo da Vinci called music the shaping of the invisible, and his phrase is even more apt as a description of software. — Alan Kay
330. Computers are useless. They can only give you answers. — Pablo Picasso
331. Computers as we know them today will a) be boring, and b) disappear into things that are first and foremost something else: smart nails, self-cleaning shirts, driverless cars, therapeutic Barbie dolls, intelligent doorknobs that let the Federal Express man in and Fido out, but not 10 other dogs back in. Computers will be a sweeping yet invisible part of our everyday lives: We’ll live in them, wear them, even eat them. — Nicholas Negroponte, December 1998
332. Computers can figure out all kinds of problems, except the things in the world that just don’t add up. — James Magary
333. Computers do not solve problems, they execute solutions. — Laurent Gasser
334. Computers don’t die, they password away. — Rodolfo A. Frino
335. Computers don’t introduce order anywhere as much as they expose opportunities. — Alan Perlis
336. Computers have enabled people to make more mistakes faster than almost any invention in history, with the possible exception of tequila and hand guns. — Carl Gundlach
337. Computers make it easier to do a lot of things, but most of the things they make it easier to do don’t need to be done. — Andy Rooney
338. Computers represent a radical novelty in our history. The usual way in which we plan for tomorrow is in yesterday’s vocabulary. By means of metaphors and analogies, we try to link the new to the old, the novel to the familiar. Coping with radical novelty requires an orthogonal method. Coming to grips with a radical novelty amounts to creating and learning a new foreign language that cannot be translated into one’s own mother tongue. Computers embody not one radical novelty but two of them. — Edsger W. Dijkstra
339. Computers shouldn’t be unusable. You don’t need to know how to work a telephone switch to make a phone call, or how to use the Hoover Dam to take a shower, or how to work a nuclear-power plant to turn on the lights. — Scott McNealy
340. Computers will never take the place of books. You can’t stand on a floppy disk to reach a high shelf. — Sam Ewing
341. Computers will start thinking the day they realize we have built them. — Rodolfo A. Frino
342. Computing is not about computers any more. It is about living. — Nicholas Negroponte
343. Computing science is — and will always be — concerned with the interplay between mechanized and human symbol manipulation usually referred to as “computing” and “programming,” respectively. — Edsger W. Dijkstra
344. 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. — Bill Clinton
345. Consistently separating words by spaces became a general custom about the tenth century CE, and lasted until about 1957, when FORTRAN abandoned the practice.
346. Constants aren’t. — John Peers
347. Constraints often boost creativity. — Jim Hugunin
348. Control over computing belongs with users. — Brandt Allen
349. Controlling complexity is the essence of computer programming. — Brian Kernighan
350. Counting in binary is just like counting in decimal if you are all thumbs. — Glaser and Way
351. Counting in octal is just like counting in decimal, if you don’t use your thumbs. — Tom Lehrer
352. Crappy old OSes have value in the basically negative sense that changing to new ones makes us wish we’d never been born. — Neal Stephenson
353. Creativity is just connecting things. When you ask creative people how they did something, they feel a little guilty because they didn’t really do it, they just saw something. It seemed obvious to them after a while. That’s because they were able to connect experiences they’ve had and synthesize new things. And the reason they were able to do that was that they’ve had more experiences or they have thought more about their experiences than other people. — Steve Jobs
354. Cringley’s Second Law: Ease of use with equivalent performance varies with the square root of the cost of development. That means that to design a computer that’s ten times easier to use would cost 100 times as much. — Robert Cringley
355. Cubicles have become such an icon of nasty workplaces that it’s shocking that the companies who manufacture them still have the chutzpah to pretend that they’re efficient, productive, and pleasant. — Joel Spolsky
356. Custom development is that murky world where a customer tells you what to build, and you say, “are you sure?” and they say “yes,” and you make an absolutely beautiful spec, and say, “is this what you want?” and they say “yes,” and you make them sign the spec in indelible ink, nay, blood, and they do, and then you build that thing they signed off on, promptly, precisely and exactly, and they see it and they are horrified and shocked, and you spend the rest of the week reading up on whether your E&O insurance is going to cover the legal fees for the lawsuit you’ve gotten yourself into or merely the settlement cost. Or, if you’re really lucky, the customer will smile wanly and put your code in a drawer and never use it again and never call you back. — Joel Spolsky
357. Cutler, armed with a schedule for+finishing+Microsoft+Windows+NT, was urging the team to “eat its own dog food.” Part macho stunt and part common sense, the “dog food diet” was the cornerstone of Cutler’s philosophy. “We’re going to run on the program we build,” he insisted. Eating dog food meant there would be no escape from facing the flaws and imperfections of NT. Even while immersed in his own piece of NT, a code writer would confront all of its weaknesses. By controlling the operations of a code writer’s computer, NT would define the quality of his life. If at first NT tasted no better than dog food, all the better. Code writers would feel an urgent need to raise the dietary level by quickly fixing the errant code and writing more durable code in the first place. — G. Pascal Zachary
358. Cyberspace. A consensual hallucination experienced daily by billions of legitimate operators, in every nation, by children being taught mathematical concepts… A graphic representation of data abstracted from the banks of every computer in the human system. Unthinkable complexity. Lines of light ranged in the nonspace of the mind, clusters and constellations of data. Like city lights, receding… — William Gibson
359. Data does have a problem, in that it’s only available about the past. — Clayton Christensen
360. Data is a lot like humans: It is born. Matures. Gets married to other data, divorced. Gets old. One thing that it doesn’t do is die. It has to be killed. — Arthur Miller
361. Data is not information. Information is not knowledge. Knowledge is not understanding. Understanding is not wisdom. — Gary Schubert
362. Data without generalization is just gossip. — Robert Pirsig
363. Dave, my mind is going. I can feel it. I can feel it. My mind is going. There is no question about it. I can feel it. I can feel it. I can feel it. I’m afraid. — HAL
364. Dealing with failure is easy: Work hard to improve. Success is also easy to handle: You’ve solved the wrong problem. Work hard to improve. — Alan Perlis
365. Debugging is an art that needs much further study. The most effective debugging techniques seem to be those which are designed and built into the program itself — many of today’s best programmers will devote nearly half of their programs to facilitating the debugging process on the other half; the first half…will eventually be thrown away, but the net result is a surprising gain in productivity. Another good debugging practice is to keep a record of every mistake that is made. Even though this will probably be quite embarrassing, such information is invaluable to anyone doing research on the debugging problem, and it will also help you learn how to reduce the number of future errors. — Donald Knuth
366. Debugging is twice as hard as writing 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 Kernighan
367. 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
368. Design and programming are human activities; forget that and all is lost. — Bjarne Stroustrup
369. Designers must do two seemingly contradictory things at the same time: They must design for perfection, and they must design as though errors are inevitable. And they must do the second without compromising the first. — Bob Colwell
370. Designers talk and think a lot like science fiction writers do, except in a much less melodramatic and histrionic way. — Bruce Sterling
371. Despite many assertions to the contrary, the brain is not “like a computer.” Yes, the brain has many electrical connections, just like a computer. But at each point in a computer only a binary decision can be made: yes or no, on or off, 0 or 1. Each point in the brain, each brain cell, contains all the genetic information necessary to reproduce the entire organism. A brain cell is not a switch. It has a memory; it can be subtle. Each brain cell is like a computer. The brain is like a hundred billion computers all connected together. It is impossible to understand because it is too complex. As Emerson Pugh wrote, “If the human brain was so simple that we could understand it, we would be so simple that we couldn’t.” — Jean M. Goodwin
372. Despite their reputation for thick-headedness or stubbornness, it is important for technicians to see themselves as superior people who can easily adapt to change. — Taiichi Ohno
373. Development is maintenance. — Brian Marick
374. Distributed file systems are a cruel hoax. — Zalman Stern
375. Divide each difficulty into as many parts as is feasible and necessary to resolve it. — Rene Descartes
376. Do not assume more variables than necessary. — William of Occam
377. Do not expose your LaserWriter to fire or intense heat. — Apple LaserWriter manual
378. Do not look into the laser with remaining eye! — Warning message on the side of laboratory laser
379. Do only what only you can do. — Edsger W. Dijkstra
380. Do what you think is interesting, do something that you think is fun and worthwhile, because otherwise you won’t do it well anyway. — Brian Kernighan
381. Documentation is like sex; when it’s good, it’s very, very good, and when it’s bad, it’s better than nothing. — Dick Brandon
382. Documentation is like term insurance: It satisfies because almost no one who subscribes to it depends on its benefits. — Alan Perlis
383. Documentation is not understanding, process is not discipline, formality is not skill. — Jim Highsmith
384. Documentation is the castor oil of programming. — Gerald Weinberg
385. Doing linear scans over an associative array is like trying to club someone to death with a loaded Uzi. — Larry Wall
386. Doing more things faster is no substitute for doing the right things. — Stephen R. Covey
387. Doing research on the Web is like using a library assembled piecemeal by pack rats and vandalized nightly. — Roger Ebert
388. Don’t anthropomorphize computers. They don’t like it. — Stefan Chakerian
389. Don’t blame me for the fact that competent programming, as I view it as an intellectual possibility, will be too difficult for “the average programmer.” You must not fall into the trap of rejecting a surgical technique because it is beyond the capabilities of the barber in his shop around the corner. — Edsger Dijkstra
390. Don’t fix bugs later; fix them now. — Steve Maguire
391. Don’t get suckered in by the comments — they can be terribly misleading: Debug only the code. — Dave Storer
392. Don’t have good ideas if you aren’t willing to be responsible for them. — Alan Perlis
393. Don’t include a sentence in documentation if its negation is obviously false. — Bob Martin, AT&T
394. Don’t keep “trying” solutions until you find one that works. Take the time to find the correct solution. — Steve Maguire
395. Don’t worry about what anybody else is going to do. The best way to predict the future is to invent it. Really smart people with reasonable funding can do just about anything that doesn’t violate too many of Newton’s Laws. — Alan Kay
396. Don’t worry, be crappy. Revolutionary means you ship and then test… Lots of things made the first Mac in 1984 a piece of crap — but it was a revolutionary piece of crap. — Guy Kawasaki
397. Don’t you hate code that’s not properly indented? Making indenting part of the syntax guarantees that all code is properly indented. — Guido van Rossum
398. Doom should be an Olympic sport. — Dave Goldberger
399. DOS computers manufactured by companies such as IBM, Compaq, Tandy, and millions of others are by far the most popular, with about 70 million machines in use worldwide. Macintosh fans, on the other hand, may note that cockroaches are far more numerous than humans, and that numbers alone do not denote a higher life form. — New York Times, November 26, 1991
400. During a code review, when I asked why (besides the source control file headers) there was not a comment in 240,000 lines of code which was getting handed over to me for maintenance, the programmer replied, “I’m terse.” — Samuel Stoddard
401. Each new user of a system uncovers a new class of bugs. — Brian Kernighan
402. Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it in the same way twice. — Christopher Alexander
403. Editing is a rewording activity. — Alan Perlis
404. Eiffel borrows quite heavily from some earlier programming languages and I am sure that if we had found a good programming construct in C we would have used it as well. — Bertrand Meyer
405. 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
406. Elegance is not a dispensable luxury but a factor that decides between success and failure. — Edsger Dijkstra
407. EMACS could not have been reached by a process of careful design, because such processes arrive only at goals which are visible at the outset, and whose desirability is established on the bottom line at the outset. Neither I nor anyone else visualized an extensible editor until I had made one, nor appreciated its value until he had experienced it. EMACS exists because I felt free to make individually useful small improvements on a path whose end was not in sight. — Richard Stallman
408. Encapsulate the concept that varies — Erich Gamma
409. Encryption is a powerful defensive weapon for free people. It offers a technical guarantee of privacy, regardless of who is running the government. It’s hard to think of a more powerful, less dangerous tool for liberty. — Esther Dyson
410. Engineering conveys an image of bridge or building construction. Software engineering is therefore a metaphor for how software should be constructed, that is, in a manner analogous to constructing a physical structure. Formalists love this metaphor, but object advocates find it counterproductive. A better metaphor for assembling objects to collectively perform tasks is theater. — David West
411. Engineering is not merely knowing and being knowledgeable, like a walking encyclopedia; engineering is not merely analysis; engineering is not merely the possession of the capacity to get elegant solutions to non-existent engineering problems; engineering is practicing the art of the organized forcing of technological change. Engineers operate at the interface between science and society. — Dean Gordon Brown
412. Engineering is the conscious application of science to the problems of economic production. — H. P. Gillette
413. EngineeringFinding the balance between what is technically feasible and what is economically acceptable. — DeGarmo, Sullivan and Bontadelli
414. Error, no keyboard detected, press F1 to continue — Motherboard error message
415. Errors using inadequate data are much less than those using no data at all. — Charles Babbage
416. Even the humble everyday ATM does not really diagnose and repair itself. It demands a largely hidden staff of technicians, some of whom are paid four times as much as bank tellers. — Edward Tenner
417. Even the word “users” is an artifact of the [command-and-control] mentality. — Christopher Locke
418. Even under the assumption of flawlessly working machines we should ask ourselves the questions: “When an automatic computer produces results why do we trust them, if we do so?” and after that: “What measures can we take to increase our confidence that the results produced are indeed the results intended?” — Edsger Dijkstra
419. 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. — Steve McConnell
420. Every decision a person makes stems from the person’s values and goals. People can have many different goals and values; fame, profit, love, survival, fun, and freedom, are just some of the goals that a good person might have. When the goal is to help others as well as oneself, we call that idealism. — Richard Stallman
421. Every great mistake has a halfway moment, a split second when it can be recalled and perhaps remedied. — Pearl Buck
422. Every language has its partisans, usually among folks deeply immersed in their particular theology, triumphant in having divined the inner meaning of some esoteric operations, like a medieval Jesuit hot on the trail of the final ontological proof, whose conciseness in solving a single problem makes them almost swoon with ecstacy at the expected savings of many keystrokes, as if those very keystrokes represented a lot of heavy lifting and hauling on their part. — John Holmgren
423. Every once in a while, you just have to go down to the native code to really feel like a real programmer. Those garbage collections and bytecode verifications are all great, but it’s just not so fun to live in an environment where you can’t even shoot yourself. — Kohsuke Kawaguchi
424. Every operating system out there is about equal. We all suck. — Brian Valentine, Microsoft
425. Every piece of software written today is likely going to infringe on someone else’s patent. — Miguel de Icaza
426. Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can. — Jamie Zawinski
427. Every program has (at least) two purposes; the one for which it was written and another for which it wasn’t. — Alan Perlis
428. Every program is a part of some other program and rarely fits. — Alan Perlis
429. Every program starts off with bugs. Many programs end up with bugs as well. There are two corollaries to this: first, you must test all your programs straight away. And second, there’s no point in losing your temper every time they don’t work. — Z80 Users Manual
430. Every time I write about the impossibility of effectively protecting digital files on a general purpose computer, I get responses from people decrying the death of copyright. “How will authors and artists get paid for their work?” they ask me. Truth be told, I don’t know. I feel rather like the physicist who just explained relativity to a group of would-be interstellar travelers, only to be asked, “How do you expect us to get to the stars, then?” I’m sorry, but I don’t know that, either. — Bruce Schneier
431. Every time we’ve moved ahead in IBM, it was because someone was willing to take a chance, put his head on the block, and try something new. — Thomas J. Watson
432. Everything really interesting that happens in software projects eventually comes down to people. — James Bach
433. Everything should be built top-down, except the first time. — Alan Perlis
434. Exceptions relieve the programmer of tediously 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
435. Exploratory testing can be described as a martial art of the mind. It’s how you deal with a product that jumps out from the bushes and challenges you to a duel of testing. Well, you don’t become a black belt by reading books. You have to work on it. — James Bach
436. False confidence comes from running tens of thousands of tests, most of which won’t find bugs. Like it or not, we tend to be impressed by test quantities rather than quality. Even experienced testers get impressed. You can’t test for 1000+ years, so you knock off a few billion tests over the next several months. But the tests you ran represent a statistically insignificant portion of the input space and no confidence, statistical or otherwise, is warranted. — Boris Beizer
437. Fancy algorithms are slow when N is small, and N is usually small. — R. Pike
438. Fancy optimizers have fancy bugs. — R. Pike
439. Fast, fat computers breed slow, lazy programmers. — Robert Hummel
440. Few companies that installed computers to reduce the employment of clerks have realized their expectations. They now need more, and more expensive clerks even though they call them “operators” or “programmers.” — Peter F. Drucker
441. Few influential people involved with the Internet claim that it is a good in and of itself. It is a powerful tool for solving social problems, just as it is a tool for making money, finding lost relatives, receiving medical advice, or, come to that, trading instructions for making bombs. — Esther Dyson
442. Few people request influence when their world is behaving rationally. As a result, consultants tend to see more than their fair share of irrationality. — Gerald M. Weinberg,
443. Fifty years into the First Computing Era some of us in the computing arena have come to realize we’ve made a false start, and for us to finally be able to produce lasting, correct, beautiful, usable, scalable, enjoyable software that stands the tests of time and moral human endeavor, we need to start over. — Richard P. Gabriel
444. Fifty years of programming language research, and we end up with C++ ? — Richard A. O’Keefe
445. Fig Newton: The force required to accelerate a fig 39.37 inches/second. — J. Hart
446. Find something you’re passionate about and keep tremendously interested in it. — Julia Child
447. Finding a way to reduce the number of testers and the perpetual excuse that nothing can be done because it’s a testing hit is a good idea. The current system is not going to scale and we will soon be at the point that nothing can get done because it can’t be tested. — Dave Cutler
448. First law of Bad Management: If something isn’t working, do more of it. — Tom DeMarco
449. First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. — George Carrette
450. First we thought the PC was a calculator. Then we found out how to turn numbers into letters with ASCII : and we thought it was a typewriter. Then we discovered graphics, and we thought it was a television. With the World Wide Web, we’ve realized it’s a brochure. — Douglas Adams
451. First you listen to the users; then you ignore them. — Ken Arnold
452. Fixing fresh bugs is easier than fixing old ones. It’s usually fairly quick to find a bug in code you just wrote. When it turns up you often know what’s wrong before you even look at the source, because you were already worrying about it subconsciously. Fixing a bug in something you wrote six months ago (the average case if you release once a year) is a lot more work. And since you don’t understand the code as well, you’re more likely to fix it in an ugly way, or even introduce more bugs. When you catch bugs early, you also get fewer compound bugs. Compound bugs are two separate bugs that interact: you trip going downstairs, and when you reach for the handrail it come off in your hand. In software this kind of bug is the hardest to find, and also tends to have the worst consequences. The traditional “break everything and then filter out the bugs” approach inherently yields a lot of compound bugs. And software released in a series of small chances inherently tends not to. The floors are constantly being swept clean of any loose objects that might later get stuck to something. — Paul Graham
453. Foolproof systems don’t take into account the ingenuity of fools. — Gene Brown
454. Fools ignore complexity. Pragmatists suffer it. Experts can avoid it. Geniuses remove it. — Alan Perlis
455. For 250 packages each of which can be in 100 states, and assuming 100 test cases per set-up, executed at 100 tests per second we have almost twenty years of testing. If you take the load order of the programs into account, multiply the above by about 1017 for a mere 107 universe lifetimes. The combinatorics are awful and whatever testing you do, is a statistically insignificant sample of the realm of possibilities. You don’t do configuration compatibility testing because you really can’t and because attempting to do it just leads to false confidence. — Boris Beizer
456. 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
457. For me, the first challenge for computing science is to discover how to maintain order in a finite, but very large, discrete universe that is intricately intertwined. And a second, but not less important challenge is how to mold what you have achieved in solving the first problem, into a teachable discipline. It does not suffice to hone your own intellect (that will join you in your grave), you must teach others how to hone theirs. The more you concentrate on these two challenges, the clearer you will see that they are only two sides of the same coin. Teaching yourself is discovering what is teachable. — Edsger W. Dijkstra
458. For systems, the analogue of a face-lift is to add to the control graph an edge that creates a cycle, not just an additional node. — Alan Perlis
459. For the first objective, note that most of the code (e.g., 75%) concerns low probability but potentially harmful situations. In a statistical sense, much of the code is fundamentally unrealistic. As testers, we must test every line of code (or see to it that someone has done it). That means exercising many conditions that are unlikely to come up in any one user’s experience. The programmer who protests that we’re being unrealistic is contradicting herself because much of her code is “unrealistic” in the same sense. Another reason for using “unrealistic” tests is that realistically, that’s often the only way to force certain low probability timing and race conditions to which our software must be invulnerable. — Boris Beizer
460. For the time being, programming is a consumer job, assembly line coding is the norm, and what little exciting stuff is being performed is not going to make it compared to the mass-marketed crap sold by those who think they can surf on the previous half-century’s worth of inventions forever. — Eric Naggum
461. For us scientists it is very tempting to blame the lack of education of the average engineer, the shortsightedness of the managers, and the malice of the entrepreneurs for this sorry state of affairs, but that won’t do. You see, while we all know that unmastered complexity is at the root of the misery, we do not know what degree of simplicity can be obtained, nor to what extent the intrinsic complexity of the whole design has to show up in the interfaces. We simply do not know yet the limits of disentanglement. We do not know yet whether intrinsic intricacy can be distinguished from accidental intricacy. — Edsger W. Dijkstra
462. FORTRAN was the language of choice for the same reason that three-legged races are popular. — Ken Thompson
463. FORTRAN, the infantile disorder, by now nearly 20 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use. — Edsger Dijkstra, circa 1970
464. Frequently, crashes are followed with a message like “ID 02.” “ID” is an abbreviation for idiosyncrasy and the number that follows indicates how many more months of testing the product should have had. — Guy Kawasaki
465. Fresh software is like a box of chocolates, testers never know what they are going to get. — John Littlejohn
466. Friends don’t let friends do capture-replay. — Harry Robinson
467. From a practical viewpoint, it’s easy to see that C will always be with us, taking a place beside Fortran and Cobol as the right tool for certain jobs. — Larry O’Brien
468. From a programmer’s point of view, the user is a peripheral that types when you issue a read request. — P. Williams
469. Functions delay binding; data structures induce binding. Moral: Structure data late in the programming process. — Alan Perlis
470. Furthermore, test tools by themselves have no long-term viability unless they become part of a comprehensive software development environment. Development tool vendors have realized this and have turned their attention to test tools. Tool vendors are merging, being bought, or going out of business. — Boris Beizer
471. Gates has always understood Moore’s Law better than anyone else in the industry. If you can make something run at all, get it out there — it may be slow and clunky, but hardware improvements will bail you out. If you wait until it’s running perfectly on the hardware already in the field, it will be obsolete before it’s released. This philosophy built Microsoft and is the main reason Microsoft won the war IBM declared back in the OS/2 days. — Jerry Pournelle
472. Gather some statistics on your beta test effort and do some cost justification for it (true total cost) and then determine if the effort is worth continuing or if the money is better spent on beefing up inspections, unit testing, and in-house system testing. — Boris Beizer
473. Geeks like to think that they can ignore politics, you can leave politics alone, but politics won’t leave you alone. — Richard Stallman
474. Getting information off the Internet is like taking a drink from a fire hydrant. — Mitchell Kapor
475. Given enough eyeballs, all bugs are shallow; e.g., given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone. — Eric Raymond
476. Giving a man space is like giving a dog a computer: the chances are he will not use it wisely. — Bette-Jane Raphael
477. Giving the Linus Torvalds Award to the Free Software Foundation is a bit like giving the Han Solo Award to the Rebel Alliance. — Richard Stallman
478. Giving up on assembly language was the apple in our Garden of Eden: Languages whose use squanders machine cycles are sinful. The LISP machine now permits LISP programmers to abandon bra and fig-leaf. — Alan Perlis
479. Going from programming in Pascal to programming in C, is like learning to write in Morse code. — J.P. Candusso
480. 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
481. Good engineering doesn’t consist of random acts of heroism. — Harry Robinson
482. Good engineering is the difference between code running in eight minutes or eight hours. It affects real people in real ways. It’s not a “matter of opinion,” any more than a bird taking a flight is a “matter of opinion.” — H. W. Kenton
483. Good programmers know what to write. Great ones know what to use. — Eric Raymond
484. Good programmers know what’s beautiful and bad ones don’t. — David Gelernter
485. Good software, like wine, takes time. — Joel Spolsky
486. Google confuses me; if you search for “michael hudson” my page is the third hit — but my name doesn’t actually appear anywhere on the linked page! The “did you mean to search for…” feature is also downright uncanny. They’ve clearly sold their souls to the devil — there’s no other explanation. — Michael Hudson
487. Goto, n.: A programming tool that exists to allow structured programmers to complain about unstructured programmers. — Ray Simard
488. Great software 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. — Paul Graham
489. 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. — Richard Gabriel
490. Hacking is the art of fixing program bugs without knowing what you’re doing. — Rodolfo A. Frino
491. Handle your special cases just once. — Steve Maguire
492. Hard Drive: The part of the computer that stops working when you spill beer on it. — Dave Barry
493. Hardwarethe parts of a computer that can be kicked. — Jeff Pesis
494. Haven’t we all been taught that good software is defensive; that good software defends itself against the vagaries of input errors? The question is what are we defending against? If we look at much of contemporary software we find low-level internal routines that have no direct interface with the outside world (users, for example) protecting themselves against the vagaries of potentially harmful internally generated data. That’s programming under the assumption that your fellow programmer is a fool at best or a cad at worst. That’s programming under the assumption that there is no effective process; that there are no inspections; that there hasn’t been any effective unit testing. Programming in order to cover your ass and fix blame rather than in order to fix problems. The trouble with this kind of code is that there are so many idiosyncratic notions of danger that there’s no way to test that code. — Boris Beizer
495. He who spends his time reading aphorisms of another to have one of his own, has no time or brains to have any of his own. — M. Bernheisel
496. Here are terms to beware of: “fool-proof” or “idiot-proof” — oh, you mean you think your customers are fools or idiots?; “user-friendly” — which usually means to hold users by the hand and force them to do things one step at a time, in prescribed order, whether they like it or not; and “intuitive” — which in actuality means so automatic it is not conscious, but those who use the term forget that almost everything we call intuitive, such as walking or using a pencil took years of practice. — Don Norman
497. Here’s to the crazy ones. The misfits. The rebels. The troublemakers. The round heads in the square holes. The ones who see things differently. They’re not fond of rules. You can quote them. Disagree with them. Glorify or vilify them. But the only thing you can’t do is ignore them. Because they change things. They push the human race forward. And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do. — Apple Computer advertisement
498. Heresy! Beta testing seems to be firmly entrenched as the last bastion against rampaging bugs. Beta testing assures that bad bugs don’t get to the user. Lets see an alternate view of beta testing. Beta testing is effective only when the internal testing isn’t. Some major players in the software game have learned that with good internal unit testing, good integration testing, and thorough in- house system testing, that the bugs found by beta testing aren’t worth the cost of administrating a beta test effort even if the “testers” work unpaid. Beta testing isn’t free. You have to ship them the software. You have to provide above normal support at no cost to them. You have to have enough additional ports to handle the load. If the software is well tested, beta testers don’t find much that your own testers and programmers haven’t found earlier. Furthermore, they report hundreds of symptoms for the same bug and it’s a big job to correlate all those trouble reports and find out that you’ve been talking about the same bug that has long ago been scheduled for repair. — Boris Beizer
499. Hitting your modem with an aluminum baseball bat is only going to get you electrocuted. Try a wooden one. — Lynn Marshall
500. Hoaxes use weaknesses in human behaviour to ensure they are replicated and distributed. In other words, hoaxes prey on the Human Operating System. — Stewart Kirkpatrick
501. Home computers are being called upon to perform many new functions, including the consumption of homework formerly eaten by the dog. — Doug Larson
502. How can you be just like a real techie? Frequently use the word “irrelevant,” but never spell it correctly. Try “irrelivant,” “irelivent,” and “irrevelant” to start with, but be sure to develop your own sub-literate variations for extra coolness! — Jeffrey Carl
503. How could this Y2K be a problem in a country where we have Intel and Microsoft? — Al Gore
504. How does a project get to be a year late? — One day at a time. — Fred Brooks
505. How good the design is doesn’t matter near as much as whether the design is getting better or worse. If it is getting better, day by day, I can live with it forever. If it is getting worse, I will die. — Kent Beck
506. How rare it is that maintaining someone else’s code is akin to entering a beautifully designed building, which you admire as you walk around and plan how to add a wing or do some redecorating. More often, maintaining someone else’s code is like being thrown headlong into a big pile of slimy, smelly garbage. — Bill Venners
507. Human beings are not accustomed to being perfect, and few areas of human activity demand it. If one program character, one pause of the incantation is not strictly in proper form, the magic doesn’t work. Adjustment to the requirement for perfection is, I think, the most difficult part of learning to program. — Frederick Brooks
508. Humans are allergic to change. They love to say, “We’ve always done it this way.” I try to fight that. That’s why I have a clock on my wall that runs counter-clockwise. — Grace Hopper
509. Humor is incongruity in action. The universe is incongruous. Humor is therefore the best expression of the truth underlying the universe. — Stanley Bing
510. I always leave the most controversial to last. I don’t believe in independent test groups and I never have, despite the fact that I have at times pushed it very hard and have often fought for it (sometimes without success). Independent test groups are an immature phase in the evolution of the software development process through which most organizations must go. I don’t believe in independent test groups because I don’t believe in testing. Testing is quality control. It finds bugs after they’ve been put in. As a long-term goal, we must strive to avoid or prevent the bugs, not just find them and fix them. I don’t believe in testing because every time a test reveals a bug, that’s one more opportunity to prevent a bug that we somehow missed. We will keep on finding and deploying better bug prevention methods, but as we do, we’ll also keep building more complicated and subtler software with even subtler bugs that demand, in turn, even more powerful test methods. So while I don’t believe in testing, I also believe that some kind of testing will always be with us. — Boris Beizer
511. I am a design chauvinist. I believe that good design is magical and not to be lightly tinkered with. The difference between a great design and a lousy one is in the meshing of the thousand details that either fit or don’t, and the spirit of the passionate intellect that has tied them together, or tried. That’s why programming — or buying software — on the basis of “lists of features” is a doomed and misguided effort. The features can be thrown together, as in a garbage can, or carefully laid together and interwoven in elegant unification, as in APL, or the Forth language, or the game of chess. — Ted Nelson
512. I am a hard-core believer that the clean desktop is the way to go… At the same time, we told OEMs that if they were going to put a bunch of icons on the desktop, then so were we. — Jim Allchin
513. I am not the only person who uses his computer mainly for the purpose of diddling with his computer. — Dave Barry
514. I am one of the culprits who created the Y2K problem. I used to write those programs back in the ’60s and ’70s, and was so proud of the fact that I was able to squeeze a few elements of space by not having to put ‘19’ before the year. — Alan Greenspan
515. I am only a footnote, but proud of the footnote I have become. My subsequent work — on eliciting principles and developing the theory of interface design, so that many people will be able to do what I did — is probably also footnote-worthy. In looking back at this turn-of-the-century period, the rise of a worldwide network will be seen as the most significant part of the computer revolution. — Jef Raskin
516. I am sometimes something of a lazy person, so when I end up spending a lot of time using something myself — as I did with Google in the earliest of days, I knew it was a big deal. — Sergey Brin, Google
517. I believe the hard part of building software is the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. We still make syntax errors, to be sure; but they are fuzz compared with the conceptual errors in most systems. — Frederick P. Brooks, Jr.
518. I can see computers everywhere — except in the productivity statistics. — Robert Solow
519. I cannot imagine any condition which would cause this ship to founder. Modern shipbuilding has gone beyond that. — E. J. Smith, Captain of the Titanic
520. I chose C as a base for my work because I needed something that allowed me to express the machine fairly directly. And machines are things with addresses and sequences of objects. Unless you can do efficient operations on that, you’re sunk. — Bjarne Stroustrup
521. I code therefore I exist — somewhere between Heaven and HTML. — Ad Hales
522. I consider C++ the most significant technical hazard to the survival of your project and do so
523. without apologies. — Alistair Cockburn
524. I consider it the obligation of scientists and intellectuals to ensure that their ideas are made accessible and thus useful to society instead of being mere playthings for specialists. — Bjarne Stroustrup
525. I do not fear computers. I fear the lack of them. — Isaac Asimov
526. I don’t believe in testing. Testing is quality control. It finds bugs after they’ve been put in. As a long-term goal, we must strive to avoid or prevent the bugs, not just find them and fix them. I don’t believe in testing because every time a test reveals a bug, that’s one more opportunity to prevent a bug that we somehow missed. We will keep on finding and deploying better bug prevention methods, but as we do, we’ll also keep building more complicated and subtler software with even subtler bugs that demand, in turn, even more powerful test methods. So while I don’t believe in testing, I also believe that some kind of testing will always be with us. — Boris Beizer
527. I don’t do feelings, I’ll leave that to Barry Manilow. — Scott McNealy, CEO, Sun Microsystems
528. I don’t know what percentage of our time on any computer-based project is spent getting the equipment to work right, but if I had a gardener who spent as much of her time fixing her shovel as we spend fooling with our computers, I’d buy her a good shovel. — Erasmus Smums
529. I don’t think there’s anything unique about human intelligence. All the neurons in the brain that make up perceptions and emotions operate in a binary fashion. — Bill Gates
530. I enjoy…looking at charts about what sites are getting the most traffic. Everyone else always looks at the top of the chart. I always look at the bottom because the bottom is where the opportunity is. You’re not going to compete with Yahoo and Netscape at the top. It’s the bottom where the opportunity is. — Michael Robertson, CEO of MP3.com in an interview with CNET News.
531. I fear the new object-oriented systems may suffer the fate of LISP, in that they can do many things, but the complexity of the class hierarchies may cause them to collapse under their own weight. — Bill Joy
532. I find languages that support just one programming paradigm constraining. — Bjarne Stroustrup
533. I find sitting at a specially equipped desk in front of some pretty ugly plastics and staring at a little window is a very unnatural event. — Harold Hambrose
534. I find this a nice feature but it is not according to the documentation. Or is it a bug? Let’s call it an accidental feature. — Larry Wall
535. I get into the meanest, nastiest frame of mind I can manage, and I write the nastiest-testing code I can think of. Then I turn around and embed that in even nastier constructions that are nearly obscene. — Donald Knuth
536. I have a friend who told me that the very best computer system ever built by mankind was by the Druids at Stonehenge. Well, that’s an old story. But what I liked was that he felt the Druids didn’t die out, they just went bankrupt trying to debug the software. — J. Finke
537. I have an almost religious zeal.. not for technology per se, but for the Internet which is for me, the nervous system of mother Earth, which I see as a living creature, linking up. — Dan Millman
538. I have no comments on C# as a language. It will take a lot to persuade me that the world needs yet another proprietary language (YAPL). It will be especially hard to persuade me that it needs a language that is closely integrated with a specific proprietary operating system. If you want to write exclusively for the .Net platform, C# isn’t the worst alternative, but remember that C++ is a strongly supported — though less strongly hyped — alternative on that platform. — Bjarne Stroustrup
539. I have stopped reading Stephen King novels. Now I just read C code instead. — Richard O’Keefe
540. I have traveled the length and breadth of this country and talked with the best people, and I can assure you that data processing is a fad that won’t last out the year. — The editor in charge of business books for Prentice Hall, 1957
541. I invented the term “Object-Oriented,” and I can tell you I did not have C++ in mind. — Alan Kay
542. I just want to go on the record as being completely opposed to computer languages. Let them have their own language and soon they’ll be off in the corner plotting with each other! — Steven D. Majewski
543. I knew I’d hate COBOL the moment I saw they’d used “perform” instead of “do.” — Larry Wall
544. I like having a machine called “elvis” on the network because that way, I can say “ping elvis” and have it come back with “elvis is alive.” — Carl Shipley
545. I like to remind my team that ultimately we ship products, not specs and design documents, so we need to remember the end game. — Ron Soukup
546. I like writing code, more than I like writing text. Writing code provides instant gratification. There’s a feedback that you can’t get from writing text. And there’s more objective criteria. You can look at the size of the code, the speed of the code, the cleanliness of the code structure. It is really obvious. That’s great. — Bjarne Stroustrup
547. I liken starting one’s computing career with Unix, say as an undergraduate, to being born in East Africa. It is intolerably hot, your body is covered with lice and flies, you are malnourished and you suffer from numerous curable diseases. But, as far as young East Africans can tell, this is simply the natural condition and they live within it. By the time they find out differently, it is too late. They already think that the writing of shell scripts is a natural act. — Ken Pier
548. I looked up “standard” in the dictionary. There are eleven different definitions. — Dave Winer
549. I maintain that programming cannot be done in less than three-hour windows. It takes three hours to spin up to speed, gather your concentration, shift into “right brain mode,” and really focus on a problem. Effective programmers organize their day to have at least one three-hour window, and hopefully two or three. This is why good programmers often work late at night. They don’t get interrupted as much… — Ole Eichhorn
550. I prefer (all things being equal) regularity/orthogonality and logical syntax/semantics in a language because there is less to have to remember. (Of course I know all things are NEVER really equal!) — Guido van Rossum
551. I realized that my prior projects were just finger warm-ups. Now I have to tackle complexity itself. But it took long, before I had assembled the courage to do so. — Edsger W. Dijkstra
552. I regularly read Internet user groups filled with messages from people trying to solve software incompatibility problems that, in terms of complexity, make the U.S. Tax Code look like Dr. Seuss. — Dave Barry
553. I see design standards that don’t tell you how to come up with a good design — only how to write it down, employee evaluation standards that don’t help you build meaningful long-term relationships with staff, testing standards that don’t tell you how to invent a test that is worth running. — Tom DeMarco
554. I tell people to start implementing when they are pretty sure there aren’t more important stories out there. An iteration’s worth of data is worth months of speculation. — Kent Beck
555. I think all languages start as “firebrands” wielding their “simplicity” as weapons aganst the “horribly complex legacy languages.” Once reality sets in, the new languages mature by acquiring facilities and complexities equivalent to other successful languages. This has happened for every successful language…and for a few unsuccessful ones. — Bjarne Stroustrup
556. I think another good principle is separating presentation or user interface (UI) from the real essence of what your app is about. By following that principle I have gotten lucky with changes time and time again. So I think that’s a good principle to follow. — Martin Fowler
557. I think complexity is mostly sort of crummy stuff that is there because it’s too expensive to change the interface. — Jaron Lanier
558. I think computer viruses should count as life. I think it says something about human nature that the only form of life we have created so far is purely destructive. We’ve created life in our own image. — Stephen W. Hawking
559. I think conventional languages are for the birds. They’re just extensions of the von Neumann computer, and they keep our noses in the dirt of dealing with individual words and computing addresses, and doing all kinds of silly things like that, things that we’ve picked up from programming for computers; we’ve built them into programming languages; we’ve built them into Fortran; we’ve built them in PL/1; we’ve built them into almost every language. — John Backus
560. I think it is inevitable that people program poorly. Training will not substantially help matters. We have to learn to live with it. — Alan Perlis
561. I think it would be pretty bizarre if OS/2 finds any popularity. — Bill Gates
562. I think it’s fair to say that personal computers have become the most empowering tool we’ve ever created. They’re tools of communication, they’re tools of creativity, and they can be shaped by their user. — Bill Gates
563. I think of software projects as journeys into the uncertain. As we begin we may not know exactly what we are to build, we may not know what is the most appropriate technology to build it with, and we are very unsure of how long a journey we will take. The odd thing is that many people are very certain of when we will be done. The deadline is very often set before the system is specified. — Tim Lister
564. I think that computer science in its middle age has become incestuous: people are trained by people who think one way. — Ken Thompson
565. I think that it’s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don’t think we are. I think we’re responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. — Alan Perlis
566. I think that the most beautiful thing lately hasn’t been in hardware or software per se but collaboration — the idea behind Napster, which uses the distributed power of the Internet as its engine. — Steven Levy
567. I think the world is run by C students. — Al McGuire
568. I think there certainly was a milestone in the ’90s with regards to the Internet achieving critical mass. There were several magical factors that came together: the creation of HTML by Tim Berners-Lee, the drop in the price of communications, and all the PCs out there that you could put this software into. — Bill Gates
569. I thought when I went to college I would be a music major. I played saxophone, but then the tuba player got into an accident and I became a tuba player. I arranged a piece for band that combined all kinds of themes off TV shows — Dragnet, Howdy Doody Time, and Bryl Cream. I knew nothing about copyright law. — Donald Knuth
570. I took the classic approach to software development:
1. encounter a bug
2. blame the tool
3. post to the mailing list and complain about it
4. read the docs
5. find own mistake and crawl back into my corner — Ralph Scheuer
571. I used to program my IBM PC to make hideous noises to wake me up. I also made the conscious decision to hard-code the alarm time into the program, so as to make it more difficult for me to reset it. After I realised that I was routinely getting up, editing the source file, recompiling the program and rerunning it for 15 minutes extra sleep, before going back to bed, I gave up and made the alarm time a command-line option. — B. M. Buck
572. I view the landslide of C use in education as something of a calamity. — Nicklaus Wirth
573. I want to put a ding in the universe. — Steve Jobs
574. I was eventually persuaded of the need to design programming notations so as to maximize the number of errors which cannot be made, or if made, can be reliably detected at compile time. — Charles Anthony Richard Hoare
575. I would therefore like to posit that computing’s central challenge, “How not to make a mess of it,” has not been met. On the contrary, most of our systems are much more complicated than can be considered healthy, and are too messy and chaotic to be used in comfort and confidence. — Edsger Dijkstra
576. IBMIt may be slow, but it’s hard to use. — Andrew Tannenbaum
577. I’d rather write programs to write programs than write programs. — Dick Sites, DEC
578. I’d say that of the world’s economies, there’s more that believe in intellectual property today than ever. There are fewer communists in the world today than there were. There are some new modern-day sort of communists who want to get rid of the incentive for musicians and moviemakers and software makers under various guises. They don’t think that those incentives should exist. — Bill Gates
579. I’d sit there and first I’d look through the comments, pick through the security holes, and then I’d see what the developer did to fix it because they’d always leave it well commented — thank you very much — and then I’d work back and figure out how I could write exploit code to exploit their vulnerabilities. — Kevin Mitnick
580. If 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say to yourself: “Dijkstra would not have liked this,” well that would be enough immortality for me. — Edsger Dijkstra
581. If a listener nods his head when you’re explaining your program, wake him up. — Alan Perlis
582. If a program manipulates a large amount of data, it does so in a small number of ways. — Alan Perlis
583. If buffer overflows are ever controlled, it won’t be due to mere crashes, but due to their making systems vulnerable to hackers. Software crashes due to mere incompetence apparently don’t raise any eyebrows, because no one wants to fault the incompetent programmer and his incompetent boss. — Henry Baker
584. If builders built houses the way programmers build programs, the first woodpecker that came along would destroy civilization. — Gerald M Weinberg
585. If C++ has taught me one thing, it’s this: Just because the system is consistent doesn’t mean it’s not the work of Satan. — Andrew Plotkin
586. If debugging is the process of removing bugs, then programming must be the process of putting them in. — Edsger Dijkstra
587. If I didn’t have my part-time performance art income to help pay the bills, I could never afford to support my programming lifestyle. — Jeff Bauer
588. If I don’t document something, it’s usually either for a good reason, or a bad reason. — Larry Wall
589. If I look into my foggy crystal ball at the future of computing science education, I overwhelmingly see the depressing picture of “business as usual.” The universities will continue to lack the courage to teach hard science; they will continue to misguide the students, and each next stage of the infantilization of the curriculum will be hailed as educational progress. — Edsger W. Dijkstra
590. If it’s there and you can see it — it’s real
591. If it’s not there and you can see it — it’s virtual
592. If it’s there and you can’t see it — it’s transparent
593. If it’s not there and you can’t see it — you erased it! — IBM poster explaining virtual memory 1978
594. If McDonalds were run like a software company, one out of every hundred Big Macs would give you food poisoning — and the response would be, “We’re sorry, here’s a coupon for two more”. — Mark Minasi
595. If moral behavior were simply following rules, we could program a computer to be moral. — Samuel P. Ginder
596. If our designs are failing due to the constant rain of changing requirements, it is our designs that are at fault. We must somehow find a way to make our designs resilient to such changes and protect them from rotting. — Robert C. Martin
597. If patterns of ones and zeros were like patterns of human lives and death, if everything about an individual could be represented in a computer record by a long string of ones and zeros, then what kind of creature would be represented by a long string of lives and deaths? — Thomas Pynchon
598. If programs had multiple ways to think, then they wouldn’t so often get stuck, because they could change their points of view. — Marvin Minsky
599. If QA is effective, the programmers learn from their mistakes and are given the means to correct previous bugs of the same kind and to prevent such bugs in the future. It follows that the techniques used to discover those bugs are no longer as effective because those kinds of bugs no longer exist. Monitoring bug type statistics is an important job for QA. If the statistics are stable (i.e., same kinds of bugs) over several releases, then the programmers aren’t learning or are haven’t been given the means to profit from what they’ve learned. Then, past bug statistics as a basis for test design is a good idea, but only because there’s a major process flaw. The faster the programmers learn and react to bug statistics, the worse a guide will past bug statistics be for test design. — Boris Beizer
600. If software is hard, then hardware should be impenetrable. — Rodolfo A. Frino
601. If software were as unreliable as economic theory, there wouldn’t be a plane made of anything other than paper that could get off the ground. — Jim Fawcette
602. If the code and the comments disagree, then both are probably wrong. — Norm Schryer
603. If the code is smarter than it looks, most people aren’t going to think it looks very smart. — Jeremy Hylton
604. If the cost of testing and analysis is far lower than the expected gain and if you have stable software and valid user profiles, then performance testing is an important part of the toolkit. Its use is widespread in telecommunications, embedded systems, and other system software. Given the heavy capital investment in a performance testing laboratory staffed by experts, this kind of testing can forestall the worst kinds of performance problems met in the field. If throughput issues are meaningful for your application, then you can’t afford not to do this testing. — Boris Beizer
605. If the date is missed, the schedule was wrong. It doesn’t matter why the date was missed. The purpose of the schedule was planning, not goal-setting. — Tom DeMarco
606. If the designers of X-Windows built cars, there would be no fewer than five steering wheels hidden about the cockpit, none of which followed the same principles — but you’d be able to shift gears with your car stereo. Useful feature, that. — Marcus J. Ranum
607. If the Internet is a superhighway, then AOL must be a fleet of farm equipment that straddles five lanes and pays no heed to “Keep Right Except to Pass” signs. — Marko Peric
608. If the network idea should prove to do for education what a few have envisioned, surely the boon to humankind would be beyond measure. Unemployment would disappear from the face of the earth forever, for consider the magnitude of the task of adapting the network’s software to all generations of computer, coming closer and closer upon the heels of their predecessors until the entire population of the world is caught up in an infinite crescendo of on-line interactive debugging. — J. C. R. Licklider in 1968
609. If the programmer can simulate a construct faster than a compiler can implement the construct itself, then the compiler writer has blown it badly. — Guy Steele
610. If the standard says that things depend on the phase of the moon, the programmer should be prepared to look out the window as necessary. — Chris Torek
611. If the user can’t use it, it doesn’t work. — Susan Dray
612. If there is a choice, test early, because more than 50% of all defects are usually introduced in the requirements stage alone. — Edward Kit
613. If there’s a “trick” to it, the UI is broken. — Douglas Anderson
614. If there’s one thing that computers do well, it’s to make the same mistake uncountable times at inhuman speed. — Peter Coffee
615. If two people write exactly the same program, each should be put into microcode and then they certainly won’t be the same. — Alan Perlis
616. If UNIX is the face of the future I wanna go back to quill pens. — Joseph Snipp
617. If we believe in data structures, we must believe in independent (hence simultaneous) processing. For why else would we collect items within a structure? Why do we tolerate languages that give us the one without the other? — Alan Perlis
618. If we can dispel the delusion that learning about computers should be an activity of fiddling with array indexes and worrying whether X is an integer or a real number, we can begin to focus on programming as a source of ideas. — Harold Abelson
619. If we wish to count lines of code, we should not regard them as lines produced but as lines spent. — Edsger Dijkstra
620. If you can imagine a society in which the computer-robot is the only menial, you can imagine anything. — Alan Perlis
621. If you cannot grok the overall structure of a program while taking a shower [e.g., with no external memory aids], you are not ready to code it. — Richard Pattis
622. If you don’t care about quality, you can meet any other requirement. — Gerald M. Weinberg
623. If you don’t get the unit bugs out during unit testing you’ll be finding and fixing them in system testing, or worse, in the field, where the cost will be orders of magnitude higher. — Boris Beizer
624. If you don’t think carefully, you might believe that programming is just typing statements in a programming language. — Ward Cunningham
625. If you don’t unit test then you aren’t a software engineer, you are a typist who understands a programming language. — Moses Jones
626. If you find that you’re spending almost all your time on theory, start turning some attention to practical things; it will improve your theories. If you find that you’re spending almost all your time on practice, start turning some attention to theoretical things; it will improve your practice. — Donald Knuth
627. If you make a small change to a program, it can result in an enormous change in what the program does. If nature worked that way, the universe would crash all the time. — Jaron Lanier
628. If you notice a lot of attention being given to process improvement, it’s a sure sign that all the smart employees have left the company and those who remain are desperately trying to find a “process” that is so simple that the boneheads who remain can handle it. — Scott Adams
629. If you optimize everything, you will always be unhappy. — Donald Knuth
630. If you put garbage in a computer nothing comes out but garbage. But this garbage, having passed through a very expensive machine, is somehow ennobled and none dare criticize it. — Pierre Marie Gallois
631. If you receive an e-mail with a subject of “Badtimes,” delete it immediately WITHOUT reading it! This is the most dangerous E-Mail virus yet. It will re-write your hard drive. Not only that, but it will recalibrate your refrigerator’s coolness setting so all your ice cream goes melty, drink all your beer, make you fall in love with a penguin, give you nightmares about circus midgets, leave the toilet seat up and kill your dog. — Badtimes Virus Alert
632. If you rely too much on the people in other countries and other companies, in a sense that’s your brain and you are outsourcing your brain. — Bill Gates
633. If you sat a monkey down in front of a keyboard, the first thing typed would be a UNIX command. — Bill Lye
634. If you show people the problems and you show people the solutions they will be moved to act. — Bill Gates
635. If you take the road less traveled, just make sure it isn’t on the critical path. — Elisabeth Hendrickson
636. If you think C+ is not overly complicated, just what is a protected abstract virtual base pure virtual private destructor, and when was the last time you needed one? — Tom Cargil, C+ Journal
637. If you torture data sufficiently, it will confess to almost anything. — Fred Menger
638. If you use the system in a dirty environment, open it periodically and vacuum the boards and components with a small vacuum designed for this kind of work. Don’t loosen anything in the process — sucking all the chips off the system board with an industrial strength wet/dry vac is not covered by your warranty. — Gateway 2000 User Manual
639. If you want concurrency and have only objects, the best way is to commit suicide. — Christian Schulte
640. If you want to accomplish something in the world, idealism is not enough — you need to choose a method that works to achieve the goal. In other words, you need to be “pragmatic.” — Richard Stallman
641. If you want to achieve excellence, you can get there today. As of this second, quit doing less-than-excellent work. — Thomas J. Watson
642. If you want to build a ship, don’t drum up people to collect wood and don’t assign them tasks and work, but rather teach them to long for the endless immensity of the sea. — Antoine de Saint-Exupery
643. If you want to go somewhere, goto is the best way to get there. — Ken Thompson
644. If you want to increase your success rate, double your failure rate. — Thomas J. Watson
645. If you want to shoot yourself in the foot, Perl will give you ten bullets and a laser scope, then stand by and cheer you on. — Teodor Zlatanov
646. If you were plowing a field, which would you rather use? Two strong oxen or 1024 chickens? — Seymour Cray, about clusters
647. If your application does not run correctly, do not blame the operating system. — Master Ninjei
648. If your code isn’t worth documenting then it isn’t worth keeping — Jonathan Nagler
649. If your computer speaks English it was probably made in Japan. — Alan Perlis
650. If your organization was forced to choose between making IT more business savvy or making business more IT savvy, I think you’d get much more bang for the buck by pursuing the latter. — Jeff Tash
651. If your plan is not in writing, you do not have a plan at all. Instead you have only a dream, a vision, or perhaps a nightmare. — Gerald Michaelson
652. If your program is very bad, do not try to debug it. Instead, throw it out and start over. — Walter Savitch
653. If your project doesn’t work, look for the part that you didn’t think was important. — Arthur Bloch
654. If your software works, thank a tester. — Harry Robinson
655. If your work isn’t predictable, management has no reason to trust you. — Watts Humphrey
656. If you’re going to use sophisticated test+design+automation tools then your people must be trained in those tools and given enough time to internalize the methodologies behind the tools. If you don’t figure that into the equation, your attempt at test design automation will fare worse than manual testing. You can’t expect a person who’s never flown an airplane to take off in an F-16 on the first day. — Boris Beizer
657. If you’re guessing, you’re bluffing, and the person with the most political power wins. — Watts Humphrey
658. If you’re not serving the customer, you’d better be serving someone who is. — Karl Albrecht and Ron Zembe
659. If you’re one in a million, there are 6,000 other people just like you — and 600 of them are on the Internet. — Hal Rubenstein
660. If you’re producing a public API, something for people to extend, you really should make everything final that doesn’t have a reason to be non-final: It’s a genie you can’t put back in the bottle — you can’t final something that wasn’t final when you first published your API, without risking making people’s subclasses uncompilable. You can un-final it if there’s a reasonable use-case for overriding a method that was final before. In short, not finaling methods in your API means you may box yourself in later — to the point of needing to do things like check if a subclass overrides a method or not and do something different depending on the result. — Tim Boudreau
661. If you’ve got a basket with 3 oranges in it and you take 5 out, then you have to put 2 oranges in again in order for it to be empty. — Peter Gutmann
662. I’m a “contents provider” not a website designer. I can use my time to improve the contents of+my+home+page or the looks, but not both. What looks “cool and modern” to someone is often considered bad taste by someone else, and fashions change fast. Also, very plain html downloads and displays faster than anything else, and many people still suffer from slow web connections. — Bjarne Stroustrup
663. I’m afraid as great as computers are, they cannot tell you about the quality of your product. The profitability, yes, but not the quality. The human eye, the human experience, is the one thing that can make quality better — or poorer. — Stanley Marcus
664. I’m always right. This time I’m just even more right than usual. — Linus Torvalds
665. I’m not saying we purposely introduced bugs or anything in+Sims, but this is kind of a natural result of any complexities of software… that you can’t fully test it. — Will Wright
666. I’m not schooled in the science of human factors, but I suspect surprise is not an element of a robust user interface. — Chip Rosenthal
667. I’m not suggesting that we stop protecting our software against outside inputs and user errors. Such protection is essential. Nor should we reduce protection against faulty inputs from networks or other systems. However, protecting the software from external abuse is not the same as protecting it from internal abuse and bugs. If you build-in self-protection from internal problems such as bugs, you are doing on-line debugging in the user’s shop and at the user’s expense. That’s no way to treat a user. — Boris Beizer
668. I’m reminded of the day my daughter came in, looked over my shoulder at some Perl 4 code, and said, ‘What is that, swearing? — Larry Wall
669. I’m skeptical of neural networks because people are writing the programs and designing the networks that are designing the programs. I wish we knew more about how we think. — Grace Murray Hopper
670. I’m sorry that we have to have a Washington presence. We thrived during our first 16 years without any of this. I never made a political visit to Washington and we had no people here. It wasn’t on our radar screen. We were just making great software. — Bill Gates
671. I’m struck by the insidious, computer-driven tendency to take things out of the domain of muscular activity and put them into the domain of mental activity. The transfer is not paying off. Sure, muscles are unreliable, but they represent several million years of accumulated finesse. — Brian Eno
672. I’m sure the problem is either the hardware or the software. — K. Rivalsi
673. I’m talking about configuration compatibility with other software that has no direct interface. For example, two supposedly independent SCSI controllers, or my fax program that must be loaded last, or a sorry backup program that can’t be installed from any drive but A: if there’s a CD-ROM on the system. Pick your favorites from the infinite list. Okay, so why not do configuration compatibility testing with the programs most likely to coexist. Say against the five most popular word processors, spreadsheets, graphics, etc. Several reasons. First, the list is big, not small. If you pick the “most popular” and attempt to get say, 98% coverage, you’ll be thinking in terms of cross-testing against several hundred packages rather a dozen. Second, if there’s a compatibility problem its not just what you are doing but what the other program is doing that causes the problem. That’s not just testing against static packages that just sit there, but dynamically. More precisely, it’s not just testing against several hundred packages but against several hundred packages (squared) each of which can be in any of several hundred states (squared). — Boris Beizer
674. Imagine if every Thursday your shoes exploded if you tied them the usual way. This happens to us all the time with computers, and nobody thinks of complaining. — Jeff Raskin
675. Imitating paper on a computer screen is like tearing the wings off a 747 and using it as a bus on the highway. — Ted Nelson
676. Improving the world one bug at a time. — Harry Robinson
677. In 1971 when I joined the staff of the MIT Artificial Intelligence lab, all of us who helped develop the operating system software, we called ourselves hackers. — Richard Stallman
678. In 1984 mainstream users were choosing VMS over UNIX. Ten years later they are choosing Windows over UNIX. What part of that message aren’t you getting? — Tom Payne
679. In a 5 year period we get one superb programming language. Only we can’t control when the 5 year period will begin. — Alan Perlis
680. In a lot of software, the application is dissociated from the user interface. I think this is an excellent idea. It’s the way things ought to be done. You can concentrate on the two aspects separately. — Bjarne Stroustrup
681. In a room full of top software designers, if two agree on the same thing, that’s a majority. — Robert Glass
682. In a software project team of 10, there are probably 3 people who produce enough defects to make them net negative producers. — Gordon Schulmeyer
683. In a way, staring into a computer screen is like staring into an eclipse. It’s brilliant and you don’t realize the damage until its too late. — Bruce Sterling
684. In academia, in industry, and in the commercial world, there is a widespread belief that computing science as such has been all but completed and that, consequently, computing has matured from a theoretical topic for the scientists to a practical issue for the engineers, the managers, and the entrepreneurs. I would therefore like to posit that computing’s central challenge, “How not to make a mess of it,” has not been met. On the contrary, most of our systems are much more complicated than can be considered healthy, and are too messy and chaotic to be used in comfort and confidence. The average customer of the computing industry has been served so poorly that he expects his system to crash all the time, and we witness a massive worldwide distribution of bug-ridden software for which we should be deeply ashamed. — Edsger W. Dijkstra
685. In an imperfect world, software can be an island of perfection. Software does exactly what the programmer tells it to do. — David Weinberger
686. In case you haven’t realized it, building computer systems is hard. — Martin Fowler
687. In case you’re not a computer person, I should probably point out that “Real Soon Now” is a technical term meaning “sometime before the heat-death of the universe, maybe.” — Scott Fahlman
688. In college I worked as a consultant. One day this grad student was having trouble with his Fortran program and brought the printout to me. He said he kept changing things but couldn’t get it to run correctly. His analysis: “I get the feeling that the computer just skips over all the comments.” — Samuel Stoddard
689. In college, they started all physics problems with “assume a frictionless surface.” The difference between college and industry is that in college you spend all your time on the formulas and in industry you spend all your time on friction. — Larry McVoy
690. In computer science, we stand on each other’s feet. — Brian K. Reid
691. In computing, invariants are ephemeral. — Alan Perlis
692. In computing, the mean time to failure keeps getting shorter. — Alan Perlis
693. In computing, turning the obvious into the useful is a living definition of the word “frustration.” — Alan Perlis
694. In considering any new subject, there is frequently a tendency, first, to overrate what we find to be already interesting or remarkable; and, secondly, by a sort of natural reaction, to undervalue the true state of the case, when we do discover that our notions have surpassed those that were really tenable. — Ada Lovelace
695. In contrast to people, computers double their ability every 18 months. There therefore exists the possibility that machines will develop intelligence and dominate the world. — Stephen Hawking
696. In Cyberspace, the First Amendment is a local ordinance. — John Perry Barlow
697. In English every word can be verbed. Would that it were so in our programming languages. — Alan Perlis
698. In fact what I would like to see is thousands of computer scientists let loose to do whatever they want. That’s what really advances the field. — Donald Knuth
699. In fact, you can throw away the last three syllables of “superhighway.” It’s a soup. Call it Information Soup and we’re getting somewhere. — Charles S. Murray
700. In general, my conclusion after doing numerical work for a while is that the desire to look at algorithms crucial to your research as black boxes is futile. In the end, I always had to dig into the details of the algorithms because they were either never black-boxable or the black-box versions didn’t do a good enough job. — David Ascher
701. In many cases, there’s far too much integration between the user interface and the application. In my opinion, that makes it harder to design the software. It makes software harder to change, harder to debug, and it makes it harder to take something from one environment and put it into another. — Bjarne Stroustrup
702. In My Egotistical Opinion, most people’s C programs should be indented six feet downward and covered with dirt. — Blair P. Houghton
703. In my personal experience, object-oriented design and object-oriented programming lead to better code than you get from more traditional procedural approaches — code that is more flexible, more extensible, and more maintainable without imposing significant performance overheads. — Bjarne Stroustrup
704. In pioneer days they used oxen for heavy pulling, and when one ox couldn’t budge a log, they didn’t try to grow a larger ox. We shouldn’t be trying for bigger computers, but for more systems of computers. — Rear Admiral Grace Hopper
705. In programming these days, cheaper isn’t about price, it’s about mental effort. — Jason Hunter
706. In programming, as in everything else, to be in error is to be reborn. — Alan Perlis
707. In programming, everything we do is a special case of something more general — and often we know it too quickly. — Alan Perlis
708. In programming, it’s often the buts in the specification that kill you. — Boris Beizer
709. In so far as virus-makers have any discernible motive, they presumably feel vaguely anarchistic. I appeal to them: do you really want to pave the way for a new fat-cat profession software+doctors? If not, stop playing at silly memes, and put your modest programming talents to better use. — Richard Dawkings
710. In software systems it is often the early bird that makes the worm. — Alan Perlis
711. In software, the chain isn’t as strong as its weakest link; it’s as weak as all the weak links multiplied together — Steve McConnell
712. In ten years, computers will just be bumps in cables. — Gordon Bell
713. In the 1990s, we learned to grok objects. The revolution in mainstream software development from structured programming to object-oriented programming was the greatest such change in the past 20 years, and arguably in the past 30 years. There have been other changes, including the most recent (and genuinely interesting) nascence of web services, but nothing that most of us have seen during our careers has been as fundamental and as far-reaching a change in the way we write software as the object revolution. Until now. Starting today, the performance lunch isn’t free any more. Sure, there will continue to be generally applicable performance gains that everyone can pick up, thanks mainly to cache size improvements. But if you want your application to benefit from the continued exponential throughput advances in new processors, it will need to be a well-written concurrent (usually multi-threaded) application. And thats easier said than done, because not all problems are inherently parallelizable and because concurrent programming is hard. — Herb Sutter
714. In the beginner’s mind there are many possibilities; in the expert’s mind there are few. — Shunryu Suzuki
715. In the development of the understanding of complex phenomena, the most powerful tool available to the human intellect is abstraction. Abstraction arises from the recognition of similarities between certain objects, situations, or processes in the real world and the decision to concentrate on these similarities and to ignore, for the time being, their differences. — Charles Anthony Richard Hoare
716. In the end, the answer to “Could computers think?” is that it doesn’t matter whether they think. What matters is whether we think they think. In the decades ahead, as we learn ever more about how we ourselves work, and as our computers become ever more complex and competent, the words computer and think will continue to warp, until they’re so different from their 1940s meanings that the question will lose relevance — and, then, meaning. In time, the boundaries between the born and the made, the grown and the built, the living and the dead, the evolved and the programmed, the biological and the artificial, will evaporate. They’re already melting like candles in a firestorm. — Paul Valery
717. In the long run, every program becomes rococo, and then rubble. — Alan Perlis
718. In the malleable world of cyberspace, today’s breakthrough is tomorrow’s anachronism; events move at speeds dictated by processor power and the human imagination, creating technological wunderkinder whose half-lives are measured in weeks, if not days. — Paul Gilster
719. In the next century, when art will be packaged as virtual reality software, realistic paintings will sell the way Shaker furniture does now. Shaker furniture will sell the way Van Gogh paintings do. And teddy bears owned by Elvis will come to auction only occasionally. — Brad Holland
720. In the twenty-first century, whoever controls the screen controls consciousness, information and thought. — Timothy Leary
721. In the world of systems design, programs and data are the scissor blades working together to form the broader class — software. Lacking either blade, computers couldn’t cut through problems — yet for many people, software is synonymous with programs. — Tom Gilb
722. In their capacity as a tool, computers will be but a ripple on the surface of our culture. In their capacity as an intellectual challenge, they are without precedent in the cultural history of mankind. — Edsger Dijkstra
723. In this business, by the time you realize you’re in trouble, it’s too late to save yourself. Unless you’re running scared all the time, you’re gone. — Bill Gates
724. In total desperation, I called over to the engineering building, and I said, “Please cut off a nanosecond and send it over to me.” — Rear Admiral Grace Murray Hopper
725. In trying to understand the Linux phenomenon, then, we have to look not at a single innovator but to a sort of bizarre Trinity: Linus Torvalds, Richard Stallman, and Bill Gates. Take away any of these three and Linux would not exist. — Neal Stephenson
726. In view of all the deadly computer viruses that have been spreading lately, Weekend Update Saturday+Night+Live would like to remind you: when you link up to another computer, you’re linking up to every computer that that computer has ever linked up to. — Dennis Miller
727. In XP, we don’t divide and conquer. We conquer and divide. First we make something that works, then we bust that up and solve the little parts. — Kent Beck
728. 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
729. Indeed, when I design my killer language, the identifiers “foo” and “bar” will be reserved words, never used, and not even mentioned in the reference manual. Any program using one will simply dump core without comment. Multitudes will rejoice. — Tim Peters
730. Indirection is the right direction. — Andy Glew
731. Industry executives and analysts often mistakenly talk about strategy as if it were some kind of chess match. But in chess, you have just two opponents, each with identical resources, and with luck playing a minimal role. The real world is much more like a poker game, with multiple players trying to make the best of whatever hand fortune has dealt them. In our industry, Bill Gates owns the table until someone proves otherwise. — David Moschella
732. Information Superhighway is really an acronym for “Interactive Network For Organizing, Retrieving, Manipulating, Accessing And Transferring Information On National Systems, Unleashing Practically Every Rebellious Human Intelligence, Gratifying Hackers, Wiseacres, And Yahoos.” — Keven Kwaku
733. Information technology and business are becoming inextricably interwoven. I don’t think anybody can talk meaningfully about one without the talking about the other. — Bill Gates
734. Information wants to be free. Information also wants to be expensive. Information wants to be free because it has become so cheap to distribute, copy, and recombine — too cheap to meter. It wants to be expensive because it can be immeasurably valuable to the recipient. That tension will not go away. It leads to endless wrenching debate about price, copyright, “intellectual property,” the moral rightness of casual distribution, because each round of new devices makes the tension worse, not better. — Stewart Brand, although Peter Samson may have quoted Brand before he said it
735. Informational tools are symbolic metaphors that amplify the intellect rather than the muscle of their users. — Bill Gates
736. Innovation is the process of turning ideas into manufacturable and marketable form. — Watts Humprey
737. Inside every well-written large program is a well-written small program. — Charles Anthony Richard Hoare
738. Inspection is by far the most effective way to remove bugs. — Capers Jones
739. Interestingly, most UNIX utilities have a command line option which will cause the system to rip the user’s legs off and beat them to death with the soggy ends. This is often the default behavior. — Bruce Murphy
740. Interfaces keep things tidy, but don’t accelerate growth: Functions do. — Alan Perlis
741. INTERVIEWERTell us how you came to be drawn into the world of pragmas. COMPILER WRITER: Well, it started off with little things. Just a few boolean flags, a way to turn asserts on and off, debug output, that sort of thing. I thought, what harm can it do? It’s not like I’m doing anything you couldn’t do with command line switches, right? Then it got a little bit heavier, integer values for optimization levels, even the odd string or two. Before I knew it I was doing the real hard stuff, constant expressions, conditionals, the whole shooting box. Then one day when I put in a hook for making arbitrary calls into the interpreter, that was when I finally realised I had a problem… — Greg Ewing
742. Invariably, if something is so complex that it requires the addition of multiple preferences or customization choices, it is probably too complex to use. — Don Norman
743. Investing in putting bad requirements into management tools is a lot like rearranging the deck chairs on the Titanic. — Ivy Hooks
744. Is it possible that software is not like anything else, that it is meant to be discarded: that the whole point is to see it as a soap bubble? — Alan Perlis
745. It the+computer is a medium that can dynamically simulate the details of any other medium, including media that cannot exist physically. It is not a tool, although it can act like many tools. — Alan Kay
746. 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. — Alan Perlis
747. It has been discovered that C++ provides a remarkable facility for concealing the trival details of a program — such as where its bugs are. — David Keppel
748. It is a tremendous responsibility for us to have all the eyes focused on what we do and give people exactly what they need when they ask for it. — Larry Page, Google
749. It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures. — Alan Perlis
750. It is characteristic of all deep human problems that they are not to be approached without some humor and some bewilderment. — Freeman Dyson
751. It is easier to change the specification to fit the program than vice versa. — Alan Perlis
752. It is easier to write an incorrect program than understand a correct one. — Alan Perlis
753. It is not a language’s weaknesses but its strengths that control the gradient of its change: Alas, a language never escapes its embryonic sac. — Alan Perlis
754. It is only when they go wrong that machines remind you how powerful they are. — Clive James
755. 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 W. Dijkstra
756. It is quite amazing — and a bit saddening — how gullible and desperate are willing to expect salvation from the next gadget. I remember how TV was promoted by the theory that a daily dose of Shakespeare in every living room would elevate the culturally deprived to unfathomed heights, thus curing all ills of society, etc. And what did we get? Soap operas and quizzes. I remember how, with the advent of terminals, interactive debugging was supposed to solve all our programming problems, and how, with the advent of color screens, “algorithm animation” was supposed to do the same. And what did we get? Commercial software with a disclaimer that explicitly states that you are a fool if you rely on what you just bought. And now we have the multimedia/communication hype: the best bits are those that just arrived from far away, and if you are not “on line,” “on the Net,” you just don’t count, you are not of this world (which is virtual anyhow…). Apart from a change in vocabulary, it is the same hype, the same snake oil over and over again, and you can do me a favor by not getting excited by all the time you are supposed to save by switching to “home banking.” — Edsger Dijkstra
757. It is the users who should parameterize procedures, not their creators. — Alan Perlis
758. It is vain to do with more that which can be done with less. — William of Occam
759. It is…fruitless to question and debate early design decisions; better solutions are often quite obvious in hindsight. Perhaps the most important point was that someone did make decisions, in spite of uncertainties. — Niklaus Wirth
760. It may not always be profitable at first for businesses to be online, but it is certainly going to be unprofitable not to be online. — Esther Dyson
761. It means that a programming language should, above all, be malleable. A programming language is for thinking of programs, not for expressing programs you’ve already thought of. It should be a pencil, not a pen. Static typing would be a fine idea if people actually did write programs the way they taught me to in college. But that’s not how any of the hackers I know write programs. We need a language that lets us scribble and smudge and smear, not a language where you have to sit with a teacup of types balanced on your knee and make polite conversation with a strict old aunt of a compiler. — Paul Graham
762. It occurred to me this morning that many system design flaws can be traced to unwarrantedly anthropomorphizing the user. — Steven Maker
763. It seems reasonable to examine past testing methods and to concentrate on those that have been most cost- effective at finding bugs in the past. This would be okay but for the pesticide paradox. The techniques wear out. Programmers aren’t fools and they’re not about to let themselves be hit over and over again by the same test methods. They will adopt design practices and designs that eliminate the bugs found by your favorite, most cost-effective method. The consequence of not recognizing this is false confidence. — Boris Beizer
764. 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. — Nathaniel S. Borenstein
765. It shouldn’t be too much of a surprise that the Internet has evolved into a force strong enough to reflect the greatest hopes and fears of those who use it. After all, it was designed to withstand nuclear war, not just the puny huffs and puffs of politicians and religious fanatics. — Denise Caruso
766. It took us three years to build the NeXT computer. If we’d given customers what they said they wanted, we’d have built a computer they’d have been happy with a year after we spoke to them — not something they’d want now. — Steve Jobs
767. It would appear that we have reached the limits of what it is possible to achieve with computer technology, although one should be careful with such statements, as they tend to sound pretty silly in 5 years. — John Von Neumann, 1949
768. It would be very discouraging if somewhere down the line you could ask a computer if the Riemann hypothesis is correct and it said, “Yes, it is true, but you won’t be able to understand the proof.” — John Horgan
769. It would be wonderful if we could just tuck in a few loose ends and change a handful of details of present systems to have them work properly. Unfortunately, we have learned that the GUI concept has fundamental flaws that cannot be corrected by small changes. These flaws have to do with incompatibilities between the designs of both GUIs and command-line interfaces and the way our brains are wired. As we cannot change the way our minds work, we must change the interface design. — Jef Raskin
770. [Programming’s] the only job I can think of where I get to be both an engineer and an artist. There’s an incredible, rigorous, technical element to it, which I like because you have to do very precise thinking. On the other hand, it has a wildly creative side where the boundaries of imagination are the only real limitation. — Andy Hertzfeld
771. It’s a pity the universe doesn’t use segmented architecture with a protected mode. — Rich Cook
772. It’s a well known fact that computing devices such as the abacus were invented thousands of years ago. But it’s not well known that the first use of a common computer protocol occured in the Old Testament. This, of course, was when Moses aborted the Egyptians’ process with a control-sea. — Tom Galloway
773. It’s difficult to extract sense from strings, but they’re the only communication coin we can count on. — Alan Perlis
774. It’s easy to cry “bug” when the truth is that you’ve got a complex system and sometimes it takes a while to get all the components to coexist peacefully. — Doug Vargas
775. 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
776. It’s hard to create highly reusable frameworks. They become complex, hard to learn, and even harder to maintain. I was on both the framework consumer and the framework producer side, and it can be hard from either perspective. A key challenge in framework development is how to preserve stability over time. The more miles a framework gets the better you understand how you should have built it in the first place. Therefore you would like to tweak and improve it. However, since your framework is heavily used you are highly constrained in what you can change. At this point it is crucial to have well defined APIs and to make it clear to the clients what is published API and what internal code is. For published APIs you should commit to stability and for internal code you have the freedom to change it. — Erich Gamma
777. It’s harder than you might think to squander millions of dollars, but a flawed software development process is a tool well suited to the job. — Alan Cooper
778. It’s hardware that makes a machine fast. It’s software that makes a fast machine slow. — Craig Bruce
779. It’s impossible to maintain a large C++ software module if you didn’t actually write it. — Bjarne Stroustrup
780. It’s no coincidence that the most popular PC books go by names like “Windows for Dummies”. Detroit doesn’t sell books like “Oldsmobiles for Idiots” or “A Foul-Up’s Guide to Fords”. — Patrick L Anderson
781. It’s not computer literacy that we should be working on, but sort of human-literacy. Computers have to become human-literate. — Nicholas P. Negroponte
782. It’s not know-how that counts, it’s know-when. — Jerry Weinberg
783. It’s not the prevention of bugs but the recovery — the ability to gracefully exterminate them — that counts. — Victoria Livschitz
784. It’s not the technology, folks, it’s the people. When we trace the+errors back, it’s always human error. — Bob Herbold, Microsoft
785. It’s OK to figure out murder mysteries, but you shouldn’t need to figure out code. You should be able to read it. — Steve McConnell
786. It’s ridiculous to live 100 years and only be able to remember 30 million bytes. You know less than a compact disc. The human condition is really becoming more obsolete every minute. — Marvin Minsky
787. It’s the day of optimizing compilers folks. Optimizers, like John Henry’s steam drills, beat humans every time. Trying to beat the optimizer in a modern system means that you can second guess the highly secretive optimization algorithms, the operating system, and the caching hardware and firmware. That’s a blissfully arrogant wish. Code level attempts at optimization are usually counterproductive because they result in strange code that the optimizer can’t handle well. — Boris Beizer
788. It’s time to reappreciate the original software: paper. — Dale Dauten
789. I’ve found, by and large, that doing the right thing is often the right thing to do. — Jerry Pournelle
790. I’ve never met a human being who would want to read 17,000 pages of documentation, and if there was, I’d kill him to get him out of the gene pool. — Joseph Costello
791. I’ve never met anyone responsible for C language code maintenance who speaks well of the C Language. Anyone out there who LIKES to maintain C code ? — Ted Dennison
792. Java is, in many ways, C++ — . — Michael Feldman
793. Java technology is not fault tolerant and is not designed, manufactured, or intended for use or resale as online control equipment in hazardous environments […] in which the failure of Java technology could lead directly to death, personal injury, or severe physical or environmental damage. — Microsoft IIS license
794. Java, the best argument for Smalltalk since C++. — Frank Winkler
795. Java’s a drug you rub on venture capitalists to make them crazy. — John Doerr
796. Java Script is the duct tape of the Internet. — Charlie Campbell
797. JCL is a crazed assembly language programmer’s idea of what a command language should look like: verbose, tedious and error-prone. AND UPPER CASE. — Geoff Collyer
798. John von Neumann draws attention to what seemed to him a contrast. He remarked that for simple mechanisms, it is often easier to describe how they work than what they do, while for more complicated mechanisms, it is usually the other way around. — Edsger Dijkstra
799. Just because the standard provides a cliff in front of you, you are not necessarily required to jump off it. — Norman Diamond
800. Just because you don’t know a technology, doesn’t mean you won’t be called upon to work with it. — Mike Bongiovanni
801. Just remember: you’re not a “dummy,” no matter what those computer books claim. The real dummies are the people who, though technically expert, couldn’t design hardware and software that’s usable by normal consumers if their lives depended upon it. — Walter Mossberg
802. Know thy user, and you are not thy user. — Arnie Lund
803. Language designers are not intellectuals. They’re not as interested in thinking as you might hope. They just want to get a language done and start using it. — Dave Moon
804. Languages shouldn’t hinder progress by outliving their usefulness. — Alan Kay
805. Learn the rules so you know how to break them properly. — The Dali Lama
806. Less than 10% of the code has to do with the ostensible purpose of the system; the rest deals with input-output, data validation, data structure maintenance, and other housekeeping. — Mary Shaw
807. 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
808. Let’s say the docs present a simplified view of reality… — Larry Wall
809. Life is a process which may be abstracted from other media. — John Von Neumann
810. Life is just a class. Override it. Choices in life are just IF statements. Based on that, your whole life may crash or run to completion. — Assaad Chalhoub
811. Life is too short for manual testing. — Harry Robinson
812. Life was simple before World War II. After that, we had systems. — Rear Admiral Grace Hopper
813. Life would be so much easier if we could just look at the source code. — Dave Olson
814. Like almost everyone who uses e-mail, I receive a ton of spam every day. Much of it offers to help me get out of debt or get rich quick. It would be funny if it weren’t so irritating. — Bill Gates
815. Like any tyrant, a word-processing program both threatens and comforts. Obey its arbitrary inflexible rules, and it rewards you with tireless service in rearranging, removing, even correcting your words. Disobey its rules, and it responds either by issuing a warning beep and a terse instruction or by dissolving months of labor into scattered electrons. In millions of offices, the computer fulfills the tyrant’s dream: it forbids everything that it does not permit. — Edward Mendelson
816. Like punning, programming is a play on words. — Alan Perlis
817. Like the creators of sitcoms or junk food or package tours, Java’s designers were consciously designing a product for people not as smart as them. — Paul Graham
818. Linux is just a file system and a file manager. — Steve Ballmer
819. Linux is only free if your time is worthless. — Jamie Zawinski
820. LISP programmers know the value of everything and the cost of nothing. — Alan Perlis
821. Live TV died in the late 1950s, electronic bulletin boards came along in the mid-1980s; meaning there was about a 25-year gap when it was difficult to put your foot in your mouth and have people all across the country know about it. — Michael Meissner
822. Look for places where the program does the same conceptual thing, in different ways — say, by iterating versus by recursion, or by columns versus by rows, doing steps in different orders, etc. Pick what seems the cleanest way, and change all the other places to use it. Doing the same thing the same way several times, is clearer than doing the same thing different ways multiple times. — Steven J. DeRose
823. Look for things to fix and fix them. — Alan Page
824. Looking at the proliferation of personal web pages on the net, it looks like very soon everyone on earth will have 15 Megabytes of fame. — M. G. Siriam
825. Los Angeles County officials have asked that manufacturers, suppliers and contractors stop using the terms “master” and “slave” regarding computer hard drives, saying such terms are unacceptable and offensive. Additionally, the term “e-mail” will now be called “e-person letter”, “dumb terminals” will now be “CPU-challenged monitors” and “Unix” will be referred to as “sexually dysfunctional operating system.” Obviously, “fingering” is now banned entirely. — Kevin Fizz
826. Machines are simple: a hammer, a door hinge, a steak knife. Systems are much more complicated; they have components, feedback loops, mean times between failure, infrastructure. Digital systems are daedal; even a simple computer program has hundreds of thousands of lines of computer code doing all sorts of different things. A complex computer program has thousands of components, each of which has to work by itself and in interaction with all the other components. This is why object-oriented programming was developed: to deal with the complexity of digital systems…systems have bugs. A bug is a particular kind of failure…It’s different from a malfunction. When something malfunctions, it no longer works properly. When something has a bug, it misbehaves in a particular way, possibly unrepeatable, and possibly unexplainable. Bugs are unique to systems. Machines can break, or fail, or not work, but only a system can have a bug. — Bruce Schneier
827. Machines are worshipped because they are beautiful, and valued because they confer power; they are hated because they are hideous, and loathed because they impose slavery. — Bertrand Arthur William Russell
828. Make no mistake about it: Computers process numbers — not symbols. We measure our understanding (and control) by the extent to which we can arithmetize an activity. — Alan Perlis
829. Making duplicate copies and computer printouts of things no one wanted even one of in the first place is giving America a new sense of purpose. — Andy Rooney
830. Making something variable is easy. Controlling duration of constancy is the trick. — Alan Perlis
831. Man can hardly be defined… as an animal who makes tools; ants and beavers and many other animals make tools, in the sense that they make an apparatus. Man can be defined as an animal that makes dogmas. — Gilbert K. Chesterton
832. Man is not a machine. Although man most certainly processes information, he does not necessarily process it in the way computers do. Computers and men are not species of the same genus. However much intelligence computers may attain, now or in the future, theirs must always be an intelligence alien to genuine human problems and concerns. — Joseph Weizenbaum
833. Man is still the most extraordinary computer of all. — John F. Kennedy
834. Man is the best computer we can put aboard a spacecraft, and the only one that can be mass-produced with unskilled labor. — Wernher von Braun
835. Management Speak: Individual Contributor. Translation: Employee who does real work. — Juergen Rudnick
836. Manual testing is the pits — not only that, it doesn’t work very well because the test execution error rate is about 50% or worse. Testing is not about monkeys pounding keys. Today, with automated test drivers and capture/playback tools widely available, there’s no difficulty in achieving a high degree of test execution automation — in the high 95% range for most applications. The biggest advantage to test execution automation can’t be reaped unless you intend to run the tests many times. However, most organizations under-estimate the number of times tests will be run. While they think in terms of once or twice, the actual number is likelier to be closer to forty or fifty times over the life of the software. If you accept test execution automation as a capital investment in testware, no less important than software, then you’ll see a truly remarkable long-term return on investment that beats all other software development tools. — Boris Beizer
837. Manuals just slow you down and make you feel stupid. The directions are too slow, too detailed, and use too much abstract, arcane or academic language — like boot up instead of turn on the red switch in the back. — Neil Fiore
838. Many C++ design decisions have their roots in my dislike for forcing people to do things in some particular way. — Bjarne Stroustrup
839. Many companies that have made themselves dependent on IBM-equipment (and in doing so have sold their soul to the devil) will collapse under the sheer weight of the unmastered complexity of their data processing systems. — Edsger Dijkstra
840. Many of the great ideas are not precipitated by the customer. While the customer knows what he wants, he doesn’t always know what’s possible. And that first dawned on me in my earliest days in business. When I was new at IBM, working in sales and taking a management training program in Sleepy Hollow, New York, I came back to my room grumbling about the lack of speed and reliability of the tape drives, and wondered why the engineers couldn’t do something about it. My roommate stared at me with a look of total exasperation. “Boy, you guys in sales are all the same,” he said. “You remind me of the farmer in 1850. If you asked him what he wanted, he would say he wanted a horse that was half as big and ate half as many oats and was twice as strong. And there would be no discussion of a tractor.” — David Kearns, former CEO of Xerox
841. Many of you have gone through the trauma of tool chaos in which every department or project buys or builds their own tools independently of any other group. Besides being confusing, you pay more for site licenses, training, and all the rest. It seems reasonable to minimize tool chaos by standardizing on a few basic tools. That’s okay if you’re not too serious about it and don’t expect too much in the long run. — Boris Beizer
842. Many people tend to look at programming styles and languages like religions: if you belong to one, you cannot belong to others. But this analogy is another fallacy. It is maintained for commercial reasons only. Object-oriented programming solidly rests on the principles and concepts of traditional procedural programming. OOP has not added a single novel concept. — Niklaus Wirth
843. Many spend their time berating practitioners for not applying their method. We all need to disseminate our ideas, but most of our time should be spent applying and improving our methods, not selling them. The best way to sell a mouse trap is to display some trapped mice. — David Parnas
844. May your experiences with new software be dull, dull, dull. — Boris Beizer
845. Measuring programming progress by lines of code is like measuring aircraft building progress by weight. — Bill Gates
846. Meetings are a great trap. Soon you find yourself trying to get agreement and then the people who disagree come to think they have a right to be persuaded. However, they are indispensable when you don’t want to do anything. — John Kenneth Galbraith
847. Memo to the folks in Silicon Valley: You will have good jobs for 20 more years. By 2020, though, computer chips will be cheaper than bubble-gum wrappers, and PCs will be in museums. — Michio Kaku, Professor of Theoretical Physics at City College of New York
848. Memory is like an orgasm. It’s a lot better if you don’t have to fake it. — Seymour Cray
849. Men are like computers: I don’t understand them, I just use them for my amusement. — Holly Waits
850. Methods for predicting the future: 1) read horoscopes, tea leaves, tarot cards, or crystal balls… collectively known as “nutty methods;” 2) put well-researched facts into sophisticated computer… commonly referred to as “a complete waste of time.” — Scott Adams
851. Microsoft knows that reliable software is not cost effective. According to studies, 90% to 95% of all bugs are harmless. They’re never discovered by users, and they don’t affect performance. It’s much cheaper to release buggy software and fix the 5% to 10% of bugs people find and complain about. — Bruce Schneier
852. Microsoft programs are generally bug-free. If you visit the Microsoft hotline, you’ll literally have to wait weeks if not months until someone calls in with a bug in one of our programs. 99.99% of calls turn out to be user mistakes. — Benedikt Heinen
853. Microsoft’s only factory asset is the human imagination. — Bill Gates
854. millihelen, n.: The amount of beauty required to launch one ship. — Tom Weller, “Science Made Stupid”
855. Millions for compilers, but hardly a penny for understanding human programming language use. Now, programming languages are obviously symmetrical, the computer on one side, the human on the other. In an appropriate science of computer languages, one would expect that half the effort would be on the computer side, understanding how to translate the languages into executable form, and half on the human side, understanding how to design languages that are easy or productive to use. Yet, we do not even have an enumeration of all the psychologicial functions programing languages serve for the user. Of course, there is lots of programming language design, but it comes from computer scientists. And though technical papers on languages contain many appeals to ease of use and learning, they patently contain almost no psychologicial evidence nor any appeal to psychological science. — Allen Newell and Stuart Card
856. More bad software has been wrought in the name of performance than any other reason. While the operating system and the software’s system’s architecture and algorithms can have a profound effect on performance, today, there’s almost nothing that the individual programmer can do at the coding level to improve performance. In fact, most attempts to improve performance by coding tricks reduces rather than enhances performance. — Boris Beizer
857. More bugs have been introduced into programs through premature optimization than any other cause, including pure stupidity. (sometimes quoted as, “More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason including blind stupidity.”) — Bill Wulf
858. More good code has been written in languages denounced as bad than in languages proclaimed wonderful — much more. — Bjarne Stroustrup
859. More heresy? Doesn’t he Beizer believe in user involvement? Sure I do; but would you let the users design the software? They’re not competent. Nor are they competent to design all but a small part of the tests. — Boris Beizer
860. More than anything else, the greatest danger to good computer science research today may be excessive relevance. Evidence for the worldwide fascination with computers is everywhere, from the articles on the financial, and even the front pages of the newspapers, to the difficulties that even the most prestigious universities experience in finding and keeping faculty in computer science. The best professors, instead of teaching bright students, join start-up companies, and often discover that their brightest students have preceded them. Computer science is in the limelight, especially those aspects, such as systems, languages, and machine architecture, that may have immediate commercial applications. The attention is flattering, but it can work to the detriment of good research. — Dennis M. Richie
861. 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. — Boris Beizer
862. Most computer technologists don’t like to discuss it, but the importance of beauty is a consistent (if sometimes inconspicuous) thread in the software literature. Beauty is more important in computing than anywhere else in technology. Beauty is important in engineering terms because software is so complicated. Beauty is our most reliable guide to achieving software’s ultimate goal: to break free of the computer, to break free conceptually. Software is stuff unlike any other. Software’s goal is to escape this gravity field, and every key step in software history has been a step away from the computer, toward forgetting about the machine and its physical structure and limitations — forgetting that it can hold only so many bytes, that its memory is made of fixed size cells, that you refer to each cell by a numerical address. Software needn’t accept those rules and limitations. But as we throw off the limits, what guides us? How do we know where to head? Beauty is the best guide we have. — David Gelernter
863. Most of the brain consists of “wires;” a single unit may have thousands of connections with other units and with itself. That is not the case in a standard computer, where a chip usually has less than six connections. Moreover, neurons are much, much slower than the switching elements of the computer. It seems likely that the brain can accomplish its complex feats of perception and thought by means of millions of connections acting in parallel. The connections as a whole define the information content of the system. In this way a vast amount of knowledge can be brought to bear on a decision all at once. The brain seems to be able to perform as many as two hundred trillion operations in a second; not serially, but simultaneously. — Jeremy Campbell
864. Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris. — Larry Wall
865. Most people find the concept of programming obvious, but the doing impossible. — Alan Perlis
866. Most production software bugs are soft: they go away when you look at them. — Jim Gray
867. Most programs have numerical inputs and/or numerical configuration parameters. These parameters have minimum and maximum values. It is a testing truism that tests that probe values at or around (just less, just more) these extreme values are productive. That truth hasn’t changed. The question is not what we do for single numerical values but for combinations of numerical values. If a single parameter has two extremes (minimum and maximum) and we test these extremes properly, we’ll have six test cases to run (min-, min, min+, max-, max, max+). For two parameters, that’s 6 x 6 or 36 cases to try and for n parameters, that 6n. That’s an exponential test growth. That’s over 60 million test cases for ten parameters. These are easy test cases to generate automatically, but even so, at one- hundred test per second, that’s 168 hours of testing. And 10 parameters isn’t a lot. I’m sure you have many routines or programs in which the parameter count is in the 50–100 range. That works out to 2 x 1068 years or about 2x1058 times longer than the estimated age of the universe. Even automation won’t crack that nut. And if you only did the extreme (min and max) that’s just 2n and a mere 2 x 1011 universe lifetimes. — Boris Beizer
868. Most software is used in a business context, so most victims of bad interaction are paid for their suffering. Their job forces them to use software, so they cannot choose not to use it — they can only tolerate it as well as they can. — Alan Cooper
869. Most software needs to be spanked. — Alan Cooper
870. Most technology has the shelf life of a banana. — Scott McNealy
871. 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
872. Motor vehicles have to be safe, and there are rules and regulations governing their development and production which, by and large, keep the roads safe from exploding cars. It does not stop accidents caused by driver error or poor maintenance, but it does make us safer. And if a group of people build their own cars then they have to follow those same rules in order to be allowed to use public roads, even if they gave their cars away. It should be the same for software, especially in our networked world where other people’s insecure computers host spambots and other malware that can cause damage to all network users. — Bill Thompson
873. Much of the Web is like an anthill built by ants on LSD. — Jakob Nielsen
874. Multimedia? As far as I’m concerned, it’s reading with the radio on! — Rory Bremner
875. Mutually consenting classes may of course do whatever they like with each other, but even that doesn’t necessarily make it right. — Programming Perl, 2nd ed.
876. My adult and professional life has been spent trying to make computers easier to use, starting as far back as 1965. In those early days, people thought only sissies needed graphics. In 1972, when we devoted 256K to storing images, most people wrote it off as just another indecency and MIT arrogance. Why would anybody in their right mind commit so much memory to the icing, not the cake? Three decades later, we find a generation of kids who count memory not in Ks, but in Ms (and soon Gs). This is actually quite wonderful, but look at what we are using it for. The interface hasn’t fundamentally changed since the introduction of the Macintosh more than a decade ago. It’s just harder to use and obscenely obese. Someone needs a wake-up call. — Nicholas Negroponte
877. My basic idea is that programming is the most powerful medium of developing the sophisticated and rigorous thinking needed for mathematics, for grammar, for physics, for statistics, for all the “hard” subjects… In short, I believe more than ever that programming should be a key part of the intellectual development of people growing up. — Seymour Papert
878. My computer beat me at checkers, but I sure beat it at kickboxing. — Emo Phillips
879. My favorite thing about the Internet is that you get to go into the private world of real creeps without having to smell them. — Penn Jillette
880. My favorite way of avoiding breaking user code by changing base classes is simply to make major interfaces abstract classes. That way, the implementation details are in the derived classes and there is no private data to cause recompilation after change. The public interface can be kept relatively stable. — Bjarne Stroustrup
881. My feeling is that when we prepare a program, the experience can be just like composing poetry or music; as Andrei Ershov has said, programming can give us both intellectual and emotional satisfaction, because it is a real achievement to master complexity and to establish a system of consistent rules. — Donald Knuth
882. My idea is that, inasmuch as certain cognitive tasks and principles are tied to nature’s laws, these tasks and principles are indifferent to language, culture, gender, or the particular mode of information that is provided. I believe that there are some universal cognitive tasks that are deep and profound — indeed, so deep and profound that it is worthwhile to understand them in order to design our displays in accord with those tasks. Cognitive tasks should be turned into design principles. I think it is important for software to avoiding imposing a cognitive style on workers and their work. — Edward Tufte
883. My impression was and is that many programming languages and tools represent solutions looking for problems, and I was determined that my work should not fall into that category. Thus, I follow the literature on programming languages and the debates about programming languages primarily looking for ideas for solutions to problems my colleagues and I have encountered in real applications. Other programming languages constitute a mountain of ideas and inspiration. But it has to be mined carefully to avoid featurism and inconsistencies. — Bjarne Stroustrup
884. My message to the serious programmer is: spend a part of your working day examining and refining your own methods. Even though programmers are always struggling to meet some future or past deadline, methodological abstraction is a wise long-term investment. To the teacher of programming, even more, I say: identify the paradigms you use, as fully as you can, then teach them explicitly. They will serve your students when Fortran has replaced Latin and Sanskrit as the archetypal dead language. — Robert W. Floyd
885. 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? — Gerald Weinberg
886. Nearly everybody is convinced that every programming style but their own is ugly and unreadable. Leave out the “but their own” and they’re probably right. — Jerry Coffin
887. Never allow the same bug to bite you twice. — Steve Maguire
888. Never apply a Star Trek solution to a Babylon 5 problem. — Nicholas C. Weaver
889. Never assume anything for sure. Computers and programs are “living things.” — Tom Venetianer
890. NEVER EVER mess with a PCB jumper you don’t understand, even if it’s labeled “SEX AND FREE BEER” — Dave Haynie
891. Never forget the story of famous email user Oliver North. Ollie, you’ll remember, was a great devotee of the White House email system, PROFS. He diligently deleted all incriminating notes he sent or received. What he didn’t realize was that, somewhere else in the White House, computer room staff were equally diligently backing up the mainframe where his messages were stored. — Virginia Shea
892. Never put off until run time what you can do at compile time. — David Gries
893. Never trust a computer you can’t throw out a window. — Steve Wozniak
894. Never, ever, ever let systems-level engineers do human interaction design unless they have displayed a proven secondary talent in that area. Their opinion of what represents good human-computer interaction tends to be a bit off-track. — Bruce Tognazzini
895. Niklaus Wirth has lamented that, whereas Europeans pronounce his name correctly (Ni-klows Virt), Americans invariably mangle it into (Nick-les Worth). Which is to say that Europeans call him by name, but Americans call him by value. — unknown
896. No amount of source-level verification or scrutiny will protect you from using untrusted code. — Ken Thompson
897. No computer has ever been designed that is ever aware of what it’s doing; but most of the time, we aren’t either. — Marvin Minsky
898. No matter how complex the situation, good systems engineering involves putting value measurements on the important parameters of desired goals and performance of pertinent data, and of the specifications of the people and equipment and other components of the system. — Simon Ramo and Robin St. Clair
899. No matter what the problem is, it’s a people problem. — Jerry Weinberg
900. No printing is permitted on this book. This book cannot be given to someone else. This book cannot be read aloud. — License terms for Adobe ebooks
901. Not having a schedule is okay if it’s your PhD and you plan to spend 14 years on the thing, or if you’re a programmer working on the next Duke Nukem and we’ll ship when we’re good and ready. But for almost any kind of real business, you just have to know how long things are going to take, because developing a product costs money. — Joel Spolsky
902. Not that I have anything much against redundancy. But I said that already. — Larry Wall
903. Not too many years ago, a child’s experience was limited by how far he or she could ride a bicycle or by the physical boundaries that parents set. Today, the real boundaries of a child’s life are set more by the number of available cable channels and videotapes, by the simulated reality of videogames, by the number of megabytes of memory in the home computer. Now kids can go anywhere, as long as they stay inside the electronic bubble. — Richard Louv
904. Now for the converse. Should the programmers know what the testers have in store for them? It is possible for a dishonest programmer to cheat and fake test results. But dishonesty will manifest itself no matter what safeguards you impose. All testing is based on the “competent programmer” hypothesis. This hypothesis states that we’re dealing with “natural bugs” rather than sabotage. Similarly, though never stated, we also assume that the programmer is honest in addition to being competent. If a programmer is honest, competent, and given the time and resources needed, then if we give them detailed information on the tests we’ve planned, they have the opportunity to examine their software in that light and will often make design changes that avoid the potential problems for which our tests were fishing. Isn’t that what we want to accomplish? To find and fix the bug before it’s written in? Just as more software knowledge means better tests, more test knowledge means better software. And if the programmers “cheat” by avoiding all the traps we’ve laid for them, then as testers it is our responsibility to escalate the game (and the software’s quality) by thinking of even subtler conditions and corresponding tests. — Boris Beizer
905. Now how about independent test groups? Do we really want to do away with that? Lets now distinguish between independent testing and independent test groups. Independent test groups are wasteful because it means that two different sets of people must learn the software. Such groups are wasteful because the very independence means that much testing will be redundant. I believe in independent testing but not in independent test groups. Independent testing means taking a different look at the software than taken by the software’ originator. That different look can be taken by a different person or by a different group, or by a different organization (e.g., an independent test group). In mature organizations with programmers that don’t have their ego written all over the software, individual programmers and members of the same programming group can provide that independent look. It’s more efficient and need not compromise software quality or testing effectiveness. — Boris Beizer
906. Now please, don’t misunderstand me. Programs should interact with other programs in a predictable way. If your software has direct interfaces with other programs (such as export and import, communications, data structures, backup, etc.) then you must test those interfaces. You’d be a fool not to. I’m not talking about direct interfaces or interfaces with virtual processors such as the operating system, network managers, etc. Test the direct interfaces, test them often, and test them well. — Boris Beizer
907. Now that we have all this useful information, it would be nice to be able to do something with it. Actually, it can be emotionally fulfilling just to get information. This is usually only true, however, if you have the social life of a kumquat. — UNIX Programmer’s Manual
908. Object-oriented programming is an exceptionally bad idea which could only have originated in California — Edsger Dijkstra
909. Observe that for the programmer, as for the chef, the urgency of the patron may govern the scheduled completion of the task, but it cannot govern the actual completion. An omelet, promised in two minutes, may appear to be progressing nicely. But when it has not set in two minutes, the customer has two choices — wait or eat it raw. Software customers have had the same choices. — Frederick P. Brooks
910. Of all my programming bugs, 80% are syntax errors. Of the remaining 20%, 80% are trivial logical errors. Of the remaining 4%, 80% are pointer errors. And the remaining 0.8% are hard. — Marc Donner
911. Of all the monsters that fill the nightmares of our folklore, none terrify more than werewolves, because they transform unexpectedly from the familiar into horrors. For these, one seeks bullets of silver that can magically lay them to rest. The familiar software project, at least as seen by the nontechnical manager, has something of this character; it is usually innocent and straightforward, but is capable of becoming a monster of missed schedules, blown budgets, and flawed products. So we hear desperate cries for a silver bullet — something to make software costs drop as rapidly as computer hardware costs do. — Fred Brooks
912. Of course, Linus didn’t sit down in a vacuum and suddenly type in the Linux source code. He had my book. But the code was his. The proof of this is that he messed the design up. — Andrew Tanenbaum
913. Of course, the best way to get accurate information on Usenet is to post something wrong and wait for corrections. — Matthew Austern
914. Often program density and comprehensibility are inversely related. Its always funny to talk to people who are real Perl freaks, because they love to make these magic pieces of Perl code, and theres no detectable flaws or anything in there, its just randomly assembled characters, or it looks pretty random. Its a sort of write once, never look at it again. — James Gosling
915. Old hardware becomes obsolete; old software goes into production every night. — Robert Glass
916. Old testers never die, they just regress. — Jeremy Sloan
917. On two occasions I have been asked by+members+of+Parliament, “Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?” I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question. — Charles Babbage
918. Once a person has understood the way variables are used in programming, he or she has understood the quintessence of programming. — Edsger Dijkstra
919. Once the business data have been centralized and integrated, the value of the database is greater than the sum of the preexisting parts. — Larry Ellison
920. Once the product’s task is known, design the interface first; then implement to the interface design.
921. Users do not care about what is inside the box, as long as the box does what they need done. — Jef Raskin
922. Once upon a time, it was the job of programmers to invent sort algorithms. These days almost all programmers use sort algorithms and a few experts spend their lives improving on the state of the art for particular purposes. We need to make concurrency implicit in a similar way so that the average programmer will not have to do complicated concurrency operations. If concurrency is internal to a class, to an object, it becomes much easier to handle. My feeling is that a lot of concurrency can be packaged so that the end user has only the vaguest idea of how it’s really done. — Bjarne Stroustrup
923. Once you succeed in writing the programs for these complicated algorithms, they usually run extremely fast. The computer doesn’t need to understand the algorithm, its task is only to run the programs. — Robert Tarjan
924. Once you understand how to write a program get someone else to write it. — Alan Perlis
925. One day I got a call toward the end of the day from a sales rep in Chicago who couldn’t get his computer to boot up. We went round and round for about two hours — nothing worked. I was ready to pull my hair out, but I don’t like losing. To lighten the tension of the moment, I started chitchatting with him as we’re waiting to see if the machine will restart. He has an IBM ThinkPad, and I told him how much I like mine. He said, “Yeah, they’re okay, but I travel a lot, and I got tired of the darn thing being so heavy, so I installed Windows CE to make it lighter.” — Samuel Stoddard
926. One day, when I timed an annoying (computer) delay and found it constituted all of 10 seconds, I had what I would call a “monk moment,” a quick slap that told me, Pay attention — watch yourself. I had let technology and its attendant idol, efficiency, make a fool of me. — Kathleen Norris
927. One difference between humans and computers lies in the relative strengths in their respective abilities to understand symbolic relationships and to learn facts. A computer can remember billions of facts with extreme precision, whereas we are hard pressed to remember more than a handful of phone numbers. On the other hand, we can read a novel and understand and manipulate the subtle relationships between the characters: something that computers have yet to demonstrate an ability to do. Computers have been weak in their ability to understand and process information that contains abstractions and complex webs of relationships, but they are improving. — Raymond Kurzweil
928. One man’s constant is another man’s variable. — Alan Perlis
929. One of Linus Torvald’s earlier projects was a program that would switch between printing AAAA and BBBB. This later evolved to Linux. — Larry Greenfield, The Linux Users’ Guide Beta Version 1
930. One of my first big programming assignments as a student of computer science was a source formatter for Pascal. The assignment was designed to show us the real-life difficulties of group programming projects. It succeeded perhaps too well. For a long time, I was convinced that source code formatters were a total waste of time, and decided to write beautiful code that no automatic formatter could improve upon. In fact, I would intentionally write code that formatters could only make worse. — Guido van Rossum
931. One of my most productive days was throwing away 1000 lines of code. — Ken Thompson
932. One of the best things to come out of the home computer revolution could be the general and widespread understanding of how severely limited logic really is. — Frank Herbert
933. One of the big bugaboos of current software is the configuration compatibility problem and how to test for it. How, using PC software as an example (because that’s where the problem is most acute), should we test to assure that this software will work in every possible hardware and software configuration that it might face in the present or in the future and how do we determine by testing that this software can coexist with every other piece of software or application package with which it may cohabit? — Boris Beizer
934. One of the great enemies of design is when systems or objects become more complex than a person — or even a team of people — can keep in their heads. This is why software is generally beneath contempt. — Bran Ferren
935. One of the great inventions of the twentieth century was the studied, methodical engineering of myth for political ends. — Caryl Rivers
936. One of the great skills in using any language is knowing what not to use, what not to say. There’s that simplicity thing again. — Ron Jeffries
937. 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
938. One of the most dangerous (and evil) things ever injected into the project world is the notion of process maturity. Process maturity is for replicable manufacturing contexts. Projects are one-time shots. Replicability is never the primary issue on one-time shots. More evil than good has come from the notion that we should stick to the methodology. This is a recipe for non-adaptive death. I’d rather die by commission. — David Schmaltz
939. One of the problems the internet has introduced is that in the electronic village all the village-idiots have internet access. — Peter Nelson
940. One of the things that tools can do is to help bad designers create ghastly designs much more quickly than they ever could in the past. — Grady Booch
941. One person’s data is another person’s program. — Guy L. Steele, Jr., Tartan Labs
942. One test is worth a thousand expert opinions. — Bill Nye
943. One user — a regular caller of ours — got herself into some serious computer trouble when she set about cleaning up her system. She had been exploring the hard drive in the file manager and discovered hundreds of files in the Windows directory with all different file extensions. Being of an orderly mind, and with several hours of free time, she had created a TXT folder, a COM folder, a DLL folder, and so forth, and moved all the files into these subdirectories. — Samuel Stoddard
944. Onedemonstrations always crash. And two: the probability of them crashing goes up exponentially with the number of people watching. — Steve Jobs
945. Operating systems are like underwear — nobody really wants to look at them. — Bill Joy
946. Optimizations always bust things, because all optimizations are, in the long haul, a form of cheating, and cheaters eventually get caught. — Larry Wall
947. Other advanced languages, such as assembler and C, were not terribly complex in themselves, but the environments in which applications were developed were downright weird, with mines scattered about everywhere, ready to blow the inattentive programmer out of the water. — Bruce Tognazzini
948. Our ability to imagine complex applications will always exceed our ability to develop them. — Grady Booch
949. Our basic ideas about what are better or worse practices are strongly influenced by people we perceive as knowing how to make software — James Bach
950. Our democracy, our constitutional framework is really a kind of software for harnessing the creativity and political imagination for all of our people. The American democratic system was an early political version of Napster. — Al Gore
951. Our intellectual powers are rather geared to master static relations and that our powers to visualize processes evolving in time are relatively poorly developed. For that reason we should do (as wise programmers aware of our limitations) our utmost to shorten the conceptual gap between the static program and the dynamic process, to make the correspondence between the program (spread out in text space) and the process (spread out in time) as trivial as possible. — Edsger Dijkstra
952. Our studies support the claim that knowledge of programming plans and rules of programming discourse can have a significant impact on program comprehension…. programmers have strong expectations that other programmers will follow these discourse rules. If the rules are violated, then the utility afforded by the expectations that programmers have built up over time is effectively nullified. — Greg Kroah-Hartman
953. Over the last year online banking has attracted 6.3 million users, but a massive 3.1 million of those have closed their accounts already due to poor website design and inefficient service. — Internet Money, Issue 4
954. Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest. — Isaac Asimov
955. Part of the reason so many companies continue to develop software using variations of waterfall is the misconception that the analysis phase of waterfall completes the design and the rest of the process is just non-creative execution of programming skills. — Steven Gordon
956. Pattern recognition and association make up the core of our thought. These activities involve millions of operations carried out in parallel, outside the field of our consciousness. If AI appeared to hit a brick wall after a few quick victories, it did so owing to its inability to emulate these processes. — Daniel Crevier
957. Pay attention to what users do, not what they say. — Jakob Nielsen
958. PCMCIA — People can’t memorize computer industry acronyms. — Andy Grove
959. People get a message stating, “There are a lot of interesting things on this disk, but I seem to have misplaced my glasses, so I can’t read it right now. Would you like me to utterly destroy all your work for the last year?” Oh, I’m sorry. That’s not actually what it says. It says, “Disk damaged. Initialize?” Anyone writing messages like this needs to be initialized. — Bruce Tognazzini
960. People get annoyed when you try to debug them. — Larry Wall
961. People have always been quick to announce “the next software development revolution,” usually about their own brand-new technology. Dont believe it. New technologies are often genuinely interesting and sometimes beneficial, but the biggest revolutions in the way we write software generally come from technologies that have already been around for some years and have already experienced gradual growth before they transition to explosive growth. This is necessary: You can only base a software development revolution on a technology that’s mature enough to build on (including having solid vendor and tool support), and it generally takes any new software technology at least seven years before it’s solid enough to be broadly usable without performance cliffs and other gotchas. As a result, true software development revolutions like OO happen around technologies that have already been undergoing refinement for years, often decades. — Herb Sutter
962. People seem to misinterpret complexity as sophistication. — Niklaus Wirth
963. People should mentally separate programming into building libraries and using them. Today you write a supporting library, and tomorrow you use it. Far too many times people try and build their systems as one big conglomerate. I have a tendency to build the specific case first if I haven’t tried something several times before, because it is pretty fundamental that we understand the concrete solution better than the abstract. That approach contrasts with the approach taken by people who start generalizing before they’ve tried it once — they sit trying to design a general solution to a problem that they have no experience with. — Bjarne Stroustrup
964. 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. — Donald Knuth
965. People who deal with bits should expect to get bitten. — Jon Bentley
966. People who don’t take risks generally make about two big mistakes a year. People who do take risks generally make about two big mistakes a year. — Peter F. Drucker
967. Perhaps if we wrote programs from childhood on, as adults we’d be able to read them. — Alan Perlis
968. Perhaps the very best question that you can memorize and repeat, over and over, is, “What is the most valuable use of my time right now?” — Brian Tracy
969. Perl — The only language that looks the same before and after RSA encryption. — Keith Bostic
970. Perl has grown from being a very good scripting language into something like a cross between a universal solvent and an open-ended Mandarin where new ideograms are invented hourly. — Jeffrey Davis
971. Perl is a car with an autopilot designed by insane aliens. — Jeff Smith
972. Perl is like vise grips. You can do anything with it but it is the wrong tool for every job. — Bruce Eckel
973. Personal Web pages are the ’90s equivalent of home video, except that you don’t have to visit someone else’s house to fall asleep — you can do so in the comfort of your own home. — Ray Valdes
974. Personalizationthe automatic tailoring of sites and messages to the individuals viewing them so that we can feel that somewhere there’s a piece of software that loves us for who we are. — David Weinberger
975. Pertempto ergo sum I test, therefore I am. — Harry Robinson
976. 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
977. Pesticide Paradox: Every method you use to prevent or find bugs leaves a residue of subtler bugs against which those methods are ineffectual. — Boris Beizer
978. pixel, n.: A mischievous, magical spirit associated with screen displays. The computer industry has frequently borrowed from mythology: Witness the sprites in computer graphics, the demons in artificial intelligence, and the trolls in the marketing department. — Jeff Meyer
979. PL/I and Ada started out with all the bloat, were very daunting languages, and got bad reputations — deservedly. C++ has shown that if you slowly bloat up a language over a period of years, people don’t seem to mind as much. — James Hague
980. Please don’t fall into the trap of believing that I am terribly dogmatical about the+goto+statement. I have the uncomfortable feeling that others are making a religion out of it, as if the conceptual problems of programming could be solved by a single trick, by a simple form of coding discipline! — Edsger Dijkstra
981. Pointers are like jumps, leading wildly from one part of the data structure to another. Their introduction into high-level languages has been a step backwards from which we may never recover. — Charles Anthony Richard Hoare
982. Poor management can increase software costs more rapidly than any other factor. — Barry Boehm
983. Portability is for people who cannot write new programs. — Linus Torvalds
984. Premature optimization is the root of all evil. — Donald E. Knuth
985. Presumably, we’re all fully qualified computer nerds here, so we are allowed to use “access” as a verb. Be advised, however, that the practice in common usage drives English-language purists to scowling fidgets. — Erik Strom
986. Problems cannot be solved at the same level of awareness that created them. — Albert Einstein
987. Problems look mighty small from 150 miles up. — Roger B. Chaffee
988. Problems worthy of attack prove their worth by fighting back. — Paul Erdos
989. Product quality has almost nothing to do with defects or their lack. — Tom DeMarco
990. Program — A set of instructions, given to the computer, describing the sequence of steps the computer performs in order to accomplish a specific task. The task must be specific, such as balancing your checkbook or editing your text. A general task, such as working for world peace, is something we can all do, but not something we can currently write programs to do. — From Unix User’s Manual, Supplementary Documents, p. 14–3:
991. Programmers are like artists. Writing software that just gets put away feels like intellectual masturbation. — Bruce Perens
992. Programmers are not to be measured by their ingenuity and their logic but by the completeness of their case analysis. — Alan Perlis
993. Programmers can get a lot of benefit from reading source code. You can’t simply tell people how to be good programmers. You can offer them some principles of good programming. You can describe some good design experiences you’ve had. But you can’t give them a real knowledge of how to be a good programmer. I believe the best way for that knowledge to be obtained is by reading code. Writing code can certainly help people become good programmers, but reading good code is much better. — Yukihiro Matsumoto
994. Programmers regard themselves as artists. As such they consider keeping accurate records of their handiwork on par with washing an ash tray. — Otis Port
995. Programmers waste enormous amounts of time thinking about, or worrying about, the speed of non-critical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. — Donald E. Knuth
996. Programmerspeople who struggle to fix the bugs they create; Analyst/Programmers: people who analyze existing strategies to fix the bugs they create; Developers: people who develop new strategies to fix the bugs they create; Computer Scientists: people who analyze and develop scientific strategies to fix the bugs they create. — Rodolfo A. Frino
997. Programming can be fun, so can cryptography; however they should not be combined. — Kreitzberg and Shneiderman
998. Programming is an unnatural act. — Alan Perlis
999. Programming is just another name for the lost art of thinking. — Aaron Hsu
1000. Programming is like sex; one mistake and you have to support it for the rest of your life. — Michael Sinz
1001. Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians. — Edsger Dijkstra
1002. Programming is similar to a game of golf. The point is not getting the ball in the hole but how many strokes it takes. — Harlan Mills
1003. Programming is the art of picking a needle out of a hay heap. — Rodolfo A. Frino
1004. 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. — from Revised 4 Report on the Algorithmic Language Scheme
1005. Programming languages, like pizzas, come in only too sizes; too big and too small. — Richard Pattis
1006. Programming software is like creating a maze and going through it at the same time. Only you know the exact route you’ve taken, and anyone else is likely to get lost or screw it up entirely. — Lyndsey Hayward
1007. 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
1008. Programming without an overall architecture or design in mind is like exploring a cave with only a flashlight: You don’t know where you’ve been, you don’t know where you’re going, and you don’t know quite where you are. — Danny Thorpe
1009. Programs must be written for people to read, and only incidentally for machines to execute. — Harold Abelson and Gerald Sussman
1010. Progress in software and organizational design is like progress in the Kama Sutra: we’ve tried all of the positions, some more than once, some we enjoy and some hurt because we aren’t flexible enough, and yet we keep the book open next to the night light. — Claude Bullard
1011. Progress is possible only if we train ourselves to think about programs without thinking of them as pieces of executable code. — Edsger Dijkstra
1012. Projects promoting programming in natural language are intrinsically doomed to fail. — Edsger Dijkstra
1013. Prolonged contact with the computer turns mathematicians into clerks and vice versa. — Alan Perlis
1014. Purely applicative languages are poorly applicable. — Alan Perlis
1015. Puzzle Principle: We can program a computer to solve any problem by trial and error, without knowing how to solve it in advance, provided only that we can have a way to recognize when the problem is solved. — Marvin Minsky
1016. Python is a truly wonderful language. When somebody comes up with a good idea it takes about 1 minute and five lines to program something that almost does what you want. Then it takes only an hour to extend the script to 300 lines, after which it still does almost what you want. — Jack Jansen
1017. Python’s syntax succeeds in combining the mistakes of Lisp and Fortran. I do not construe that as progress. — Larry Wall
1018. Q: What is the single greatest software development sin a software company can commit?
1019. A: Deciding to completely rewrite your product from scratch, on the theory that all your code is messy and bug-prone and is bloated and needs to be completely rethought and rebuilt from ground zero. — Joel Spolsky
1020. Quality is free, but only to those who are willing to pay heavily for it. — Lister and DeMarco
1021. Quality is never an accident; it is always the result of high intention, sincere effort, intelligent direction and skillful execution; it represents the wise choice of many alternatives. — William A. Foster
1022. Quality isn’t something you lay on top of subjects and objects like tinsel on a Christmas tree. — Robert Pirsig
1023. Quality means doing it right when no one is looking. — Henry Ford
1024. Reading computer manuals without the software is as frustrating as reading sex manuals without the hardware. — Arthur C. Clarke
1025. Real men don’t use backups, they post their stuff on a public ftp server and let the rest of the world make copies. — Linus Torvalds
1026. Real programmers always confuse Christmas and Halloween because Oct31 == Dec25. — Andrew Rutherford
1027. Real programmers can write assembly code in any language. — Larry Wall
1028. Real quality is far more a matter of what a product does for you and how it changes you than whether it is perfectly free of flaws. — Tom DeMarco
1029. Realism in testing (for objective 1) is a hang-up that gets in the way of good testing. In some software-driven electromechanical systems, for example, the only way to force timing problems is to remove the hardware and to test the software in a simulator that allows gears and things to “move” several times faster than the speed of light. Realism also gets in the way of test automation. Remember, we’re testing software, not the larger system in which the software may be embedded. Testing realism might mean building complicated robots that punch keys, turn dials, pour blood into test tubes, etc. These aren’t needed to test software. A false limitation of software testing to realistic hardware and/or system constraints, can for an embedded system, eliminate 50%-85% of all the tests that should be run. — Boris Beizer
1030. Realism in testing is a hang-up that gets in the way of good testing. In some software-driven electromechanical systems, for example, the only way to force timing problems is to remove the hardware and to test the software in a simulator that allows gears and things to “move” several times faster than the speed of light. Realism also gets in the way of test automation. Remember, we’re testing software, not the larger system in which the software may be embedded. Testing realism might mean building complicated robots that punch keys, turn dials, pour blood into test tubes, etc. — Boris Beizer
1031. Recursion is the root of computation since it trades description for time. — Alan Perlis
1032. Refactoring provides enough energy to a system for it to relax into a new and more comfortable state, a new local minimum. The effect of refactoring commonality is to tame the complexity of your system. — Keith Henney
1033. Reflection is like refactoring. If you can measure how much you are doing, you aren’t doing enough. — Ron Jeffries
1034. Reliability testing under a statistically valid user profile has been established for many applications as an effective method to determine when enough testing has been done to warrant using the product. Where its applicability has been confirmed, it is an accepted part of the testing tool kit. — Boris Beizer
1035. Remember that programming languages are not primarily a form for finished programs, but someting that programs have to be developed in. — Paul Graham
1036. Replicating assemblers and thinking machines pose basic threats to people and to life on Earth. Among the cognoscenti of nanotechnology, this threat has become known as the gray goo problem. — Eric Drexler
1037. Requirements are not architecture. Requirements are not design, nor are they the user interface. Requirements are need. — Andrew Hunt and David Thomas
1038. Requirements engineering is asking the right question, of the right person, at the right time. Easy, isn’t it? — Neil Maiden
1039. Requirements engineering is the branch of software engineering concerned with the real-world goals for, functions of, and constraints on software systems. It is also concerned with the relationship of these factors to precise specifications of software behavior, and to their evolution over time and across software families. — Pamela Zave
1040. Reusing pieces of code is like picking off sentences from other people’s stories and trying to make a magazine article. — Bob Frankston
1041. Right now you are a prisoner of each application you use. — Theodor Holm “Ted” Nelson
1042. Right now, computers, which are supposed to be our servants, are oppressing us. — Jef Raskin
1043. Rule 1 of writing software for nontechnical users is this: if they have to read documentation to use it you designed it wrong. — Eric Raymond
1044. Rule#1: Don’t sweat the small stuff. Rule#2: It’s all small stuff. — Michael Mantell
1045. Rule”You shouldn’t have to open up a black box and take it apart to find out you’ve been pushing the wrong buttons!”Corollary”Every black box should have at least TWO blinking lights: “Paper Jam” and “Service Required (or equivalent).” — Steven D. Majewski
1046. Run a contest asking your customers to write the best manual for your product or service. Youll have a handful of good manuals, and you’ll uncover some evangelists. — Guy Kawasaki
1047. Save a tree — disband an ISO working group today. — Jason Zions
1048. Science is what we understand well enough to explain to a computer. Art is everything else we do. — Donald Knuth
1049. See, no matter how clever your automation systems might be, it all falls apart if your human wetware isn’t up to the job. — Andrew Orlowski
1050. See, you not only have to be a good coder to create a system like Linux, you have to be a sneaky bastard, too. — Linus Torvalds
1051. Serving the users’ needs doesn’t mean doing things the way the user expects us to. The users’ needs are ill-served by the programmer who takes design and architectural instructions from a non-programming user. Similarly, the users’ quality needs are ill served by the tester who strives to please by organizing tests along the users’ naive, preconceived ideas of how testing should be organized. — Boris Beizer
1052. Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. — S. Kelly-Bootle
1053. Should the programmers know what the testers have in store for them? All testing is based on the “competent programmer” hypothesis. This hypothesis states that we’re dealing with “natural bugs” rather than sabotage. If a programmer is honest, competent, and given the time and resources needed, then if we give them detailed information on the tests we’ve planned, they have the opportunity to examine their software in that light and will often make design changes that avoid the potential problems for which our tests were fishing. Isn’t that what we want to accomplish? To find and fix the bug before it’s written in? Just as more software knowledge means better tests, more test knowledge means better software. And if the programmers “cheat” by avoiding all the traps we’ve laid for them, then as testers it is our responsibility to escalate the game (and the software’s quality) by thinking of even subtler conditions and corresponding tests. — Boris Beizer
1054. Simple things should be simple and complex things should be possible. — Alan Kay
1055. Simplicity does not precede complexity, but follows it. — Alan Perlis
1056. Simplicity is prerequisite for reliability. — Edsger Dijkstra
1057. 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. — Edsger Dijkstra
1058. Since human beings themselves are not fully debugged yet, there will be bugs in your code no matter what you do. — Chris Mason
1059. Since humans don’t have decryption systems built into their anatomy, information must be deciphered before we experience it. The only way to make music that cannot be copied is to make music that cannot be heard. The only way to make movies that cannot be copied is to make movies that cannot be viewed. — Gene Kan
1060. 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. — Bill Gates
1061. Sixty percent of software’s dollar is spent on maintenance, and sixty percent of that maintenance is enhancement. — Robert Glass
1062. Smart data structures and dumb code works alot better than the other way around. — Eric S. Raymond
1063. So many good ideas are never heard from again once they embark in a voyage on the semantic gulf. — Alan Perlis
1064. So-called “natural language” is wonderful for the purposes it was created for, such as to be rude in, to tell jokes in, to cheat or to make love in (and Theorists of Literary Criticism can even be content-free in it), but it is hopelessly inadequate when we have to deal unambiguously with situations of great intricacy, situations which unavoidably arise in such activities as legislation, arbitration, mathematics or programming. — Edsger Dijkstra
1065. Software and software development continue their rapid evolution — as do testing and QA technologies. Some of the best testing methods of the past are three decades old. They emerged in the mainframe days of batch processing, expensive computation, and minuscule memories. As a community devoted to quality, it would be blindly arrogant of us to think and act as if the profound changes of just the past decade had no effect on our methodologies. Commit to a continual quantitative evaluation of your paradigms so that when the world and technology changes, your methods change to match. — Boris Beizer
1066. Software comes from heaven when you have good hardware. — Ken Olsen
1067. Software development is a social activity. — David West
1068. Software development is like riding a surfboard — there is no process that will assure a successful ride, nor is there any process that will assure that you will interact propitiously with the other surfers sharing the same wave. Published processes, like published methods, provide observational data from which you can learn and thereby improve your innate abilities — just as observation of master surfers enables you to improve yourself. — David West
1069. Software economics has often been misconceived as the means of estimating the cost of programming projects. But economics is primarily a science of choice, and software economics should provide methods and models for analyzing the choices that software projects must make. — Leon Levy
1070. Software engineering has accepted as its charter “How to program if you cannot.” — Edsger Dijkstra
1071. Software engineering is fundamentally a contact sport. In software engineering as in rugby, no amount of theory about how to succeed in a scrum is going to come close to real experience in the middle of a few scrums. — Barry Boehm
1072. Software Engineering is that part of Computer Science which is too difficult for the Computer Scientist. — F. L. Bauer
1073. Software engineering: computer science for people who can’t program. — Edsger Dijkstra
1074. Software gets slower faster than hardware gets faster. — Nicklaus Wirth
1075. Software is a gas; it expands to fill its container. — Nathan Myhrvold
1076. Software is a great combination between artistry and engineering. When you finally get done and get to appreciate what you have done it is like a part of yourself that you’ve put together. I think a lot of the people here feel that way. — Bill Gates
1077. Software is a time bomb. — Michael Feathers
1078. Software is best understood as a branch of movie making. — Ted Nelson
1079. Software is like entropy. It is difficult to grasp, weighs nothing, and obeys the Second Law of Thermodynamics; i.e. it always increases. — Norman R. Augustine
1080. Software is like sex: It’s better when it’s free. — Linus Torvalds
1081. Software is released for use, not when it is known to be correct, but when the rate of discovering errors slows down to one that management considers acceptable. — David West
1082. Software is the soul to the lifeless body of the hardware. — Ong Lee Shyh
1083. Software is to computers as yeast is to dough. — Chuck Bradshaw
1084. Software is under a constant tension. Being symbolic it is arbitrarily perfectible; but also it is arbitrarily changeable. — Alan Perlis
1085. Software is written by humans and therefore has bugs. — John Jacobs
1086. Software people would never drive to the office if building engineers and automotive engineers were as cavalier about buildings and autos as the software “engineer” is about his software. — Henry Baker
1087. Software suppliers are trying to make their software packages more user-friendly. Their best approach, so far, has been to take all the old brochures, and stamp the words, “user-friendly” on the cover. — Bill Gates
1088. Software Testing can be viewed as asking questions of the system under test. — Alan Richardson
1089. Software testing is a second childhood: You broke it, and I’m telling. — Sara Ford
1090. Software testing is like fishing, but you get paid. — Harry Robinson
1091. Software Testing: The bugs stop here. — Harry Robinson
1092. Software Testing: Where failure is always an option. — Harry Robinson
1093. Software without documentation is like a ship without a compass. — Assaad Chalhoub
1094. Software, by being comprehensive, can save costs by avoiding add-on pieces of software. We can save money in terms of speed of development or by being able to run on less expensive hardware. — Bill Gates
1095. Some people become so immersed in technology that they risk losing their own identity — a syndrome called technosis. You are a victim of technosis if you answer “yes” to questions such as: “Do you feel out of touch when you haven’t checked your answering machine or voice mail in the last 12 hours?” Symptoms of technosis include overdoing work and never feeling finished, believing faster is better, and not knowing how to function successfully without technology. — Michelle M. Weil and Larry D. Rosen, TechnoStress, 1999
1096. Some people have told me they don’t think a fat penguin really embodies the grace of Linux, which just tells me they have never seen an angry penguin charging at them in excess of 100mph. They’d be a lot more careful about what they say if they had. — Linus Torvalds
1097. Some people seem to believe that a programming language can or at least should solve most of their problems with system building. They are condemned to search forever for the perfect programming language and become repeatedly disappointed. — Bjarne Stroustrup
1098. Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems. — Jamie Zawinski
1099. Some places it is better not to be. Some things it is better not to do. Life is too short to be engaged in activities that make one wish it were shorter. — Stanley Bing
1100. Some problems are so complex that you have to be highly intelligent and well-informed just to be undecided about them. — Laurence J. Peter
1101. Some programming languages manage to absorb change, but withstand progress. — Alan Perlis
1102. Some say Google is God. Others say Google is Satan. But if they think Google is too powerful, remember that with search engines unlike other companies, all it takes is a single click to go to another search engine. — Sergey Brin
1103. Some users, because they don’t know testing technology, or even that there is a such a thing as testing technology, mistakenly believe that they know something about testing. That’s the trouble: they know a thing or two when what they need to know to do effective testing are ten-thousand things. We’ve must keep plugging away on this one and educate the user that testing is a technical discipline as rigorous as programming and that if they’re not competent to do programming, they’re not competent to do testing. — Boris Beizer
1104. Sometimes I think the only universal in the computing field is the fetch-execute-cycle. — Alan Perlis
1105. Stakeholders seldom understand their requirements fully at the beginning of a project. They often lack a clear vision of what the system should do and change their minds during development. In general, stakeholders only become more sure about what they want when they see a system that does not exhibit the necessary features. — Annie Anton and Colin Potts
1106. Standards are always out of date. That’s what makes them standards. — Alan Bennett
1107. Structured Programming supports the law of the excluded muddle. — Alan Perlis
1108. Students in my software+testing classes often have a very difficult time thinking of bad ways to do things. Cultivate the skill of choosing poorly. It will be invaluable in evaluating others’ ideas. — Lee Copeland
1109. Success is a lousy teacher. It seduces smart people into thinking they can’t lose. — Bill Gates
1110. Successful computer entertainments in language have tended to be about the way something quite small and unitary — the chip, the microelectronic impulse, the bytes, the little gray box on one’s desk — opens up into something very large and elaborate. This opening up, the discovery of much in little, seems to be a fundamental resonance of human intelligence. — Robert Pinsky
1111. Suffusing the+technology culture is the belief among programmers and engineers that they’re working on the Next Big Thing — projects that change the world, not just deliver a more absorbent diaper or crunchier breakfast cereal. — Joseph Menn
1112. Suppose that we had n computers instead of just one. How much can we speed up what kinds of calculations? For some, we can surely gain a factor of n. But these are rare. For others, we can gain log n, but it is hard to find any or to prove what are their properties. And for most, I think, we can gain hardly anything; this is the case in which there are many highly branched conditionals, so that look-ahead on possible branches will usually be wasted. We know almost nothing about this; most people think, with surely incorrect optimism, that parallelism is usually a profitable way to speed up most computations. — Marvin Minsky
1113. Surveying the shifts of interest among computer scientists and the ever-expanding family of those who depend on computers in their work, one cannot help being struck by the power of the computer to bind together, in a genuine community of interests, people whose motivations differ widely. For what keeps us together is not some abstraction, such as Turing machines, or information, but the actual hardware that we work with everyday. — Maurice V. Wilkes
1114. Swallow a toad in the morning and you will encounter nothing more disgusting the rest of the day. — Nicolas de Chamfort
1115. Symmetry is a complexity-reducing concept (co-routines include subroutines); seek it everywhere. — Alan Perlis
1116. Symmetry is overrated. Overrated is symmetry. — Larry Wall
1117. Syntax, my lad. It has been restored to the highest place in the republic. — John Steinbeck
1118. System debugging, like astronomy, has always been done chiefly at night. — Frederick P. Brooks, Jr.
1119. System programmers and machine designers who produce the systems that the rest of us must work with. Please, give us tools that are a pleasure to use, especially for our routine assignments, instead of providing something we have to fight with. Please, give us tools that encourage us to write better programs, by enhancing our pleasure when we do so. It’s very hard for me now to convince college freshmen that programming is beautiful. — Donald E. Knuth
1120. Systems and structures are secondary to values, which in themselves are a powerful source of control that reduces the need for formal systems. — Joseph Badaracco, Jr. and Richard Ellsworth
1121. Systems have bugs. A bug is a particular kind of failure. It’s different from a malfunction. When something malfunctions, it no longer works properly. When something has a bug, it misbehaves in a particular way, possibly unrepeatable, and possibly unexplainable. Bugs are unique to systems. Machines can break, or fail, or not work, but only a system can have a bug. — Bruce Schneier
1122. Systems have sub-systems and sub-systems have sub-systems and so on ad finitum — which is why we’re always starting over. — Alan Perlis
1123. Tabs are good, spaces are bad and mixing the two just means that your motives are confused and that you don’t use enough functions. — John J. Lehmann
1124. Talk is cheap. Show me the code. — Linus Torvalds
1125. Teaching to unsuspecting youngsters the effective use of formal methods is one of the joys of life because it so extremely rewarding. Within a few months, they find their way into a new world with a justified degree of confidence that is radically novel for them; within a few months, their concept of intellectual culture has acquired a radically new dimension. To my taste and style, that is what education is about. — Edsger W. Dijkstra
1126. Technical people are better off not looking at patents. If somebody sues you, you change the algorithm or you just hire a hit-man to whack the stupid git. — Linus Torvalds
1127. Technology is like fish. The longer it stays on the shelf, the less desirable it becomes. — Andrew Heller
1128. Technology presumes there’s just one right way to do things and there never is. — Robert M. Pirsig
1129. Technology, like art, is a soaring exercise of the human imagination. — Daniel Bell
1130. Telling the future by looking at the past assumes that conditions remain constant. This is like driving a car by looking in the rear view mirror. — Herb Brody
1131. Test Design Automation: This is where the action is on the leading edge of testing. Instead of writing individual tests you create formal models such as finite-state machine models, regular expressions, domain specifications, constraint sets, or formal specifications. The tool then automatically generates a covering set of tests from the model. The focus of testing then shifts from designing individual test cases to creating models that faithfully express the requirements. — Boris Beizer
1132. Test early. Test often. Test enough. We favor an iterative development process: analyze a little, design a little, code a little, test what you can. — John McGregor and David Sykes
1133. Test everything. Hold on to that which is good. — 1 Thessalonians 5:21 (NIV)
1134. Test time can’t be predicted. — Watts Humphrey
1135. Testers can’t do a good job unless they know something about how the software is built. The specifics of the design often dictates what technique to use and what technique is unlikely to be productive at finding bugs. For example, domain testing is not a very effective bug catcher if the programmers have made all domain boundary parameters table-driven. Similarly, syntax testing will rarely find bugs if attempted against a generated parser. Testers should not be so weak-willed that knowledge will corrupt them or make them less effective. The more they know about the software, the more effective their tests will be at exposing bugs. — Boris Beizer
1136. Testers do it over and over. — Barb Newman
1137. Testers don’t like to break things; they like to dispel the illusion that things work. — Cem Kaner, James Bach, and Bret Pettichord
1138. Testers, as programmers, should have organized minds and should keep the user’s needs foremost. It seems natural, therefore, to group tests according the functionality that the users sees. It may seem natural but it can be, and often is, counterproductive; leading to excessive testing effort and therefore, buggier software. — Boris Beizer
1139. Testing a product is a learning process. — Brian Marick
1140. 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
1141. Testing delayed is testing denied. — Yogita Sahoo
1142. Testing is a key ingredient to self-esteem and pride of craftsmanship. A machinist who does not check her work with a micrometer is either a thief or a fool. A programmer who depends on the subsequent actions of others to catch his bugs has no pride, except, perhaps, the fleeting pride of cranking out vast quantities of untested and buggy software in a short time. — Boris Beizer
1143. Testing is a skill. While this may come as a surprise to some people it is a simple fact. — Mark Fewster and Dorothy Graham
1144. 0Testing is like playing pool. There’s real pool and there’s kiddie pool. In kiddie pool you hit the balls, and whatever pocket they fall into you claim as the intended pocket… There’s real testing and there’s kiddie testing. In real testing the outcome is predicted and documented before the test is run. — Boris Beizer
1145. Testing is never finished, only abandoned. — Encyclopedia of Software Engineering
1146. Testing is organized skepticism. — James Bach
1147. Testing is the process of comparing the invisible to the ambiguous, so as to avoid the unthinkable happening to the anonymous. — James Bach
1148. Testing only to end-user perceived requirements is like inspecting a building based on the work done by the interior decorator at the expense of the foundations, girders, and plumbing. — Boris Beizer
1149. Testing proves a programmer’s failure. Debugging is the programmer’s vindication. — Boris Beizer
1150. Testing resources should be allocated proportionately to the size and complexity of the code under test. Consequently, most testing effort is apportioned not to the functionality of the package (the stuff that usually works) but to that other 75% indirect stuff. The first consequence of a functionally meaningful organization to the tests is that 75% or more of the tests are constrained to an essentially arbitrary structure that cuts across too many components. A consequence of that is that you won’t be able to begin testing until almost all of the software is integrated and working. — Boris Beizer
1151. Testing starts at the beginning of the project, not at the end of the coding. We apply tests to assure the quality of the requirements. — Suzanne Robertson
1152. Testing to a 100% statement (also branch and predicate) coverage standard is a mandatory, minimum testing requirement because only by so doing can we assure that all the code has been tested at least once in its life. We must assure that because if we don’t we are guaranteed not to find the bugs that may be in the untested code. Not only is this common sense, but it is a fundamental axiom of testing — if you don’t test it, you won’t find the bugs in it. — Boris Beizer
1153. Testing to make statistically valid inferences about the software’s fitness for use in the field must be based on realistic tests. It is well known that tests designed to find bugs can not be used to make statistically valid inference about the software’s probability of failure in use. To do that we must have user behavioral data (called user profiles) and embed the software package in a simulator and drive that simulator with properly generated random events that statistically matches the user’s behavior. Such testing is realistic (in a statistical sense) but usually entails only 5% to 15% of the kind of tests we run to find bugs. — Boris Beizer
1154. Testing’s main purpose of is to discover bugs. In every test method there is an implicit assumption about the kinds of bugs you’re likely to find. If for example, you have lots of domain bugs, then domain testing is implied. Similarly, a weak front-end for command-driven software implies syntax testing. It would seem, therefore, reasonable to use the history of past bugs as a basis for selecting testing methods. It is, up to a point. — Boris Beizer
1155. Tests must be designed and tested: designed by a process no less rigourous and no less controlled than that used for code. — Boris Beizer
1156. That’s our advantage at Microsoft; we set the standards and we can change them. — Karen Hargrove, Microsoft (quoted in the Feb 1993 Unix Review editorial)
1157. That’s the thing about people who think they hate computers. What they really hate is lousy programmers. — Larry Niven and Jerry Pournelle
1158. That’s what’s cool about working with computers. They don’t argue, they remember everything and they don’t drink all your beer. — Paul Leary
1159. The (Analytical) Engine will always reject a wrong card by continually ringing a loud bell and stopping itself until supplied with the precise intellectual food it demands. — Charles Babbage
1160. The 11th commandment was “Thou Shalt Compute” or “Thou Shalt Not Compute” — I forget which. — Alan Perlis
1161. The act of breaking into a computer system has to have the same social stigma as breaking into a neighbor’s house. — Ken Thompson
1162. 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
1163. The addition of any function not visualized in the original design will inevitably degenerate structure. Repairs also, will tend to cause deviation from structural regularity since, except under conditions of the strictest control, any repair or patch will be made in the simplest and quickest way. No search will be made for a fix that maintains structural integrity. — Belady and Lehman
1164. The adoption of programming languages has very often been somewhat accidental, and the emphasis has very often been on how easy it is to implement the programming language rather than on its actual merits and features. For instance, BASIC would never have surfaced because there was always a language better than BASIC for that purpose. That language was Joss, which predated BASIC and was beautiful. But BASIC happened to be on a GE timesharing system that was done by Dartmouth, and when GE decided to franchise that, it started spreading BASIC around just because it was there, not because it had any intrinsic merits whatsoever. This happens over and over again. The languages of Niklaus Wirth have spread wildly and widely because he has been one of the most conscientious documenters of languages and one of the earlier ones to do algorithmic languages using p-codes (pseudocodes) — the same kinds of things that we use. — Alan Kay
1165. The advance of technology is based on making it fit in so that you don’t really even notice it, so it’s part of everyday life. — Bill Gates
1166. The Analytical Engine weaves Algebraical patterns just as the Jacquard loom weaves flowers and leaves. — Ada Augusta, Countess of Lovelace, on Babbage’s Analytical Engine
1167. The ancient Romans had a tradition: whenever one of their engineers constructed an arch, as the capstone was hoisted into place, the engineer assumed accountability for his work in the most profound way possible: he stood under the arch. — Michael Armstrong
1168. The architect without the stonemason is not designing cathedrals, but castles in the air. — Gerald Weinberg
1169. The art of programming is the art of organizing complexity, of mastering multitude and avoiding its bastard chaos. — Edsger Dijkstra
1170. The average customer of the computing industry has been served so poorly that he expects his system to crash all the time, and we witness a massive worldwide distribution of bug-ridden software for which we should be deeply ashamed. — Edsger Dijkstra
1171. The beauty of mechanical problems is that they are often visible to the naked and untrained eye. If white smoke is rising from a disk drive, that is probably where the problem lies (unless your disk drive has just elected the new Pope). — John Bear
1172. The belief is still widespread in the computing community that C and its derivatives are programming languages — languages intended for people to write programs in. This is a regrettable misunderstanding. — Bertrand Meyer
1173. 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. — Alan Perlis
1174. The best programmers are up to 28 times better than the worst programmers, according to “individual differences” research. Given that their pay is never commensurate, they are the biggest bargains in the software field. — Robert L. Glass
1175. The best programmers write only easy programs. — Michael A. Jackson
1176. The best way to be ready for the future is to invent it. — John Sculley
1177. 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 systems. — Bill Gates
1178. The better I get to know men, the more I find myself loving dogs. — Charles de Gaulle
1179. The big lie of computer security is that security improves by imposing complex passwords on users. In real life, people write down anything they can’t remember. Security is increased by designing for the way humans actually behave. — Jakob Nielsen
1180. The BLINK tag in HTML was a joke, okay? If we thought it would actually be used, we wouldn’t have written it! — Mark Andreessen
1181. The business of believing only what you have a right to believe is called risk management. — Tom de Marco and Timothy Lister
1182. The cell phone has transformed public places into giant phone-a-thons in which callers exist within narcissistic cocoons of private conversations. Like faxes, computer modems and other modern gadgets that have clogged out lives with phony urgency, cell phones represent the 20th Century’s escalation of imaginary need. We didn’t need cell phones until we had them. Clearly, cell phones cause not only a breakdown of courtesy, but the atrophy of basic skills. — Mary Schmich
1183. The cheapest, fastest, and most reliable components of a computer system are those that aren’t there. — Gordon Bell
1184. The city’s central computer told you? R2D2, you know better than to trust a strange computer! — C3PO
1185. The code done yesterday should be as good as you could make it yesterday. The fact that you know more today, and are more capable today, is good news about today, not bad news about yesterday. — Ron Jeffries
1186. The code for a computer system provides the ecology in which code is born, matures, and dies. A well-designed habitat allows for the successful evolution of all the components needed in a computer system. — Richard Pattis
1187. The code says what the program is doing, the remarks (comments) say what it is supposed to be doing. Debugging is reconciling the differences. — Tony Amico
1188. 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
1189. The computer can’t tell you the emotional story. It can give you the exact mathematical design, but what’s missing is the eyebrows. — Frank Zappa
1190. The computer is a moron. — Peter F. Drucker
1191. The computer is a powerful new metaphor for helping us to understand many aspects of the world. But, it enslaves the mind that has no other metaphors and few other resources to call on. The world is many things, and no single framework is large enough to contain them all, neither that of man’s science nor that of his poetry, neither that of calculating reason nor that of pure intuition. — Joseph Weizenbaum
1192. The computer is only a fast idiot, it has no imagination; it cannot originate action. It is, and will remain, only a tool to man. — Sign on the Univac computer exhibited at the 1964 New York World’s Fair
1193. The computer is the first metamedium, and as such it has degrees of freedom for representation and expression never before encountered and as yet barely investigated. — Alan Kay
1194. The computer is the ultimate polluter. Its feces are indistinguishable from the food it produces. — Alan Perlis
1195. The computer programmer is a creator of universes for which he alone is the lawgiver, universes of virtually unlimited complexity can be created in the form of computer programs. Moreover systems so formulated and elaborated act out their programmed scripts. They compliantly obey their laws and vividly exhibit their obedient behavior. No playwright, no stage director, no emperor, however powerful, has ever exercised such absolute authority to arrange a stage or a field of battle and to command such unswervingly dutiful actors or troops. — Joseph Weizenbaum
1196. The computer reminds me of Lon Chaney — it is the machine of a thousand faces. — Alan Perlis
1197. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology — the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. — H. Abelson and G. Sussman
1198. The computer should be doing the hard work. That’s what it’s paid to do, after all. — Larry Wall
1199. The computer world is like an intellectual Wild West, in which you can shoot anyone you wish with your ideas, if you’re willing to risk the consequences. — Paul Graham
1200. The computing field is always in need of new cliches. — Alan Perlis
1201. The Creation of the Universe was made possible by a grant from Texas Instruments. — PBS
1202. The cybernetic exchange between man, computer and algorithm is like a game of musical chairs: The frantic search for balance always leaves one of the three standing ill at ease. — Alan Perlis
1203. The danger from computers is not that they will eventually get as smart as men, but that we will meanwhile agree to meet them halfway. — Bernard Avishai
1204. The danger of standard process is that people will miss chances to take important shortcuts. — Tom DeMarco
1205. The deep paradox uncovered by AI research: the only way to deal efficiently with very complex problems is to move away from pure logic. Most of the time, reaching the right decision requires little reasoning. Expert systems are, thus, not about reasoning: they are about knowing Reasoning takes time, so we try to do it as seldom as possible. Instead we store the results of our reasoning for later reference. — Daniel Crevier
1206. The designer of a new kind of system must participate fully in the implementation. — Donald Knuth
1207. The designer of a new system must not only be the implementer 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
1208. The difference between e-mail and regular mail is that computers handle e-mail, and computers never decide to come to work one day and shoot all the other computers. — Jamais Cascio
1209. The discipline of programming is most like sorcery. Both use precise language to instruct inanimate objects to do our bidding. Small mistakes in programs or spells can lead to completely unforseen behavior: e.g., see the story, “The Sorcerer’s Apprentice.” Neither study is easy: “…her [Galinda’s] early appetite for sorcery had waned once she’d heard what a grind it was to learn spells and, worse, to understand them.” — Richard Pattis
1210. The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms, and invocations of functions. This essence is abstract in that such a conceptual construct is the same under any representation. It is nonetheless highly precise and richly detailed. — Frederick P. Brooks, Jr.
1211. The essence of XML is this: the problem it solves is not hard, and it does not solve the problem well. — Phil Wadler
1212. The evolution of languages: FORTRAN is a non-typed language. C is a weakly typed language. Ada is a strongly typed language. C++ is a strongly hyped language. — Ron Sercely
1213. The false confidence comes from running tens of thousands of tests, most of which won’t find bugs. Like it or not, we tend to be impressed by test quantities rather than quality. Even experienced testers get impressed. You can’t test for 1068 years, so you knock off a few billion tests over the next several months. But the tests you ran represent a statistically insignificant portion of the input space and no confidence, statistical or otherwise, is warranted. — Boris Beizer
1214. The fantastic element that explains the appeal of dungeon-clearing games to many programmers is neither the fire-breathing monsters nor the milkyskinned, semi-clad sirens; it is the experience of carrying out a task from start to finish without user requirements changing. — Thomas L. Holaday
1215. The fastest algorithm can frequently be replaced by one that is almost as fast and much easier to understand. — Douglas Jones
1216. The fathers of the field had been pretty confusing: John von Neumann speculated about computers and the human brain in analogies sufficiently wild to be worthy of a medieval thinker, and Alan Turing thought about criteria to settle the question of whether machines can think, a question of which we now know that it is about as relevant as the question of whether submarines can swim. — Edsger Dijkstra
1217. 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
1218. The first rule of any technology used in a business is that automation applied to an efficient operation will magnify the efficiency. The second is that automation applied to an inefficient operation will magnify the inefficiency. — Bill Gates
1219. The generation of random numbers is too important to be left to chance. — Robert Coveyou
1220. The global village is not created by the motor car or even by the airplane. It’s created by instant electronic information movement. — Marshall Mcluhan
1221. The great strength of computers is that they can reliably manipulate vast amounts of data very quickly. Their great weakness is that they don’t have a clue as to what any of that data actually means. — Stephen Cass
1222. The great thing about a computer notebook is that no matter how much you stuff into it, it doesn’t get bigger or heavier. — Bill Gates
1223. The greatest challenge for the Information Age manager is to create an organization that can share knowledge — Thomas A. Steward
1224. The hardest part of the software task is arriving at a complete and consistent specification, and much of the essence of building a program is in fact the debugging of the specification. — Frederick P. Brooks
1225. The hardest single part of building a software system is deciding precisely what to build. No other part of the conceptual work is as difficult as establishing the detailed technical requirements… No other part of the work so cripples the resulting system if done wrong. No other part is as difficult to rectify later. — Fred Brooks
1226. The hardest thing is to go to sleep at night, when there are so many urgent things needing to be done. A huge gap exists between what we know is possible with today’s machines and what we have so far been able to finish. — Donald Knuth
1227. The honest truth is that having a lot of people staring at the code does not find the really nasty bugs. The really nasty bugs are found by a couple of really smart people who just kill themselves. — Bill Joy
1228. The idea that a single method should govern even two different projects is highly suspect: the differences between projects are much more important than the similarities. — Tom DeMarco
1229. The illusion of progress can be achieved by simply rearranging the terms of description so that new acronyms are created. — Scott Smith
1230. The important point is that 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. Sure, any given feature list can be implemented, given enough coding time. But in addition to coming out late, you will usually wind up with a codebase that is so fragile that new ideas that should be dead-simple wind up taking longer and longer to work into the tangled existing web. The trick is to pick the features that don’t fight each other. — J. Carmack
1231. The inherent complexity of a software system is related to the problem it is trying to solve. The actual complexity is related to the size and structure of the software system as actually built. The difference is a measure of the inability to match the solution to the problem. — Kevlin Henney
1232. The inside of a computer is as dumb as hell but it goes like mad! — Richard Feynman
1233. The Internet is a telephone system that’s gotten uppity. — Clifford Stoll
1234. The Internet is like a giant jellyfish. You can’t step on it. You can’t go around it. You’ve got to get through it. — John Evans
1235. The Internet is so big, so powerful and pointless that for some people it is a complete substitute for life. — Andrew Brown
1236. The Internet is the Viagra of big business. — Jack Welch
1237. The Internet is the world’s largest library. It’s just that all the books are on the floor. — John Allen Paulos
1238. The Internet treats censorship as a malfunction and routes around it. — John Perry Barlow
1239. The job of the average manager requires a shift in focus every few minutes. The job of the average software developer requires that the developer not shift focus more often than every few hours. — Steve C. McConnell
1240. The key role of middle management is reinvention. — Tom DeMarco
1241. The key to understanding recursion is to begin by understanding recursion. The rest is easy. — Koenig and Moo
1242. The last project generated a ton of paper and it was still a disaster, so this project will have to generate two tons. — Lister and DeMarco
1243. The less you know about computers the more you want Microsoft! — 1996 Microsoft ad campaign
1244. The lifeblood of our business is our R&D spend. There’s nothing that flows through a pipe or down a wire or anything else. We have to continuously create new innovation that lets people do something they didn’t think they could do the day before. — Steve Ballmer
1245. The Linux philosophy is “Laugh in the face of danger.” Oops. Wrong One. “Do it yourself.” Yes, that’s it. — Linus Torvalds
1246. The Lord’s Prayer is 66 words, the Gettysburg Address is 286 words, there are 1,322 words in the Declaration of Independence, but US government regulations on the sale of cabbage total 26,911 words. — the National Review
1247. The lowest common denominator in being digital is not your operating system, modem, or model of computer. It’s a tiny piece of plastic, designed decades ago by Bell Labs’ Charles Krumreich, Edwin Hardesty, and company, who thought they were making an inconspicuous plug for a few telephone handsets. Not in their wildest dreams was Registered Jack 11 — a modular connector more commonly know as the RJ-11 — meant to be plugged and unplugged so many times, by so many people, for so many reasons, all over the world. How many RJ-11 clips have you broken? I am astonished that something that probably costs less than a penny separates me from the Net so often. Mind you, this is caused not just by normal wear and tear, but by a design that causes the small plastic clip on the male connector to catch on various articles when you pull the cord out of a briefcase. The half-life of an RJ-11 plug on the road must be less than a month. — Nicholas Negroponte
1248. The Macintosh uses an experimental pointing device called a “mouse.” There is no evidence that people want to use these things. What businessman knows about point sizes on typefaces or the value of variable point sizes ? Who out there in the general marketplace even knows what a “font” is ? The whole concept and attitude towards icons and hieroglyphs is actually counterrevolutionary — it’s a language that is hardly “user friendly.” This type of machine was developed by hardware hackers working out of Xerox’s Palo Alto Research Center. It has yet to find popular success. There seems to be some mysterious user resistance to this type of machine. — John C. Dvorak on why the Macintosh would fail, San Francisco Examiner, 2/19/1984
1249. The main purpose of testing is to expose bugs and only secondarily to demonstrate that the software works (to the extent that such a demonstration is theoretically and/or practically possible). Users have very little understanding of the software’s internals and as a consequence, most of their “tests” are very gentle and grossly repetitive. Users don’t want a test, they want a demo. A good demo is at most 15% of the tests we should run. The user should be invited to exercise (but not test) a prototype so that we know that what we build is really what was wanted. But exercising a prototype is hardly the same as testing software. — Boris Beizer
1250. The majority of programmers aren’t really looking for flexibility. Most languages that enjoy huge success seem to do so not because they’re flexible, but because they do one particular thing extremely well. Like Fortran for fast number-crunching in its day, or Perl for regexps, or C++ for compatibility with C, or C for … well, C’s the exception that proves the rule. — Tim Peters
1251. The memory management on the PowerPC can be used to frighten small children. — Linus Torvalds
1252. The modern view is to code in the cleanest, simplest, most straightforward manner you can. You then measure the software’s actual behavior using statistically valid user profiles, find the hot spots, if any, and then tweak the few lines of code that may be causing problems. Trying to tweak code blindly is an out-of-date habit that should be discarded. — Boris Beizer
1253. The most damaging phrase in the language is, “It’s always been done that way.” — Rear Admiral Grace Hopper
1254. The most important computer is the one that rages in our skulls and ever seeks that satisfactory external emulator. The standardization of real computers would be a disaster — and so it probably won’t happen. — Alan Perlis
1255. The most important factor in software work is not the tools and techniques used by the programmers but rather the quality of the programmers themselves. — Robert L. Glass
1256. The most important single aspect of software development is to be clear about what you are trying to build. — Bjarne Stroustrup
1257. 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. — Donald Knuth
1258. In God we trust; everyone else must write unit tests — Henning Troelsen (via Tracy Monteith)
1259. The difference between craft and engineering is the difference between the questions “does this feature work?” and “how often will this feature work?” If you are systematically asking the second question, then you are practicing engineering. — Corey L
1260. Infinite performance requires infinite investment. — Corey L
1261. The scaffolding is not the building. — Corey L
1262. A Feature Factory of Lean Design For Six Sigma teams would be an unstoppable industrial juggernaut. — Corey L
1263. Means never, ever, have any intrinsic value. We do things because we value the result. — Corey L
1264. Our challenge with the EEH is to strike a balance between what’d we’d like people to adopt, and what they’re likely to adopt. — Corey L
1265. The difference between theory and practice is that in theory they are the same, but in practice they are different. — Christopher Crammond
— — — — — — — — — — — — — — — — — — — — — — — — — — — —