I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

May 07, 2007

Your Favorite Programming Quote

My all-time favorite programming quote has to be this Nathaniel Borenstein bon mot:

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.

It's too perfect. Never have programmers been more neatly summarized.

There are a few great collections of programming quotes on the web which are fun to browse through:

If I find a quote that resonates with me, I research the person behind the quote. Larry Wall is a good example:

I think that the biggest mistake people make is latching onto the first idea that comes to them and trying to do that. It really comes to a thing that my folks taught me about money. Don't buy something unless you've wanted it three times. Similarly, don't throw in a feature when you first think of it. Think if there's a way to generalize it, think if it should be generalized. Sometimes you can generalize things too much. I think like the things in Scheme were generalized too much. There is a level of abstraction beyond which people don't want to go. Take a good look at what you want to do, and try to come up with the long-term lazy way, not the short-term lazy way.

Jason Kottke did most of the work for me by putting together a great Larry Wall reading list:

If that's too much rah-rah Perl action for you, read this article questioning the future of Perl in Bugzilla to get some equal time. But I don't have to dogmatically accept Perl to respect Larry Wall. I doubt Larry would want me to, anyway. It's not about the language; it's about learning to understand programmers as human beings.

You can't know every notable personality in the field of computer science. But reading through some of their quotes is as good a place as any to start. It's one way to find out, at least peripherally, who the giants are in the industry, and what they're most famous for. Browsing through quotes also lets you figure out who your influences are-- or should be. Personally, I'd cite Jef Raskin and Steve McConnell as my two greatest influences.

Who are the greatest influences on your work as a software developer? And more importantly, what's your favorite quote from your influences?

Posted by Jeff Atwood    View blog reactions

 

« Phishing: The Forever Hack Giving Up on Microsoft »

 

Comments

I'd have to say Ditto on Steve McConnell. Reading Code Complete actually inspired a passion for programming I didn't quite have up to that point.

Haacked on May 8, 2007 01:12 AM

Another site with a nice list of quotes is Cluefire (http://www.cluefire.net/)

Jivlain on May 8, 2007 01:15 AM

haha nice quotes Jeff and Jivlain. I am developing ethics tools, so the quote from Nathaniel Borenstein is perfect. :-)

Don’t know if I have any fancy software developers, but I have always admired John Carmack [ID Software] a lot, but maybe that was more because I enjoyed his Quake games.

“Low-level programming is good for the programmer's soul.”
John Carmack

Peter Palludan on May 8, 2007 01:37 AM

[Sonium] someone speak python here?
[lucky] HHHHHSSSSSHSSS
[lucky] SSSSS
[Sonium] the programming language

Rik Hemsley on May 8, 2007 01:53 AM

One of my favorites is Michael Jackson's story about Fred and Jane, entitled "Brilliance". It is a bit too long to quote here, but I recently quoted it on my blog: http://www.code-muse.com/blog/?p=13

It says a lot about programmers as human beings, which is I think very interesting...

Gertjan Zwartjes on May 8, 2007 01:53 AM

http://www-pu.informatik.uni-tuebingen.de/users/klaeren/epigrams.html

Every single one of Alan J. Perlis epigrams is a gem.

Here's one favorite:

Because of its vitality, the computing field is always in desperate need of new cliches: Banality soothes our nerves.

pINGVA on May 8, 2007 02:07 AM

When we don't understand a process, we fall into magical thinking about results.
--Jef Raskin

True greatness is measured by how much freedom you give to others, not by how much you can coerce others to do what you want.
--Larry Wall

Simple things should be simple, complex things should be possible.
-- Alan Kay

Good design adds value faster than it adds cost.
--Thomas C. Gale

It is not about bits, bytes and protocols but profits, losses and margins.
-- Lou Gerstner

EuGeNe on May 8, 2007 02:23 AM

Reading influences you a lot. Read through the "Real Programmers" section of Wikiquote without the prior knowledge that it was meant to be funny, and you get theDailyWTF...

Yuvi on May 8, 2007 02:42 AM

My all-time favorite is:

Simplicity and elegance are unpopular because thy require hard work and discipline to achieve and education to be appreciated. -- Edsger Dijkstra

Cheers!

Michael on May 8, 2007 02:45 AM

I'd create a City class and implement IDisposable. City resources (especially in Baghdad) are unmanaged... ;)

Siegfried on May 8, 2007 02:51 AM

On Perl:

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

boohoo on May 8, 2007 02:53 AM

@Siegfried: LOL :)

steffenj on May 8, 2007 02:57 AM

Are you aiming for quotes that describe programmers to laypeople? Or quotes that inspire programmers to program?

"How To Become a Better Programmer by Not Programming"
- Jeff Atwood
http://www.codinghorror.com/blog/archives/000543.html

"Go To Statement Considered Harmful"
- Edsger W. Dijkstra
The statement itself is controversial. But not only that, the related discourse is insightful. Question language criticism.
http://en.wikipedia.org/wiki/Considered_harmful

piyo on May 8, 2007 03:00 AM

1) "I don't care if it works on your machine! We are not shipping your machine!"
It's the blog tagline of one Ovidiu Platon, Romanian Microsoft Student Partner [link http://studentclub.ro/ovidiupl/default.aspx ]
Unfortunately it disagrees with the "Works on my machine" Certification. Damn shame!

2) "If the user can't find it, the function's not there"
It's my blog tagline :) [link http://www.tudorvlad.ro ] I'll probably change it and keep it for when I grow up.

3) "In theory, theory and practice are the same. In practice, they aren't even close"
It can be applied to many fields, but goes great with programming.

Tudor Vlad on May 8, 2007 03:01 AM

"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

Rafajafar on May 8, 2007 03:47 AM

"Program testing can be a very effective way to show the presence of bugs, but is hopelessly inadequate for showing their absence." - Edsger Dijkstra

Patrik on May 8, 2007 03:58 AM

I have many favourites. Just two of them that fit in the context of this blog:

"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." -- John F. Woods

"We know about as much about software quality problems as they knew about the Black Plague in the 1600s. We've seen the victims' agonies and helped burn the corpses. We don't know what causes it; we don't really know if there is only one disease. We just suffer -- and keep pouring our sewage into our water supply." -- Tom Van Vleck

Michael Suess on May 8, 2007 04:04 AM

I love deadlines. I like the whooshing sound they make as they fly by.
Douglas Adams

Note that, I don't take this as an influence :)

Gokhan on May 8, 2007 04:08 AM

When they first built the University of California at Irvine they just put the buildings in. They did not put any sidewalks, they just planted grass. The next year, they came back and put the sidewalks where the trails were in the grass. Perl is just that kind of language. It is not designed from first principles. Perl is those sidewalks in the grass -Larry Wall

It's from here: http://www.softwarequotes.com/ShowQuotes.asp?ID=618&Name=Wall,_Larry&Type=Q

Disclaimer: I don't know Perl. But that's one of the smartest things
I've ever read. Not strictly related to programming.

Felix Pleşoianu on May 8, 2007 04:10 AM

C programmers never die. They are just cast into void.

TixXio on May 8, 2007 04:26 AM

A boss gave me a book years ago called "Systemantics" (now unfortunately renamed to "The Systems Bible") by John Gall, a pediatrician of all things. It used to be you'd order it from the good doctor's office personally, but now it's on Amazon and available to all. Anyway, this is a tongue-in-cheek-but-still-quite-worthy look at systems theory, including how systems are built, work, and more importantly, how they fail. And we're talking all types of systems, of which computer systems are only one small part. I have passed on this book to more people than I can count.

The book is full of quotable lines, especially around the "axioms, theorems and corollaries" Gall puts forward. Here is a sampling. He uses other people's ideas and quotes (with attribution), but much of the book is original, and given that the first edition was published in 1975, if you think someone else said it first, you may have to prove it predates the Ford presidency:

o Cherish your exceptions.

o New systems generate new problems.

o Systems tend to grow and as they grow they encroach.

o A temporary patch will very likely be permanent.

o People in systems do not do what the system says they are doing.

o The system itself does not do what is says it is doing.

o Systems attract systems people.

o A complex system that works is invariably found to have evolved from a simple system that worked.

o In complex systems, malfunction and even total non-function may not be detectable for long periods, if ever.

o Any large system is going to be operating most of the time in failure mode.

o If it doesn't fail here, it will fail there.

o When a fail-safe system fails, it fails by failing to fail safe.

o In setting up a new system, tread softly. You may be disturbing another system that is actually working.

o Experience isn't hereditary - it ain't even contagious.

o The message sent is not necessarily the message received.

o Every picture tells a story - but not the same story.

o You can't *not* communicate.

o The meaning of a communication is the behavior that results.

o Loose systems last longer and function better.

o Great advances do not come out of systems designed to produce great advances.

And my personal favorites:

o Systems develop goals of their own the instant they come into being.

o Intrasystem goals come first.

Jim on May 8, 2007 04:35 AM

Anything by Donald Knuth.

There's one quote I've read that was attributed to him that went something like:

"Computer scientists study computers in the same way that astronomers study telescopes."

I can't remember the exact phrasing, and google isn't helping me.

David H on May 8, 2007 04:40 AM

On design:

Perfection [in design] is achieved, not when there is nothing more to add, but when there is nothing left to take away.
-- Antoine de Saint-Exupéry

Make everything as simple as possible, but not simpler.
-- Albert Einstein


On user queries/feature requests:

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


On the importance of testing:

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

Adam on May 8, 2007 04:44 AM

"Simple things should be simple, and complex things should be possible." - Alan Kay

Jason on May 8, 2007 04:47 AM

"...In fact, never ever use gets() or sprintf(), period. If you do - we
will send evil dwarfs after you."

--FreeBSD Secure Programming Guidelines

Liam on May 8, 2007 04:51 AM

Of late, Josh Bloch and Bruce Tate. (Yes, I am a Java coder.) Over the long term I cannot think of any one person...they have all mashed together over the course of time.

Excellent quote links. I've been collection quotes for a while. One of my favs:

"This is not to say that design is unnecessary. But after a certain point, design is just speculation." --Philip Chu

Stu Thompson on May 8, 2007 04:56 AM

A couple of my favourites are Kernighan's Law:

"Debugging is twice as hard as writing the program, so if you write the program as cleverly as you can, by definition, you won’t be clever enough to debug it."

and

On friend functions in C++ Scott Meyers wrote:

"Friends, much as in real life, are often more trouble than their worth."

^^The latter I don't believe is true, but I find it to be quite a window into a man who dedicated his book to his dog.

Paul on May 8, 2007 04:57 AM

void foo()
{
auto_ptr Bagdad( new City );
//... some more code ...
}
// and Bagdad destroyed as it goes out of scope

andreyvo on May 8, 2007 05:01 AM

"Brevity is the soul of wit." by William Shakespeare

is a quote I think captures some of the essens of programming...

Edward on May 8, 2007 05:06 AM

I put together a few of my favourites last year (http://dsingleton.co.uk/archive/programming-quotes/2006/09/06/), my favourite being;

"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

David Singleton on May 8, 2007 05:10 AM

"Talk is cheap. Show me the code." - Linus Torvalds

http://lkml.org/lkml/2000/8/25/132

Can Berk on May 8, 2007 05:13 AM

The very first "stupid users" quote ever recorded:

"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 to rightly apprehend the kind of confusion of ideas that could provoke such a question."
-- Charles Babbage (1791-1871)

Jay on May 8, 2007 05:26 AM

"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

"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

"Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter." - Eric Raymond

Adam Goldstein on May 8, 2007 05:43 AM

"There are 10 kinds of people in the world - those who understand binary and those who don't."

Other humor in the GNU Humor Collection. Joke was submitted by Colin Sharpe

Gilson on May 8, 2007 05:56 AM

My personal favorite is from Michael Sinz. "Programming is like sex. One mistake and you have to support it for the rest of your life."

Nick on May 8, 2007 06:30 AM

Gilson, I have my own counter-quote that goes

"There are 10 kinds of people in the world, those who think the 'binary 10 types of people' joke is funny, and those who don't."


My favorite new programming-type quote is Hofstadter's Law:

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

Peter {faa780ce-0f0a-4c28-81d2-3667b71287fd} on May 8, 2007 06:32 AM

pasting code from the internet into production code is like chewing gum found in the street.

Mike Johnson on May 8, 2007 06:41 AM

Edsger Dijkstra made some very quotable statements, including this classic:

The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.

There's a nice collection of Dijkstra quotes here: http://www.brainyquote.com/quotes/authors/e/edsger_dijkstra.html

Ken Dyck on May 8, 2007 06:48 AM

GOTO is a four letter word.
Edsger W. Dijkstra

JeffK on May 8, 2007 06:52 AM

"Woh, All this computer hacking is making me thirsty. Where's my tab?" - Homer Simpson

CR on May 8, 2007 06:57 AM

Kernighan's law, quoted above, is my current mantra - perhaps b/c I have a tendency to out-clever myself.

An old favorite of mine that someone jogged my memory of before:

"Documentation is like sex. When its good, it's oh-so-good. When its bad its better than nothing."

Dave on May 8, 2007 07:08 AM

From http://w-uh.com/articles/030101-w-uh.html

I hold the following to be the "equation of life":

W=UH

Where W=wrongness, U=ugliness, and H=hardness. In English this equation means:

"if something is ugly or hard, it is wrong"

Adam Finlayson on May 8, 2007 07:11 AM

"code is poetry" I think wordpress is using it.

AjiNIMC - Gmail a part of my personal nerve center on May 8, 2007 07:12 AM

"the secret to survivin is knowin what to throw away and knowin what to keep" - the gambler

pertains to gambling, coding, and many other areas...

Joe Larson on May 8, 2007 07:22 AM

I ran across this one shortly after I started in IT. Printed it out and hung it up. Not "programming" per se, but still puts me in stitches.


"The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents."

Nathaniel Borenstein

aaron on May 8, 2007 07:29 AM

[quote] "In theory, theory and practice are the same. In practice, they aren't even close"
It can be applied to many fields, but goes great with programming.[/quote]
Someone's signature - "That's all very good in practice, but how does it work in *theory*?"

Brad on May 8, 2007 07:32 AM

"Programmers have no idea how good (or bad) they are at programming. In fact, we all think we're pretty darn good at it."

and related:

"So now I have no idea how far along the programmer-proficiency curve I am, but I can at least see that I'm nowhere near the high end; I'm not even to the halfway point. My ego still assures me I'm past the 25% mark, but realistically, I doubt it. I'm probably flush with the y-axis."

Both from Steve Yegge

Eric on May 8, 2007 07:46 AM

1) Ooops...
2) What the....
3) But why!?!
4) Hmmm...

...etc :)

OJ on May 8, 2007 08:19 AM

On OO coding run amok:

The JavaBean spec designers threw the getter/setter idiom into the picture because they thought it would be an easy way to quickly make a bean—something you can do while you're learning how to do it right. Unfortunately, nobody did that.
-- Allen Holub/2003

and

I particularly dislike classes with a lot of get and set functions.
-- Bjarne Stroustrup/2003

(The current OO practice ignores what Objects have, capabilities; and manipulates what is irrelevant, data)

For coders, generally, run amok in data:

Proper data management is the key to great architecture. Ignoring this and abstracting data access and data management away just to have a convenient programming model is … problematic. ... Many of the proponents of O/R mapping that I run into (and that is a generalization and I am not trying to offend anyone – just an observation) are folks who don't know SQL and RDBMS technology in any reasonable depth and/or often have no interest in doing so.
-- Clemens Vasters/2006

and

In CS we don't have a lot of formal models to guide us, as in engineering or other science. Much of CS is entirely ad-hoc. However we do have a sound and complete model for data storage (relational model) and hardly anyone uses it. It boggles my mind. Do people not *want* their programs to work predictably?
-- Anonymous Coward/2005

BuggyFunBunny on May 8, 2007 08:25 AM

"Trivia rarely affect efficiency." --The Elements of Programming Style, Kernighan and Plauger

Jimmy on May 8, 2007 08:48 AM

C is for Cookie. That good enough for me.

C. Monster on May 8, 2007 08:53 AM

You can have it:

1) Good
2) Fast
3) Cheap


Pick two.

Grant Johnson on May 8, 2007 08:58 AM

"Programming is an art form that fights back"
Chad Z. Hower (aka Kudzu)

Adi on May 8, 2007 09:08 AM

"Programming is like kicking yourself in the face, sooner or later your nose will bleed" ~ Programming Legend Kyle Woodbury

James on May 8, 2007 09:19 AM

One of my favorites:

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

I keep a collection of my favorite programming quotes at:
http://www.dynamicajax.com/fr/Great_Software_Quotes-200_306.html

You even have some out there Jeff.

Ryan Smith on May 8, 2007 09:23 AM

I watched one of Raymond Chen's talks from a PDC about a year ago. I liked this quote:

"One of the questions I get is, "My app is slow to startup, what are the super secret evil tricks you guys at Microsoft are using to get your apps to startup faster?" And the answer is ... the super evil trick ... is to do less stuff. Because the stuff you don't do ... it turns out I can do nothing really fast!"

Rick Brewster on May 8, 2007 09:24 AM

"portability is for canoes" Jim McCarthy, dynamics of software development

pm on May 8, 2007 09:32 AM

I don't know if I have a favorite quote, many of the ones already posted are funny and original.

Its hard to say who have been my greatest influences as a developer. You would think it would be with some of the writers of the code I have maintained or looked at over the years.

Sadly, after millions of lines of code, very few contain the author or date in which it was written. Its funny that no one actually authors thier code (or very rarely) in some form of comment. Of course you can go to source control, but usually it user ABC1234 or some Windows log in name.

So, my greatest influence has the been the unknown coder. Some of the unknown coder's code has been good, some ugly, and some bad.

Jon Raynor on May 8, 2007 09:41 AM

Your mom is so fat she sat on a binary tree and turned it into a linked list in constant time!

and ...

Saying Java is good because it works on all OSes is like saying anal sex is good because it works on all genders.

Andrei on May 8, 2007 09:44 AM

"The function of good software is to make the complex appear to be simple." - Grady Booch

Dan Esparza on May 8, 2007 09:58 AM

Although I have no real name to credit, a fellow by the nickname of MFen is quoted from #python on freenode.net with this gem: Python's a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck.

Calvin Spealman on May 8, 2007 09:59 AM

When in doubt, use brute force
-- Ken Thompson

And another theory/practice saying:
The difference between theory and practice is that, in theory, there is no difference between theory and practice.
-- Richard Moore (KDE Developer)

Adam on May 8, 2007 10:21 AM

@Tudor Vlad: I always heard it as: "The difference between theory and practice is smaller in theory than in practice."

Adam Blinkinsop on May 8, 2007 10:26 AM

"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

The above quote by Adam Goldstein on May 8, 2007 05:43 AM is exactly how I feel like when I am programming. It really captures my state of mind. Thank you Adam for this quote.

Cosmic Ovungal on May 8, 2007 10:32 AM

"If builders built buildings the way programmers wrote programs, then the next woodpecker that came along would destroy civilization." - Unknown.

"Thomas Dolby -- The man who put Apple software into a Coleco Adam computer and came up with the first computer with the knowledge of good and evil." - Comic strip I saw in college.

Buck on May 8, 2007 10:35 AM

"In C expressions, you can assume that *, /, and % come before + and -. Put parentheses around everything else."

Steve Oualline (C Elements of Style)

mikeb on May 8, 2007 10:42 AM

"If it's not documented, it doesn't exist." -unknown

The thing I've read that most describes why I like to program is the section titled "The Joys of the Craft" from chapter one of "The Mythical Man-Month" by Frederick P. Brooks, Jr.

Some examples:

"As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design."

"The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination."

"The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be."

Kuerwen on May 8, 2007 10:52 AM

@David H

The quote is by Dijkstra, and it's my favorite of all time:


"Computer science is no more about computers than astronomy is about telescopes." - Dijkstra

Ryan Steckler on May 8, 2007 10:57 AM

The most important one for me is not about software only, but still applies: "If it ain't broke, don't fix it".

Rodrigo on May 8, 2007 11:13 AM

Speaking of McConnell, did you happen to catch his letter to the editor in IEEE Computer last month, where he refuted a (stupid) article which actually claimed that software engineering isn't an actual discipline of engineering? Steve totally shut that guy down -- IMO it was a ridiculous article to have been published in Computer in the first place...

David Markle on May 8, 2007 11:24 AM

Paul Graham has some good ones: http://www.paulgraham.com/quo.html

Tom on May 8, 2007 11:37 AM

Every program has at least one faulty line of code.
Every program can be shortened one line.

Conclusion: Every program can be reduced to one single faulty line of code.

dummy on May 8, 2007 11:52 AM

The biggest influence I have had is from blogs like this. Here are some I really like to follow:

1. coding horror
2. blogs.msdn.com (Microsoft developer blogs)
e.g. http://blogs.msdn.com/devdev/
3. http://headrush.typepad.com/
4. http://www.charlespetzold.com/blog/blog.xml
5. Google blogs (check out at googleblog.blogspot.com)
6. And the numerous links you get from these

Some books that have really helped me are:
1. Programming Pearls
2. Code Complete
3. Applied .net framework programming
4. Win32 API

Sesh

Sesh on May 8, 2007 11:55 AM

I have to add this quote too because it's one of my all time favorites:

"No matter how slick the demo is in rehearsal, when you do it in front of a live audience the probability of a flawless presentation is inversely proportional to the number of people watching, raised to the power of the amount of money involved."
-Mark Gibbs

Ryan Smith on May 8, 2007 01:14 PM

"Learning to program has no more to do with designing interactive software than learning to touch type has to do with writing poetry" - Ted Nelson

Pete Kirkham on May 8, 2007 01:22 PM

Programmers, by nature, want to write good programs.
When the completion of a program becomes more important than having a good program, then said program is neither good nor complete.
-James D. Shea
and another:
" Don't study the idea to death with experts and committees. Get on with it and see if it works. "

Ken Iverson

james on May 8, 2007 01:43 PM

without hesitation, the greatest influence on my work as a software developper is Niklaus Wirth. from "Algorithms + Data Structures = Programs" to "A Plea for Lean Software", i just plain love his work and admire his writing skills.

i will simply quote his most famous pun, which also best describes his value through my eyes:
"Whereas Europeans generally pronounce my name the right way ('Ni-klows Wirt'), Americans invariably mangle it into 'Nick-les Worth'. This is to say that Europeans call me by name, but Americans call me by value."

there is much to learn from is work, but you know people never really learn. the best proof comes from the Dartmouth Basic manual, edited in 1964: "typing is no substitute for thinking". how many people around you are following this advice, 40 years later ?

rien on May 8, 2007 01:55 PM

"Don't include a single line in your code which you could not explain to your grandmother in a matter of two minutes."

And of course... assume your grandmother is not Ada Lovelace.

Anonymous on May 8, 2007 01:57 PM

The best thing about a boolean is even if you are wrong, you are only off by a bit.

Thanks, Bryan.

ej on May 8, 2007 02:19 PM

You can have it:

1) Good
2) Fast
3) Cheap


Pick two.

great one!!!!!!!!!!!!!!!

Shalini on May 8, 2007 03:03 PM

I like one Robert Martin told me once. I asked him how you convince the uninitiated that Test-First was the right way to program, and he responded:

"Would you rather Test-First, or Debug-later?"

Eric on May 8, 2007 03:22 PM

C++ Class's, Friend and Private Keywords:

"Only a Friend is allowed to touch my privates."

Joe on May 8, 2007 03:49 PM

From a college teacher I had, while comparing two lines of Fortran -- one which was "human readable" and a second one that was syntactically and functionally correct, shorter, but gibberish:

"The programmer who wrote this should be shot, but then again, many programmers should be shot."

steve on May 8, 2007 03:55 PM

Some people program with rocks. Others use a hammer. I prefer a contractors’-grade pneumatic nail gun with a belt-fed magazine. Have fun "becoming one with the metal", I've got real work to do.

-- Said many times in response to "VB programmers are not real programmers".

Jonathan Allen on May 8, 2007 04:07 PM

"Who are you? How did you get in my house?"
- Donald Knuth

(God bless xkcd - http://xkcd.com/c163.html)

Sean McLemon on May 8, 2007 04:21 PM

"no ethically-trained software engineer..."

What does that about the Microsoft software engineer who wrote HideTaiwan()

Eugene Katz on May 8, 2007 04:48 PM

"documentation" for HideTaiwan() method
http://msdn2.microsoft.com/en-us/library/ms441219.aspx

Eugene Katz on May 8, 2007 04:50 PM

One of my most productive days was throwing away 1,000 lines of code. -- Ken Thompson

Phil O. Despotos on May 8, 2007 05:40 PM

Most of my favorites have already been posted in comments, but I think the greatest source of witty programming quotations is Stan Kelly-Bootle's "Computer Contradictionary" (http://en.wikipedia.org/wiki/The_Computer_Contradictionary).

It's now, sadly, out of print. I've been bugging Stan, off and on, to update it. Stan worked on the EDSAC in the late 1940's and is the world's first CS post-grad; he'll be turning 80 soon, I believe.

Rainer Brockerhoff on May 8, 2007 05:45 PM

From my list of potential siglines:

"The best programmers are not marginally better than merely good
ones. They are an order of magnitude better, measured by whatever
standard: conceptual creativity, speed, ingenuity of design, or
problem-solving ability."
-- Randall E. Stross

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 Revised4 Report on the Algorithmic Language Scheme

"The creation of genuinely new software has far more in
common with developing a new theory of physics than
it does with producing cars or watches on an assembly
line."
-- T. Bollinger

There are two ways of constructing a software design. One way is
to make it so simple that there are obviously no deficiencies.
And the other way is to make it so complicated that there are no
obvious deficiencies.

---C.A.R. Hoare

Premature optimization is the root of all evil in programming.

---C.A.R. Hoare

... with proper design, the features come cheaply. This
approach is arduous, but continues to succeed.

---Dennis Ritchie

Simple things should be simple, complex things should be possible.
-- Alan Kay

Programs must be written for people to read,
and only incidentally for machines to execute.
---Abelson and Sussman

Do not lie to the programmer, for he will get his revenge.
---Chip Salzenberg

It's hard to read through a book on the principles of
magic without glancing at the cover periodically to make
sure it isn't a book on software design.
---Bruce Tognazzini

The lyf so short, the craft so long to lerne.
---Geoffrey Chaucer

Benjamin Franz on May 8, 2007 05:49 PM

"Any configuration 'feature' sufficiently hidden is indistinguishable from a bug"... in reply to a rumored compile parameter to increase the nagios perf string limit higher than 500+ characters.

Upon further investigation, it was determined that editing a C header file was not, arguably, a configuration option... until now.

Eric on May 8, 2007 06:11 PM

"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

Anon on May 8, 2007 08:00 PM

"Web Services are like teenage sex. Everyone's talking about doing it, but most people aren't; and the one's who are doing it aren't doing it very well." - Not sure who said that

Tim on May 8, 2007 08:29 PM

I just remembered this. " What is the object oriented way of getting rich?"

- Inheritance

:)

Sesh on May 8, 2007 09:51 PM

Two RSS feeds of programming quotations:

"Quotations from the World of Programming (softwarequotes.com)"
http://feedchopper.ning.com/index.php/main/feed/showUrl?id=2848668

"Programming Quotations"
http://feedchopper.ning.com/index.php/main/feed/showUrl?id=2833755

Jonathan Aquino on May 8, 2007 10:51 PM

And here's one from today that I think is relevant, if not actually aphorismical:

You'll be better off if you not only keep the actual datas, but also compare the original estimate with the actual result in a project post-mortem. © 2007 Scott Hanselman.

Moz on May 8, 2007 11:18 PM

And here's one from today that I think is relevant, if not actually aphorismical:

You'll be better off if you not only keep the actual datas, but also compare the original estimate with the actual result in a project post-mortem.

OK, the actual link is: http://www.hanselman.com/blog/SoftwareEstimationRememberThatTargetsAreNotEstimates.aspx

Moz on May 8, 2007 11:19 PM

Probably the two biggest influences: Bertrand Meyer and Niklaus Wirth, both of whom I have the big fortune of knowing personally (but then, I studied at ETHZ, so that's no big surprise).

Biggest influence in the "trying to avoid doing the same thing" way: Bjarne Stroustrup (after having attended one of his lectures about C++).

LKM on May 8, 2007 11:53 PM

Being a developer going through the trials and tribulations of end users making change requests a few weeks before launching the system, my current favourite (and apologies for not remembering who said this)
-
It's not a bug...it's a feature!!

Ipkiss on May 9, 2007 12:03 AM

"I'm too stupid to run this program"

Anonymous user
(who does not realize that the real fault lies in the developer)

Lahur on May 9, 2007 12:14 AM

My favourite, the one I have on a sticker on my monitor is: "Assumption is the mother of all f***ups". Source unknown.

Johan on May 9, 2007 12:36 AM

my favorite is
The three chief virtues of a programmer are: Laziness, Impatience and Hubris.
by Larry Wall

as it matches with my moto when programming "be lazy"
lazy as in http://www.paulgraham.com/procrastination.html by paul graham

thecancerus on May 9, 2007 01:05 AM

Scott Meyers and his book "Effective C++" both rule!

marc on May 9, 2007 06:55 AM

I'd definitely say Steve McConnell's 'Code Complete' was a major influence; also Steve Maguire's 'Writing Solid Code' and Jon Bentley's 'Programming Pearls' books.

My favourite saying (tongue firmly in cheek) is:

"It was on fire when I found it"

Mitch Wheat on May 9, 2007 07:39 AM

"If you have a problem that requires a regular expression to solve it... you now have two problems".

Someone at work told me this, A quick google search reveals this quote is probably the origin:

'Some people, when confronted with a problem, think "I know, I’ll use regular expressions.” Now they have two problems'.
—Jamie Zawinski, in comp.lang.emacs

Justin Chase on May 9, 2007 08:44 AM

Boy oh boy, reading these just re-affirms: programmers sure are boring!

steve on May 9, 2007 09:42 AM

Great, great idea for a post.

You obliquely referenced Programmers at Work. I just finished reading it, so here is my list of the best quotes from it:

http://engtech.wordpress.com/2007/05/09/favorite-quotations-from-programmers-at-work-by-susan-lammers/

engtech on May 9, 2007 10:45 AM

"The way it was implemented here is not the way it was implemented at places it works"
-- coworker in the hallway.

Adrian on May 9, 2007 11:13 AM

My favorite quote as related to programming or development in general is by Moishe Lettvin--conveniently, taken from the same blog entry which led me to yours here some months ago.

"If you have profound knowledge of the cloud of problems around programming, of the higher level problems you're trying to solve, you'll do a better job programming. This is obvious, and explains why the best programs are always the ones programmers write for themselves, eg. emacs, Google, VisicIlc, etc. And it conversely explains why so many programs are so uninspired, too: if you'll never use the feature you're writing, you're not going to imbue it with brilliance, because the brilliance will never occur to you."

Ryan Hoerr on May 9, 2007 11:47 AM

All my favourites seem to have appeared including the "other 90% of the time" and the "I'll use regular expressions" quotes.

Instead I'll try to paraphrase a line from Operating Systems Concepts by Peterson and Silberschatz (sp?). It discusses multiprogramming in computers. I hope I don't b@$+@^dize it too badly.

"Multiprogramming is like a lawyer. While the lawyer is waiting for papers to be drawn up for one case, he can be doing research for another or preparing for a court date. In this manner, a lawyer need never be idle. Idle lawyers tend to become politicians, so there is a certain social value to keeping them busy".

Tim Dudra on May 9, 2007 12:09 PM

It works on my computer!

John A. Davis on May 9, 2007 12:19 PM

"It's not that I'm surrounded by incompetence that bothers me, it's that I fit in so well."

Heurung on May 9, 2007 12:57 PM

I think the method name DestroyCity is confusing,
are we destroying the instance of the city object
or are we attacking a place represented by the city object?

Terminology and percieved or dual meanings can change a clear and concise piece of code (in one persons mind) into a confusing and uncertain piece of code (in another persons mind)

Martin on May 9, 2007 01:54 PM

"Software Engineering: A study akin to numerology and astrology, but lacking the precision of the former and the success of the latter."

from: http://www.softpanorama.org/SE/index.shtml

As the author points out, (Slightly Skeptical) Software Engineering Links. I would have never believed it coming from a more mature engineering discipline (i.e. electronics) but having been in the software dev world for 17 years (and still programming)… it is only too real.

Mitch on May 9, 2007 02:34 PM

i found this quote somewhere:

"Some programmers just need to take a deep breath and write code that is a delicious salami sandwich, and not an extravagantly prepared four course meal that tastes like shit."

-opeth

fez on May 10, 2007 04:39 AM

who could forget the Klingon quotes??

"A TRUE Klingon Warrior does not comment his code!"
http://www-users.cs.york.ac.uk/~susan/joke/klingon.htm

this is also a GREAT list (not many sourced):
http://www.multicians.org/thvv/proverbs.html
"Wexelblat's Scheduling Algorithm:
Choose two:
* Good
* Fast
* Cheap
"
"Everybody Knows:

* If you don't understand it, you can't program it.
* If you didn't measure it, you didn't do it.
"

Morgan on May 10, 2007 08:59 AM

"Giving up on Microsoft" - Jeff Atwood. ;)

Scott on May 10, 2007 11:44 AM

"If you don't want to be replaced by a computer, don't act like one."
- Arno Penzias, Ideas & Information

Michael Hollinger on May 10, 2007 11:45 AM

My site with general computer quotes. Although few are related to programming, there are a few gems in there.

http://www.coolquotescollection.com/Computer1.aspx

Simon on May 10, 2007 11:54 AM


"I have a rock garden. Last week three of them died."

- Richard Diran

Mike on May 10, 2007 02:53 PM

Nathan Myhrvold

"Software is a gas - it expands to fit its container"

Ramon Bosch on May 10, 2007 03:36 PM

"In order to understand recursion, one must first understand recursion."

I don't know who said it, but I think it's awesome :)

I'd say the people I've always looked up to are the likes of Carmack, McConnell, Abrash, Knuth and Fowler.

Cheers!

OJ on May 10, 2007 09:40 PM

>"In order to understand recursion, one must first understand recursion."

Not my favourite, but in the same vein as the above quote:

"He works at the department of redundancy department"

Jeroen on May 11, 2007 03:53 AM

The lary wall quote is interesting.

I've been learning Ruby lately and am just completely miserable with it.

It's kind of like a language for people who just want to play. It has all sorts of neat tricks--alternate ways to do things that look cute and are fun but obfuscate the hell out of the code.

Most are little changes for absolutely no reason...

Putting the if at the end, for no reason except that it might have suited some developers twisted sense of ascetics (x = 5 if x > 5)

Replacing a string concatination with substution for the same reason. Sometimes it saves 1 character of typing, sometimes it costs 1, but since it's different, it's yet another alternate way to do something:

a="bill was " + location

can be replaced with

a="bill was $(location)"

ooh, big advantage. Larry was right--Keep the language features at a minimum, keep patterns. ALWAYS enforce use of parentheses for method calls, just follow the same pattern every time.

Being able to override operators makes me feel kind of ill, Not that it's not "Cute" but "Cute" doesn't justify hiding a method call in a place that doesn't look like a method call. It really doesn't hurt anyone if you just use a method called "lookup()" or something instead of overriding []

The thing that really tore it is the lack of anything equivalent to "Option Explicit". I know lots of people that wouldn't hire anyone who didn't understand that "Option Explicit" HAS to be the first line of every VB file--and Ruby has no way to do this.

Everything in this language defies larry wall's quote, and although I've never been a huge perl fan either, all of a sudden I'm feeling a lot more respect for the man.

Saving a few keystrokes isn't generally a good thing unless you only have two fingers to type with.

BIll on May 11, 2007 08:03 AM

'In pursuit of the dubious goal of producing idiot-proof, zero-learning-curve programs, even programs intended for heavy-duty use such as editors--arguably the most important piece of software you'll use--have been turned into children's toys, effectively expert-proofed' -- Tom Christiansen

Vim 7 on May 12, 2007 12:23 PM

"A developer writes an average of 6 lines of code per day for the entire project; think what you can do with 6 lines of Assembler and with 6 lines of a high level language"; anonymous (actually just don't remember). Changed my life. :)

paperino on May 12, 2007 06:25 PM

I also like Steve McConnell. I like his idea of designing in greater and greater detail until you feel that implementing the design would be easier than designing in more detail. I also hold dear the belief that good software design/architecture/development is about managing complexity.

This idea relates to a fantastic insight from Juval Lowy in his WCF book.

He points out two very important things.

Quote:
"...If you examine the brief history of software engineering just outlined, you notice a pattern: every new methodology and technology generation incorporates the benefits of its preceding technology and improves on the deficiencies of its preceding technology. However, every new generation also introduces new challenges. I say that MODERN SOFTWARE ENGINEERING IS THE ONGOING REFINEMENT OF THE EVER-INCREASING DEGREES OF DECOUPLING."

...

Quote:
"...Good coupling is business-level coupling...Bad coupling is anything to do with writing plumbing."

This is important when you look at the disadvantages of too much coupling.

Juval also points out in his book the relationship between service(or component) sizes and the number of services(or components) in a system.

The integration cost is proportional to x squared and the cost per service(or component) is proportional to 1 on z squared, where x is the number of services and z is the size of each service.

So for some values of x and z the product x*z will be a minimum and this is the minimal cost.

Jonathan Parker on May 16, 2007 05:27 AM

Quidquid latine dictum sit, altum sonatur.

Or 'Whatever is said in Latin sounds profound.'

Eric D. Burdo on May 17, 2007 07:40 AM

"I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."

Alan Kay

Edwin on May 18, 2007 08:54 AM

see google's programmers search engine http://devshots.com

Devshots returns Google search results, but emphasize on programming related sites and resources. So the search result will be smart and accurate.

abi on July 2, 2007 07:40 AM

My best quote was spoken to me by a veteran mainframe programmer when I was young(er) and while discussing with him several options that would be included in a new feature we were about to begin to implement together.
He said: "That can be an enhancement"

Very wise man, I've stated it to customers numerous times since.

carleen edgar on July 5, 2007 07:57 AM







(hear it spoken)


(no HTML)




Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.