Quotes On Program Development

Quotes that are directly relevant to program design and development.

(They don't have to be statements about programming or computers.)
BertrandMeyer, 1989
"You can have quality software, or you can have pointer arithmetic; but you cannot have both at the same time."

"An entity is an object with no class that doesn't know how to behave."

DreadPirateRoberts (aka RonJeffries posted here by JeffGrigg ;-)
"Get used to disappointment."

ascribed to Edsger W. Dijkstra (EwDijkstra)
"The effective programmer is keenly aware of the limited size of his own head."

"VisualBasic is so easy to use - all you need is a spacebar and a forehead."

"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: As potential programmers they are mentally mutilated beyond hope of regeneration."

Richard BuckminsterFuller
"When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong."

FreemanDyson (b. 1923), British-born U.S. physicist, author. Disturbing the Universe, pt. 1, ch. 10 (1979)
"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."

Tom West, Eagle Project, Data General (quoted by Tracy Kidder in TheSoulOfaNewMachine)
"What's the earliest date by which you can't prove you won't be finished?"

"Just because a thing can be done, doesn't mean that it should be done."
(wasn't that the President of the Federation in Star Trek VI: The Undiscovered Country?) Yes, but he was quoting. Or, more accurately, the script writer was.

Richard Nixon, from Watergate transcripts
"We could do that, but it would be wrong."

John D Williams, Sept '96 IEEE Computer
"If you cling to a waterfall view of the world while your technical staff adopts an iterative, incremental method, you won't understand the status of your project or ... predict where it's going."
  • (I hit this one head-on in 1998: I kept delivering incremental releases, and the project manager was completely confused over when it would be "done". -- JeffGrigg)

"There is no silver bullet."

"There comes a time in the life of every project where the right thing to do is shoot the engineers and ship the fucker."

SteveMcConnell (in Rapid Development)
"A typical software project can present more opportunities to learn from mistakes than some people get in a lifetime."

LarryWall and RandalSchwartz, ProgrammingPerl
"We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris." (See LazinessImpatienceHubris.)

LarryWall, in article <1995May29.062427.3640@netlabs.com> (And another one...)
"It would be difficult to construe this as a feature."

DonKnuth, (in Structured Programming with Go To Statements)
"At the IFIP congress in 1971 I had the pleasure of meeting Dr. Eiichi Goto of Japan, who cheerfully complained that he was always being eliminated."

"When you want to change the behavior of an object, send it a message. Ask it to do things differently." (...in a quote thought up just for HierarchicalVisitorDiscussion.)

MikeWilliams (original ErLang? developer)
"If you don't run experiments before you start designing a new system, your entire system will be an experiment!"

"If you don't know what you're doing, don't do it on a large scale." [From the book Principles of Software Engineering Management. The book is full of excellent quotes, but then it is an excellent book.]

[With ExtremeProgramming Flavor...]

William Morris
"Have nothing in your houses that you do not know to be useful or believe to be beautiful."
Everything that's ever been said about XP... refactored... - jr

AntoineDeSaintExupery 1900-1944

"It is vain to do with more that which can be done with less." (Literally, "Entia non sunt multiplicanda praeter necessitatem" -- "entities are not to be multiplied beyond necessity".)

William Strunk Jr., TheElementsOfStyle
"A drawing should have no unnecessary lines and a machine no unnecessary parts."

ArthurNorman (http://www.arthurnorman.org/)
The best way to implement hard code is never to know you're implementing it.

AlbertEinstein (or E. F. Schumacher?)
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius - and a lot of courage - to move in the opposite direction."

Muriel Rukeyser
"The universe is made of stories, not atoms."

"The world consists of facts, not things."

Harry Crews
"Nothing is allowed to die in a society of storytelling people."

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

"The rule is, 'Do the simplest thing that could possibly work', not the most stupid".

RonJeffries (as seen on comp.software-eng)
"If you're working sixty hour weeks, you're too tired to be doing good software."

SteveFreeman (on LifesJustTooShort)
"Life's too short to write code that nobody wants."

RonJeffries (on comp.software-eng)
"I have it anecdotally that the most commonly used methodology in the world is chaos".

RonJeffries (on comp.software-eng)
"Personally, I hope that program proving does become feasible in my lifetime, because I hope to live for a long long time. Wish someone could make me that promise."

"Change happens one person at a time."

"A week of coding can spare an hour of thought."

"An hour of coding can spare a week of thought."

"Given ten days for a project, a good engineer spends nine days figuring out how to finish it in one day." (this isn't much like ExtremeProgramming)

Whether you think it's Extreme depends rather on how you think the "figuring out" works, doesn't it? If you "figure things out", as I tend to, by starting with a dead simple model and refactoring it iteratively in the direction of usefulness, wouldn't that qualify? But maybe that's not in the spirit of the quotation...

The sooner you start coding, the longer it will take you to finish.

The sooner you fall behind schedule, the more time you have to catch up.

Terrence John Parr's motto
"Why program by hand in five days what you can spend five years of your life automating?"

"a week in the lab can save you an hour in the library." -- Greg Hlatky

"Bad design should make you physically ill."

"Clutter and confusion are failures of design, not attributes of information. There's no such thing as information overload."

DonaldNorman (TheDesignOfEverydayThings)
"Humans do not always err. But they do when the things they use are badly conceived and designed."

RonJeffries (private communication)
"Humans do not always err. But it's the way to bet." This appears to be based on 'The race is not always to the swift, nor the battle to the strong, but that's the way to bet.' (Damon Runyon)

"NCSA's httpd is the leader in problems because it was developed under heavy pressure by somebody who didn't expect it to get as big as it did, and because that somebody made some really poor design decisions."

"The woes of Software Engineering are not due to lack of tools, nor of proper management, but largely due to lack of sufficient technical competence. A good designer needs to rely on experience, on precise, logical thinking, on pedantic exactness. No magic will do."

"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies." (See TwoWaysToDesign.)

"To design something really well, you have to get it. You have to really grok what it's all about. It takes a passionate commitment to really thoroughly understand something, chew it up, not just quickly swallow it. Most people don't take the time to do that."

Posted by AdamRifkin 2/25/98 by way of http://www.cs.caltech.edu/~adam/msglist.html
Some quotes of levity and knowledge RobertDiFalco likes...

Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius - and a lot of courage - to move in the opposite direction.

At any street corner, the feeling of absurdity can strike any man in the face.

If you have three pet dogs, give them names. If you have 10,000 head of cattle, don't bother. Nowadays, the idea of giving a name to every file on your computer is ridiculous.

To philosophize is only another way of being afraid and leads hardly anywhere but to cowardly make-believe.

I piss on you all from a considerable height.

Achievement is the death of endeavor and the birth of disgust.


The First Rule of Program Optimization
Don't do it.

The Second Rule of Program Optimization (for experts only)
Don't do it yet.

See RulesOfOptimization.

"Until we have a working piece of code, we don't always know where it spends its time. And until we know that, talk of changing it 'for efficiency' is foolish."

-- BrianKernighan and PjPlauger, from a paper in ClassicsInSoftwareEngineering.

BurtLeavenworth? used to have a very succinct version of this: More sins are committed by premature optimization than all the rest of programming motives put together. (JerryArchibald)

DonKnuth also said that "PrematureOptimization is the root of all evil."

also "belated pessimization is the leaf of no good." from len lattanzi

"I can ALWAYS build faster code if it doesn't have to work."

Somewhere in QualitySoftwareManagement, JerryWeinberg asserts this rule:
"If a system doesn't have to actually work it can meet any other criteria."

One of Tom's quotes above sounded familiar, and triggered some digging. GeraldWeinberg uses a similar line in ThePsychologyOfComputerProgramming (p. 18). The setup is that a sticky problem has just led to a project being canceled. Our hero has devised a solution that may save the day, and is presenting it to the members of the project team. We enter as they react:

"And how long does your program take?" he asked - emphasizing the possessive.

"That varies with the input," was the reply, "but on average, about ten seconds per card."

"Aha," was the triumphant reply. "But my program takes only one second per card."

The members of the audience - who had, after all, all contributed to the one-second version - seemed relieved. But our hero, who was rather young and naive, was not put down by this remark. Instead, he calmly observed, "But your program doesn't work. If the program doesn't have to work, I can write one that takes one millisecond per card - and that's faster than our card reader."

-- DaveSmith
"By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race. Before the introduction of the Arabic notation, multiplication was difficult, and the division even of integers called into play the highest mathematical faculties. Probably nothing in the modern world would have more astonished a Greek mathematician than to learn that...a large proportion of the population of Western Europe could perform the operation of division for the largest numbers. This fact would have seemed to him a sheer impossibility... Our modern power of easy reckoning with decimal fractions is the almost miraculous result of the gradual discovery of a perfect notation."

- AlfredNorthWhitehead

Contributed by -- TimVoght
"This is the TENTH International Eiffel User Conference? And still nobody uses it? Maybe there's something wrong..." -- JohnNagle?, 1992

"As Mr. Nagle so competently points out, almost no one uses Eiffel; in fact until recently there were only 9 users. But now a 10th person just started, so we are holding a conference, appropriately titled the TENTH EIFFEL USER conference, to celebrate." -- BertrandMeyer, 1992

-- both quotes seen on news:comp.lang.eiffel
'What'cha doin', Louie?'
'I'm sawin' these planks, boss... got a *bunch* of 'em to do!'
'Ummmmm, yeah... Louie, I can't tell for sure from this angle but it looks like your saw's kinda dull.'
'Eyes of a hawk, boss... I seen better edges on butter-knives!'
'Ummmm, yeah... so tell me, Louie, if you don't mind my askin'... why don'cha sharpen the saw, then?'
'Oh, I can't do that *now*, boss... I'm too busy cuttin' these planks!'

(old carpenter's joke)
Likewise, "we're too busy mopping the floor to shut the faucet."
I couldn't find the right Java page but...

Quote of the Day:

"Java's primary roots are out of the C++ world. From that standpoint, Java is a big step up. It's a cleaner, object-oriented language. And the benefits of a Virtual Machine on every platform are obvious.

"But I came to Java from a different world of programming, the Smalltalk world. For people who program in Smalltalk, Java is a 30-year step back. Smalltalk is what made object-oriented programming real. It had a mature class library and culture from the day it was released, whereas the C++ world just kind of happened. Its class library still isn't stable. The result for me is that Java is an absolute requirement in today's software world, but sometimes it hurts me to use it."

-- Steven T. Abell, formerly Java Technology evangelist at Netscape

Read the rest in Chicago Tribune Silicon Prairie -- sg
"We trained hard, but it seemed that every time we were beginning to form up into teams, we would be reorganized. I was to learn later in life that we tend to meet any new situation by reorganizing; and a wonderful method it can be for creating the illusion of progress while producing confusion, inefficiency and demoralization." -- PetroniusArbiter, 210 B.C.
"Claiming Java is easier than C++ is like saying that K2 is shorter than Everest." -- Larry O'Brien (editor, Software Development)

K2 is quite a bit nastier than Everest, as I read the literature. -- JerryArchibald

fitting ;)
"Any verbose and tedious solution is error-prone because programmers get bored" -- BjarneStroustrup

This from the man who came up with C++ ?? Call me a cynic, but ...

I will only call you a cynic if you are still using it, now that you know. Or if you still don't use it...

IT - do you mean the words or the language? Still using the quote or C++?
Students usually demand to be taught the language that they are most likely to use in the world outside (FORTRAN or C). This is a mistake. A well taught student (viz. one who has been taught a clean language) can easily pick up the languages of the world, and he [or she] will be in a far better position to recognize their bad features as he [or she] encounters them.

-- C. H. Lindsey, History of Algol 68. ACM SIGPLAN Notices, 28(3):126, March 1993.

Students should be taught a clean language, one which will allow them to recognize the good and bad features of languages used in the world outside. Schools in their invention of curricula should be in a position to know what that language is, and require it. -- anon

See BlubParadox
"Necessity is the mother of invention. Laziness is the mother of necessity." -- Anon PerlHacker?

So it follows: the grandmother of invention is laziness -- DonaldNoyes
from above:
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: As potential programmers they are mentally mutilated beyond hope of regeneration."
I'm a counterexample to that one. When I first encountered a more structured language, I thought "Cool! You can define your own commands!" I tend to find with any language I compile my thoughts into alleged source code. Yes, I am, in my spare time, trying to write a PL that reflects how I think...
from above: DavidGelernter: If you have three pet dogs, give them names. If you have 10,000 head of cattle, don't bother. Nowadays, the idea of giving a name to every file on your computer is ridiculous.

Nonsense. I care about the differences inside my files. I don't care about the differences inside my 10,000 cattle. -- PeteHardie

I actually gave this one a little thought.
  1. It would become very tedious very fast to manually name 10,000 things.
  2. It might not matter a lot, but each head _is_ a little different. At least you would want to know how old each (or each lot) is. As for files, it's easy to see how their distinction is crucial.
  3. You probably don't really care about the specific name given to your file, or care to refer to a cow by a number or another id.
  4. You want to recognize the individuality of each thing, at least for some aspects.
  5. You don't care for the actual names/ids given to each thing.
  6. The quotation makes a lot of sense in light of all this.
-- RobinMillette

For some file types (particularly pictures, video, drawings, and correspondence), thumbnail icons, summaries, keyword lists, and creation or last-modified-time are a lot more useful than names.

Summaries and keyword lists are names - or at least take as much time as names; timestamps are provided by the OS (hopefully); thumbnails are hard to search by (as of 2008). Quite often, those who claims names are obsolete are coming from a Windows background, where each file type has a "default" or "preferred" application associated with it, and things like tax returns would be associated with that program (Quicken, TurboTax?, etc), and the program would only show related files. In a more open system, with options for many programs to use data, you need a way to get the specific file to an arbitrary program, hence the names --petehardie

If it is not useful or necessary, free yourself from imagining that you need to make it.

If it is useful and necessary, free yourself from imagining that you need to enhance it by adding what is not an integral part of its usefulness or necessity.

And finally:
If it is both useful and necessary and you can recognize and eliminate what is not essential, then go ahead and make it as beautifully as you can.

-- ShakerQuote
"People seem to misinterpret complexity as sophistication." -- NiklausWirth
"God is real, unless declared as an Integer." -- Unknown
"Conceptual integrity is the most important consideration in system design."

And, I would add, in software maintenance. -- BobBockholt

"It is a very humbling experience to make a multi-million-dollar mistake, but it is also very memorable."

"Simplicity carried to an extreme becomes elegance." -- Jon Franklin
From LongFunctionsDiscussion
Long Functions are the damp logs under which the newt of complexity often lives.

"If builders built buildings the way programmers wrote programs, the first woodpecker to come along would destroy civilization"
Coffee is a device for extracting code from programmers
AmrAli? "Today I fixed a bug, to be a better bug"
Contributed by AndyWally

"For every complex problem, there is a solution that is simple, neat, and wrong." -- H.L. Mencken

"I do not feel obliged to believe that the same God who endowed us with sense, reason and intellect has intended for us to forgo their use." -- Galileo

"Eppur si muove" (And yet, it [the Earth] moves) -- Galileo, at his trial for heresy

"As soon as we started programming, we found out 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

"Any sufficiently advanced technology is indistinguishable from a rigged demo." -- Attributed to various sources
See: GettingTheWordsRight


View edit of June 16, 2008 or FindPage with title or text search