Skip to content

Instantly share code, notes, and snippets.

@ryanhanwu
Forked from Potherca/programming-quotes.md
Created April 5, 2020 15:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ryanhanwu/3a94dda9240379cbdb4b3c21a560362e to your computer and use it in GitHub Desktop.
Save ryanhanwu/3a94dda9240379cbdb4b3c21a560362e to your computer and use it in GitHub Desktop.
📝️ This document is part of several gists with Programming Quotes:
5ffd57393a85553ab55b
5cd28e2a812e5c65c9f7320e0726da18
b6a6676a84b51c8200d0673a5b4a87c5

Programming Quotes

The quotes on this page come from this deleted question on Stackoverflow: https://stackoverflow.com/questions/58640/great-programming-quotes

The Question

There are a lot of great programming quotes out there. Which do you like?

Today (Sept 12, 2008) I heard a new one from a friend, Lars-Gunnar, he said " Gud [1] finns i Emacs" (in Swedish). This basically means " God [2] is in Emacs". Still laughing about it here :) What he meant was that a function " gud is grand-unified-debugger [3]" is in Emacs.

A great one I think all programmers should know is The Three Great Virtues of a Programmer [4].

[1] http://sv.wikipedia.org/wiki/Gud [2] http://en.wikipedia.org/wiki/God [3] http://www.emacswiki.org/cgi-bin/wiki/GrandUnifiedDebugger [4] http://c2.com/cgi/wiki?LazinessImpatienceHubris

The Answers


Walking on water and developing software from a specification are easy if both are frozen.

-- Edward V Berard


Hofstadter's Law:

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


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

-- Rick Osborne


Brian Kernighan:

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.


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


Java is to JavaScript what Car is to Carpet.

Chris Heilmann


If you want to set off and go develop some grand new thing, you don't need millions of dollars of capitalization. You need enough pizza and Diet Coke to stick in your refrigerator, a cheap PC to work on and the dedication to go through with it.

John Carmack

The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.

John Carmack on software patents


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

-- Jamie Zawinski


Bjarne Stroustrup [1] has many great quotes attributed to him, including:

There are only two kinds of languages: the ones people complain about and the ones nobody uses

and who can forget his now classic:

I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone

Source: Bjarne Stroustrup FAQ [2]

[1] http://en.wikipedia.org/wiki/Stroustrup [2] http://www.research.att.com/~bs/bs\_faq.html


Linux is only free if your time has no value

Jamie Zawinski


It works on my machine.

Anonymous programmer


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


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


I always loved this one:

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


If debugging is the process of removing software bugs, then programming must be the process of putting them in.

--Edsger Dijkstra


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


Maybe I work too much on legacy code, but this always springs to mind:

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.

Antoine de Saint Exupéry


Computer Science is no more about computers than astronomy is about telescopes.

-- E. W. Dijkstra


Anonymous Poem (i.e. I don't know the author)

I Hate Programming. I Hate Programming. I Hate Programming. It works! I Love Programming.


Perl - The only language that looks the same before and after RSA encryption.

Keith Bostic


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

Alan Kay


Dan Kaminsky:

Debugging is anticipated with distaste, performed with reluctance, and bragged about forever.

Seymour Cray on virtual memory:

Memory is like an orgasm. It's a lot better if you don't have to fake it.

Isaac Asimov, not really programming, but definitely problem-solving:

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'

Mitch Ratcliffe

A computer lets you make more mistakes faster than any other invention in human history, with the possible exceptions of handguns and tequila

Cory Doctorow

Engineers are all basically high-functioning autistics who have no idea how normal people do stuff.

And some random unattributed others;

  • Any sufficiently advanced magic is indistinguishable from a rigged demonstration.
  • Vi is a subset of evil
  • The difference between theory and practice is smaller in theory than in practice.
  • There are only 3 numbers of interest to a computer scientist: 1, 0 and infinity

Debuggers don't remove bugs. They only show them in slow motion.

Don't know by whom but I think it's funny.


Never trust a programmer in a suit.


In theory, theory and practice are the same. In practice, they're not.


"Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves."

-- Alan Kay

"The trouble with programmers is that you can never tell what a programmer is doing until it's too late."

-- Seymour Cray

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

-- Bill Gates

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

-- E. W. Dijkstra


With regard to adding more programmers to get a project done faster...

Nine people can't make a baby in a month. - Fred Brooks


My personal favourite:

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. The first method is far more difficult.

C.A.R. Hoare.

Or you could check out Wikiquotes [1] for some other good ones.

[1] http://en.wikiquote.org/wiki/Programming


"Weeks of coding can save you hours of planning."

-- Unfortunately, I couldn't find out the author.


Random limerick I found on a website awhile ago.

A programmer started to cuss Because getting to sleep was a fuss As he lay there in bed Looping 'round in his head was: while(!asleep()) sheep++;


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

Donald Knuth [1]

[1] http://en.wikipedia.org/wiki/Donald\_Knuth#Knuth.E2.80.99s\_humor


C++: an octopus made by nailing extra legs onto a dog.

-- Steve Taylor


If Java had true garbage collection, most programs would delete themselves upon execution.

-- Robert Sewell


"My definition of an expert in any field is a person who knows enough about what's really going on to be scared."

P. J. Plauger, Computer Language, March 1983

"An expert is a man who has made all the mistakes that can be made in a very narrow field"

Niels Bohr


Heard from a Teacher -

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why.


You can stand on the shoulders of giants OR a big enough pile of dwarfs, works either way.


XML is like violence - if it's not working for you, you're not using enough of it.

Potential Source [1] as a comment to 'The Future of XML' [2]

[1] http://developers.slashdot.org/comments.pl?sid=446030&no\_d2=1&cid=22342474 [2] http://developers.slashdot.org/article.pl?sid=08/02/07/2141221


Whereas Europeans generally pronounce my name the right way ('Nick-louse Veert'), Americans invariably mangle it into 'Nickel's Worth.' This is to say that Europeans call me by name, but Americans call me by value.

-- Niklaus Wirth


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

-Martin Fowler


The classic:

"There are 10 types of people in the world, those who can read binary, and those who can't."


From SICP [1]

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

[1] http://mitpress.mit.edu/sicp/


Every language has an optimization operator. In C++ that operator is ‘//’

Overheard [1] at the O’Reilly’s Velocity Conference, June 2008

[1] http://blogs.msdn.com/ie/archive/2008/08/26/ie8-performance.aspx


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

An idiot with a computer is a faster, better idiot

-- Rich Julius

Brevity is the soul of wit

-- Shakespeare


Programmer to Boss/Client/Manager:

Based on time, resources, budget, requirements, etc.

You can have the project:

  • Done On Time
  • Done On Budget
  • Done Properly

Pick two.


The question of whether computers can think is just like the question of whether submarines can swim.

-- Edsger W. Dijkstra


The 3 virtues of a programmer as defined by Larry Wall, Randal L. Schwartz and Tom Christiansen (in Programming Perl).

  1. Laziness - The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer. Also hence, this book. See also impatience and hubris.

  2. Impatience - The anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least pretend to. Hence, the second great virtue of a programmer. See also laziness and hubris.

  3. Hubris - Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer. See also laziness and impatience.


"There's no test like production"

-By a colleague of mine


We better hurry up and start coding, there are going to be a lot of bugs to fix.


Charles M Strauss:

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.


The greatest performance improvement of all is when a system goes from not-working to working.

-- John Ousterhout


My favorites:

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

-- Eric Raymond

"To iterate is human, to recurse divine."

-- L. Peter Deutsch

"C++ : Where friends have access to your private members."

-- Gavin Russell Baker


From Bill Bryson

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


Dennis Ritchie

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.


Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don't think about some big picture and fancy design. If it doesn't solve some fairly immediate need, it's almost certainly over-designed. And don't expect people to jump in and help you. That's not how these things work. You need to get something half-way useful first, and then others will say "hey, that almost works for me", and they'll get involved in the project.

-- Linus Torvalds


Better train people and risk they leave – than do nothing and risk they stay.

--Anonymous

Before software should be reusable, it should be usable.

--Ralph Johnson


The generation of random numbers is too important to be left to chance.

-- Robert R. Coveyou, Oak Ridge National Laboratory

Anyone who considers arithmetic methods of producing random digits is, of course, in a state of sin.

-- John von Neumann (1951)


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

  Douglas Adams   English humorist & science fiction novelist (1952 - 2001)


A good programmer looks both ways before crossing a one-way street.


C You shoot yourself in the foot.

C++ You accidently create a dozen instances of yourself and shoot them all in the foot. Providing emergency medical assistance is impossible since you can't tell which are bitwise copies and which are just pointing at others and saying "That's me, over there."

FORTRAN You shoot yourself in each toe, iteratively, until you run out of toes, then you read in the next foot and repeat. If you run out of bullets, you continue anyway because you have no exception-handling facility.

Modula-2 After realizing that you can't actually accomplish anything in this language, you shoot yourself in the head.

COBOL USEing a COLT 45 HANDGUN, AIM gun at LEG.FOOT, THEN place ARM.HAND.FINGER on HANDGUN.TRIGGER and SQUEEZE. THEN return HANDGUN to HOLSTER. CHECK whether shoelace needs to be retied.

Lisp You shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds the gun with which you shoot yourself in the appendage which holds...

BASIC Shoot yourself in the foot with a water pistol. On big systems, continue until entire lower body is waterlogged.

Forth Foot yourself in the shoot.

APL You shoot yourself in the foot; then spend all day figuring out how to do it in fewer characters.

Pascal The compiler won't let you shoot yourself in the foot.

Snobol If you succeed, shoot yourself in the left foot. If you fail, shoot yourself in the right foot.

HyperTalk Put the first bullet of the gun into foot left of leg of you. Answer the result.

Prolog You tell your program you want to be shot in the foot. The program figures out how to do it, but the syntax doesn't allow it to explain.

370 JCL You send your foot down to MIS with a 4000-page document explaining how you want it to be shot. Three years later, your foot comes back deep-fried.

FORTRAN-77 You shoot yourself in each toe, iteratively, until you run out of toes, then you read in the next foot and repeat. If you run out of bullets, you continue anyway because you still can't do exception-processing.

Modula-2 (alternative) You perform a shooting on what might be currently a foot with what might be currently a bullet shot by what might currently be a gun.

BASIC (compiled) You shoot yourself in the foot with a BB using a SCUD missile launcher.

Visual Basic You'll really only appear to have shot yourself in the foot, but you'll have so much fun doing it that you won't care.

Forth (alternative) BULLET DUP3 * GUN LOAD FOOT AIM TRIGGER PULL BANG! EMIT DEAD IF DROP ROT THEN (This takes about five bytes of memory, executes in two to ten clock cycles on any processor and can be used to replace any existing function of the language as well as in any future words). (Welcome to bottom up programming - where you, too, can perform compiler pre-processing instead of writing code)

APL (alternative) You hear a gunshot and there's a hole in your foot, but you don't remember enough linear algebra to understand what happened. or @#&^$%&%^ foot

Pascal (alternative) Same as Modula-2 except that the bullet is not the right type for the gun and your hand is blown off.

Snobol (alternative) You grab your foot with your hand, then rewrite your hand to be a bullet. The act of shooting the original foot then changes your hand/bullet into yet another foot (a left foot).

Prolog (alternative) You attempt to shoot yourself in the foot, but the bullet, failing to find its mark, backtracks to the gun, which then explodes in your face. or No.

COMAL You attempt to shoot yourself in the foot with a water pistol, but the bore is clogged, and the pressure build-up blows apart both the pistol and your hand. or draw_pistol aim_at_foot(left) pull_trigger hop(swearing)

Scheme As Lisp, but none of the other appendages are aware of this happening.

Algol You shoot yourself in the foot with a musket. The musket is aesthetically fascinating and the wound baffles the adolescent medic in the emergency room.

Ada If you are dumb enough to actually use this language, the United States Department of Defense will kidnap you, stand you up in front of a firing squad and tell the soldiers, "Shoot at the feet." or The Department of Defense shoots you in the foot after offering you a blindfold and a last cigarette. or After correctly packaging your foot, you attempt to concurrently load the gun, pull the trigger, scream and shoot yourself in the foot. When you try, however, you discover that your foot is of the wrong type. or After correctly packing your foot, you attempt to concurrently load the gun, pull the trigger, scream, and confidently aim at your foot knowing it is safe. However the cordite in the round does an Unchecked Conversion, fires and shoots you in the foot anyway.

Eiffel You create a GUN object, two FOOT objects and a BULLET object. The GUN passes both the FOOT objects a reference to the BULLET. The FOOT objects increment their hole counts and forget about the BULLET. A little demon then drives a garbage truck over your feet and grabs the bullet (both of it) on the way.

Smalltalk You spend so much time playing with the graphics and windowing system that your boss shoots you in the foot, takes away your workstation and makes you develop in COBOL on a character terminal. or You send the message shoot to gun, with selectors bullet and myFoot. A window pops up saying Gunpowder doesNotUnderstand: spark. After several fruitless hours spent browsing the methods for Trigger, FiringPin and IdealGas, you take the easy way out and create ShotFoot, a subclass of Foot with an additional instance variable bulletHole.

Object Oriented Pascal You perform a shooting on what might currently be a foot with what might currently be a bullet fired from what might currently be a gun.

PL/I You consume all available system resources, including all the offline bullets. The Data Processing & Payroll Department doubles its size, triples its budget, acquires four new mainframes and drops the original one on your foot.

Postscript foot bullets 6 locate loadgun aim gun shoot showpage or It takes the bullet ten minutes to travel from the gun to your foot, by which time you're long since gone out to lunch. The text comes out great, though.

PERL You stab yourself in the foot repeatedly with an incredibly large and very heavy Swiss Army knife. or You pick up the gun and begin to load it. The gun and your foot begin to grow to huge proportions and the world around you slows down, until the gun fires. It makes a tiny hole, which you don't feel.

Assembly Language You crash the OS and overwrite the root disk. The system administrator arrives and shoots you in the foot. After a moment of contemplation, the administrator shoots himself in the foot and then hops around the room rabidly shooting at everyone in sight. or You try to shoot yourself in the foot only to discover you must first reinvent the gun, the bullet, and your foot.or The bullet travels to your foot instantly, but it took you three weeks to load the round and aim the gun.

BCPL You shoot yourself somewhere in the leg -- you can't get any finer resolution than that.

Concurrent Euclid You shoot yourself in somebody else's foot.

Motif You spend days writing a UIL description of your foot, the trajectory, the bullet and the intricate scrollwork on the ivory handles of the gun. When you finally get around to pulling the trigger, the gun jams.

Powerbuilder While attempting to load the gun you discover that the LoadGun system function is buggy; as a work around you tape the bullet to the outside of the gun and unsuccessfully attempt to fire it with a nail. In frustration you club your foot with the butt of the gun and explain to your client that this approximates the functionality of shooting yourself in the foot and that the next version of Powerbuilder will fix it.

Standard ML By the time you get your code to typecheck, you're using a shoot to foot yourself in the gun.

MUMPS You shoot 583149 AK-47 teflon-tipped, hollow-point, armour-piercing bullets into even-numbered toes on odd-numbered feet of everyone in the building -- with one line of code. Three weeks later you shoot yourself in the head rather than try to modify that line.

Java You locate the Gun class, but discover that the Bullet class is abstract, so you extend it and write the missing part of the implementation. Then you implement the ShootAble interface for your foot, and recompile the Foot class. The interface lets the bullet call the doDamage method on the Foot, so the Foot can damage itself in the most effective way. Now you run the program, and call the doShoot method on the instance of the Gun class. First the Gun creates an instance of Bullet, which calls the doFire method on the Gun. The Gun calls the hit(Bullet) method on the Foot, and the instance of Bullet is passed to the Foot. But this causes an IllegalHitByBullet exception to be thrown, and you die.

Unix You shoot yourself in the foot or

% ls
foot.c foot.h foot.o toe.c toe.o
% rm * .o
rm: .o: No such file or directory
% ls
%

370 JCL (alternative) You shoot yourself in the head just thinking about it.

DOS JCL You first find the building you're in in the phone book, then find your office number in the corporate phone book. Then you have to write this down, then describe, in cubits, your exact location, in relation to the door (right hand side thereof). Then you need to write down the location of the gun (loading it is a proprietary utility), then you load it, and the COBOL program, and run them, and, with luck, it may be run tonight.

VMS $ MOUNT/DENSITY=.45/LABEL=BULLET/MESSAGE="BYE" BULLET::BULLET$GUN SYS$BULLET $ SET GUN/LOAD/SAFETY=OFF/SIGHT=NONE/HAND=LEFT/CHAMBER=1/ACTION=AUTOMATIC/ LOG/ALL/FULL SYS$GUN_3$DUA3:[000000]GUN.GNU $ SHOOT/LOG/AUTO SYS$GUN SYS$SYSTEM:[FOOT]FOOT.FOOT

%DCL-W-ACTIMAGE, error activating image GUN
-CLI-E-IMGNAME, image file $3$DUA240:[GUN]GUN.EXE;1
-IMGACT-F-NOTNATIVE, image is not an OpenVMS Alpha AXP image

or
%SYS-F-FTSHT, foot shot
(fifty lines of traceback omitted)

sh,csh, etc You can't remember the syntax for anything, so you spend five hours reading manual pages, then your foot falls asleep. You shoot the computer and switch to C.

Apple System 7 Double click the gun icon and a window giving a selection for guns, target areas, plus balloon help with medical remedies, and assorted sound effects. Click "shoot" button and a small bomb appears with note "Error of Type 1 has occurred."

Windows 3.1 Double click the gun icon and wait. Eventually a window opens giving a selection for guns, target areas, plus balloon help with medical remedies, and assorted sound effects. Click "shoot" button and a small box appears with note "Unable to open Shoot.dll, check that path is correct."

Windows 95 Your gun is not compatible with this OS and you must buy an upgrade and install it before you can continue. Then you will be informed that you don't have enough memory.

CP/M I remember when shooting yourself in the foot with a BB gun was a big deal.

DOS You finally found the gun, but can't locate the file with the foot for the life of you.

MSDOS You shoot yourself in the foot, but can unshoot yourself with add-on software.

Access You try to point the gun at your foot, but it shoots holes in all your Borland distribution diskettes instead.

Paradox Not only can you shoot yourself in the foot, your users can too.

dBase You squeeze the trigger, but the bullet moves so slowly that by the time your foot feels the pain, you've forgotten why you shot yourself anyway. or You buy a gun. Bullets are only available from another company and are promised to work so you buy them. Then you find out that the next version of the gun is the one scheduled to actually shoot bullets.

DBase IV, V1.0 You pull the trigger, but it turns out that the gun was a poorly designed hand grenade and the whole building blows up.

SQL You cut your foot off, send it out to a service bureau and when it returns, it has a hole in it but will no longer fit the attachment at the end of your leg; or

Insert into Foot
Select Bullet
From Gun.Hand
Where Chamber = 'LOADED'
And Trigger = 'PULLED'

Clipper You grab a bullet, get ready to insert it in the gun so that you can shoot yourself in the foot and discover that the gun that the bullets fits has not yet been built, but should be arriving in the mail _REAL_SOON_NOW_.

Oracle The menus for coding foot_shooting have not been implemented yet and you can't do foot shooting in SQL.

English You put your foot in your mouth, then bite it off. (For those who don't know, English is a McDonnell Douglas/PICK query language which allegedly requires 110% of system resources to run happily.)

Revelation [an implementation of the PICK Operating System] You'll be able to shoot yourself in the foot just as soon as you figure out what all these bullets are for.

FlagShip Starting at the top of your head, you aim the gun at yourself repeatedly until, half an hour later, the gun is finally pointing at your foot and you pull the trigger. A new foot with a hole in it appears but you can't work out how to get rid of the old one and your gun doesn't work anymore.

FidoNet You put your foot in your mouth, then echo it internationally.

PicoSpan [a UNIX-based computer conferencing system] You can't shoot yourself in the foot because you're not a host. or (host variation) Whenever you shoot yourself in the foot, someone opens a topic in policy about it.

Internet You put your foot in your mouth, shoot it, then spam the bullet so that everybody gets shot in the foot.

troff

rmtroff -ms -Hdrwp <<'!' | lpr -Pwp2 &

.*place bullet in footer
.B
.NR FT +3i
.in 4
.bu Shoot!
.br
.sp
.in -4
.br
.bp NR HD -2i
.*
!

Genetic Algorithms You create 10,000 strings describing the best way to shoot yourself in the foot. By the time the program produces the optimal solution, humans have evolved wings and the problem is moot.

CSP (Communicating Sequential Processes) You only fail to shoot everything that isn't your foot.

MS-SQL Server MS-SQL Server’s gun comes pre-loaded with an unlimited supply of Teflon coated bullets, and it only has two discernible features: the muzzle and the trigger. If that wasn't enough, MS-SQL Server also puts the gun in your hand, applies local anesthetic to the skin of your forefinger and stitches it to the gun's trigger. Meanwhile, another process has set up a spinal block to numb your lower body. It will then proceeded to surgically remove your foot, cryogenically freeze it for preservation, and attach it to the muzzle of the gun so that no matter where you aim, you will shoot your foot. In order to avoid shooting yourself in the foot, you need to unstitch your trigger finger, remove your foot from the muzzle of the gun, and have it surgically reattached. Then you probably want to get some crutches and go out to buy a book on SQL Server Performance Tuning.

Sybase Sybase's gun requires assembly, and you need to go out and purchase your own clip and bullets to load the gun. Assembly is complicated by the fact that Sybase has hidden the gun behind a big stack of reference manuals, but it hasn't told you where that stack is. While you were off finding the gun, assembling it, buying bullets, etc., Sybase was also busy surgically removing your foot and cryogenically freezing it for preservation. Instead of attaching it to the muzzle of the gun, though, it packed your foot on dry ice and sent it UPS-Ground to an unnamed hookah bar somewhere in the middle east. In order to shoot your foot, you must modify your gun with a GPS system for targeting and hire some guy named "Indy" to find the hookah bar and wire the coordinates back to you. By this time, you've probably become so daunted at the tasks stand between you and shooting your foot that you hire a guy who's read all the books on Sybase to help you shoot your foot. If you're lucky, he'll be smart enough both to find your foot and to stop you from shooting it.

Magic software You spend 1 week looking up the correct syntax for GUN. When you find it, you realise that GUN will not let you shoot in your own foot. It will allow you to shoot almost anything but your foot. You then decide to build your own gun. You can't use the standard barrel since this will only allow for standard bullets, which will not fire if the barrel is pointed at your foot. After four weeks, you have created your own custom gun. It blows up in your hand without warning, because you failed to initialise the safety catch and it doesn't know whether the initial state is "0", 0, NULL, "ZERO", 0.0, 0,0, "0.0", or "0,00". You fix the problem with your remaining hand by nesting 12 safety catches, and then decide to build the gun without safety catch. You then shoot the management and retire to a happy life where you code in languages that will allow you to shoot your foot in under 10 days.

Ruby foot.shot(Gun.new)

CSS You try to shoot your foot -- and made it on IE 7 but not IE 6.

Tcl You first have to decide your object system, but by that time it already has one. You try to use gun::shoot {foot::create}, but you realize that you used braces instead of brackets. You spend hours staring at your code until you figure this out.

StackOverflow To shoot yourself in the foot, ask a bad question and 5 people will come and shoot your foot.

ASP .NET You discover that your client has your foot on his computer but the bullet is in the server database so you use SQL to extract the data for a Bullet object and create a gun class in C#. Then you write some HTML so your client can see the gun. You then discover that there are no controls for actually firing the gun at your foot through your client's browser so you create a mash-up of Javascript, JQuery, and AJAX to try and get the client's computer to shoot your foot. 10 languages, a million hours of testing/debugging, and 4 months later when your customer finally decides to run your web page, you learn that he is running IE6 and your new HTML5 code is not compatible with his old browser so the gun now appears to have two triggers. The client runs the page anyway but the postback gets lost and you never actually know if your foot got shot or not.


Owning a computer without programming is like having a kitchen and using only the microwave oven - Charles Petzold


Bruce Ediger

The only "intuitive" interface is the nipple. After that it's all learned.


God could create the world in six days because he didn't have to make it compatible with the previous version


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

Donald Knuth

The complete quote:

There is no doubt that the grail of efficiency leads to abuse. Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical 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.

Yet we should not pass up our opportunities in that critical 3%. A good programmer will not be lulled into complacency by such reasoning, he will be wise to look carefully at the critical code; but only after that code has been identified.


"When art critics get together they talk about Form and Structure and Meaning. When artists get together they talk about where you can buy cheap turpentine."

-- Pablo Picasso

quoted in "Code Complete" by Steve McConnell


I would love to change the world, but they won't give me the source code

-- Saw this on a T-shirt. Dont know if someone had already mentioned the same quote here.


'If we're supposed to work in Hex, why have we only got A fingers?' - johnwm


"Programming is like sex: one mistake and you have to support it for the rest of your life." -- Michael Sinz


Something David Parnas said in an interview [1]:

Q: What is the most often-overlooked risk in software engineering?

A: Incompetent programmers. There are estimates that the number of programmers needed in the U.S. exceeds 200,000. This is entirely misleading. It is not a quantity problem; we have a quality problem. One bad programmer can easily create two new jobs a year. Hiring more bad programmers will just increase our perceived need for them. If we had more good programmers, and could easily identify them, we would need fewer, not more.

[1] http://www.sigsoft.org/SEN/parnas.html


Subject: Re: Computers in Science Fiction From: Steve Taylor Newsgroups: alt.folklore.computers, alt.history.future, rec.arts.sf.science, rec.arts.sf.written

howard wrote: I have been using computers since 1969. Some of the programs I wrote in the 70's are still running.

Bummer. Have you tried moving variable initialisations out of inner loops? That can speed things up a bit...


My favourite:

Think twice before you start programming or you will program twice before you start thinking.

(I don't know the author)


If I had more time, I would have written a shorter letter.

Cicero


Software is like sex: It's better when it's free. (Linus Torvalds)


"Profanity is the one language all programmers know best"


"Any sufficiently advanced technology is indistinguishable from magic." - Sir Arthur C Clarke


"You start writing code, I'll go see what the customer wants"..


Good programmers never write what they can steal or borrow

-- Jeff Atwood


"Debugging is like farting - it's not so bad when it's your own code."


I love the project triangle as my software quote (http://en.wikipedia.org/wiki/Project_triangle):

Good, Fast, Cheap: Pick Two


A side-bar in Code Complete, chapter 5:

When I am 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. R. Buckminster Fuller


If you don't have time to do it right, when will you have time to do it over?

John Wooden, basketball coach


Clark's law, after J. Porter Clark in a usenet post [1]:

Sufficiently advanced incompetence is indistinguishable from malice.

[1] http://groups.google.com/group/alt.config/msg/595eee6098155967


"Don't worry about people stealing your ideas. If it's original, you'll have to ram it down their throats." --Howard Aiken, creator of the IBM/Harvard Mark 1 Computer


"Saying that Java is good because it works on all platforms is like saying anal sex is good because it works on all genders."

No offense to Java developers :)


Perhaps a little less serious than some, but still one of my favorites:

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


I don't think this one's been mentioned yet:

You know, when you have a program that does something really cool, and you wrote it from scratch, and it took a significant part of your life, you grow fond of it. When it's finished, it feels like some kind of amorphous sculpture that you've created. It has an abstract shape in your head that's completely independent of its actual purpose. Elegant, simple, beautiful.

Then, only a year later, after making dozens of pragmatic alterations to suit the people who use it, not only has your Venus-de-Milo lost both arms, she also has a giraffe's head sticking out of her chest and a cherubic penis that squirts colored water into a plastic bucket. The romance has become so painful that each day you struggle with an overwhelming urge to smash the f---ing thing to pieces with a hammer.

-- Nick Foster ("Life as a programmer")


from the Programmers Dictionary:

recursion: see recursion

Programmer: an organism that turns coffee into software

dangling pointer: see recursion


Never memorize what you can look up in books. -Albert Einstein

I believe that being resourceful is one of the most important skills a developer can have due to the wide variety and breadth of problems they must solve from day to day. It seems like with every new problem the solution requires researching new libraries, tools, API's, etc.


It's morning already?


There are only two hard problems in Computer Science: cache invalidation and naming things.

- Phil Karlton


It is easier to optimize correct code than to correct optimized code.

(Another version of "Premature optimization is the root of all evil").


"Getting a SCSI chain working is perfectly simple if you remember that there must be exactly three terminations: one on one end of the cable, one on the far end, and the goat, terminated over the SCSI chain with a silver-handled knife whilst burning black candles." -- Anthony DeBoer

"SCSI is not magic. There are fundamental technical reasons why you have to sacrifice a young goat to your SCSI chain every now and then." -- John F. Woods


Java: Write Once, Debug Everywhere


Software and cathedrals are much the same - first we build them, then we pray.

-- Anonymous


Rules for optimization:

  1. Don't do it.
  2. (for experts only) Don't do it yet.

Michael A Jackson


Confidence, n.: The feeling you have before you understand the situation


"There are two major products that come out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence." - Jeremy S. Anderson


"Good judgement is the result of experience ... Experience is the result of bad judgement."

Fred Brooks [1]

[1] http://www.quoteworld.org/quotes/1894


If architects built houses the way programmers built programs, the first woodpecker to come along would destroy civilization.

Gerald Weinberg [1]

[1] http://en.wikipedia.org/wiki/Gerald\_M.\_Weinberg


All problems in computer science can be solved with another level of indirection.

-- David Wheeler


"Java is a DSL to transform big Xml documents into long exception stack traces."

Scott Bellware


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


From http://www.catb.org/~esr/jargon/html/index.html

A novice was trying to fix a broken Lisp machine by turning the power off and on.

Knight, seeing what the student was doing, spoke sternly: "You cannot fix a machine by just power-cycling it with no understanding of what is going wrong."

Knight turned the machine off and on.

The machine worked.


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

Another good website: "Quotes about Tech Writing" [1]

[1] http://www.sysprog.net/quotwrit.html


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


A quote I've been using a lot lately dealing with ... difficult people

'Select' isn't broken

Fred Brookes (The Mythical Man-Month)

Speaking about the likelihood that, when it appears a common third-party tool is broken rather than your code, chances are that it is, in fact, your code.


There are only two types of people in the world:
1. Those that start array indices at 1
1. Those that start array indices at 0

-- Unknown


My favourites:

Thomas A. Edison

I have not failed. I've just found 10,000 ways that won't work.

Richard Pattis

When debugging, novices insert corrective code; experts remove defective code.


"Simplicity is prerequisite for reliability." -Edsger Dijkstra


You can't solve social problems through technical means.


Question: How does a large software project get to be one year late? Answer: One day at a time!

- Fred Brooks (The Mythical Man-Month)

I like this one because on a lot of projects people seem to think those disaster projects we all hear of happen to other people and not to them. Their assumption is that something really huge and drastic has to happen for projects to get horribly delayed, when really all a project needs is multiple incremental delays to throw the delivery dates way off.Answer: One day at a time!


I had a mentor who was fond of quoting this (and it's turned out to be good advice):

It was a turning point in my programming career when I realized that I didn't have to win every argument. I'd be talking about code with someone, and I'd say, "I think the best way to do it is A." And they'd say, "I think the best way to do it is B. I'd say, "Well no, it's really A." And they'd say, "Well, we want to do B." It was a turning point for me when I could say, "Fine. Do B. It's not going to hurt us that much if I'm wrong. It's not going to hurt us that much if I'm right and you do B, because, we can correct mistakes. So lets find out if it's a mistake." ... Usually it turns out to be C.

Ward Cunningham [1]

[1] http://www.artima.com/intv/ownershipP.html


Pasting code from the Internet into production code is like chewing gum found in the street.


One programmer can do in one day what two programmers can do in two.


Java. The elegant simplicity of C++. The blazing speed of Smalltalk.


Measuring programming progress by lines of code is like measuring aircraft building progress by weight. - Bill Gates


Beware of programmers who carry screwdrivers.

-- Leonard Brandwein


To paraphrase P.J O'Rourke :

"Giving pointers and threads to programmers is like giving whisky and car keys to teenagers"


Debugging code is at least twice as hard as writing it in the first place. Therefore, if you write a program as cleverly as possible you are, by definition, not smart enough to debug it. (Brian W. Kernighan)

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

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

Human beings are not accustomed to being perfect, and few areas of human activity demand it. Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.


Two favorite quotes about merits of dynamic typing [1] vs. static typing [2]:

Think of compilation as cooking. Dynamic typing means the steak is juicy and still a little red, like red meat is supposed to be. Static typing means you burnt it to a crisp.

Erik Naggum [3]

It seems to me you can program with discipline or you can program with bondage and discipline. You can't avoid the discipline either way, but bondage appeals to some people.

Patrick Logan [4]

The next one is not primarily about programming but can be applied to it as well:

One who works with their hands is a laborer. One who works with their hands and their mind is a craftsman. One who works with their hands, mind and heart is an artist.

[1] http://en.wikipedia.org/wiki/Type\_system#Dynamic\_typing [2] http://en.wikipedia.org/wiki/Type\_system#Static\_typing [3] http://groups.google.com/group/comp.lang.lisp/browse\_thread/thread/31c339ab3988592e/cbc0194f39cf3723#cbc0194f39cf3723 [4] http://lambda-the-ultimate.org/classic/message10140.html


From the Linux kernel (2.4 series I believe), drivers/usb/printer.c:

static char *usblp_messages[] = { "ok", "out of paper", "off-line", "on fire" };


"Nothing is more permanent than a temporary solution"

Thomas' First Law

I also like:

Fast, Cheap, Reliable: Pick any two.


Wow, I can't believe it. 16 pages and apparently no mention of Wes Dyer's classic:

Make it correct, make it clear, make it concise, make it fast.

In that order.

Source: http://blogs.msdn.com/wesdyer/archive/2007/03/01/immutability-purity-and-referential-transparency.aspx


Must be zero, or equal to MAPI_UNICODE. In either case, however, this parameter is ignored. ... MSDN [1]

[1] http://msdn.microsoft.com/en-us/library/ms859728.aspx


One of my favourites is written as a definition

Program, n.: (1) A magic spell cast upon a computer to enable it to turn your input into error messages. (2) v.t., A pastime similar to banging your head against a wall but with fewer opportunities for reward.

By Graham Storr (The Fairly Concise New Scientist Magazine Dictionary of scientific words in current use)


"The best code is no code at all."


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


Easy things should be easy and hard things should be possible

Larry Wall


On a wall in our building:

Theory is when one knows everything, but nothing works.

Practice is when everything works, but nobody knows why.

In this building, Theory and Practice are in perfect harmony. Nobody knows why nothing works.


How do we convince people that in programming simplicity and clarity —in short: what mathematicians call "elegance"— are not a dispensable luxury, but a crucial matter that decides between success and failure?

Edsger W. Dijkstra [1]

[1] http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD648.html


It takes an intelligent person to build something complex; it takes a genius to build something simple


You can't parse [X]HTML with regex. Because HTML can't be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML. Regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML. HTML is not a regular language and hence cannot be parsed by regular expressions. Regex queries are not equipped to break down HTML into its meaningful parts. so many times but it is not getting to me. Even enhanced irregular regular expressions as used by Perl are not up to the task of parsing HTML. You will never make me crack. HTML is a language of sufficient complexity that it cannot be parsed by regular expressions. Even Jon Skeet cannot parse HTML using regular expressions. Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The cannot hold it is too late

//snip (click link for rest)

bobince on StackOverflow [1]

[1] http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454


Abraham Lincoln once said:

Give me six hours to chop down a tree and I will spend the first four sharpening the axe.

But for me, the big problem with "axe sharpening" is that it's recursive. In a Zeno's paradox [1] kind of way: You spend the first two thirds of the time allotted to accomplishing a task actually working on the tool. But working on the tool is itself a task that involves tools: to sharpen the axe, you need a sharpening stone. So you spend two-thirds of the sharpening time coming up with a good sharpening stone. But before you can do that you need to spend time finding the right stone. And before you can do that you need to go to the north coast of Baffin Island where you've heard the best stones for sharpening come from. But to get there, you need to build a dog sled....

-- James Gosling

[1] http://en.wikipedia.org/wiki/Zeno%27s%5Fparadoxes


Programmers usually have good reasons for making bad decisions.


Let the code run free, if it needs to be debugged, it will come back.


If you can't explain something to a six-year-old, you really don't understand it yourself.

  • Albert Einstein

This quote fits from Architecture Point of Software. You need to understand different component of Architecture properly so that you can explain your team how their particular module/component fall in place together to make complete Software


By MCConnell in Code Complete

"The fact that a design uses inheritance and polymorphism doesn't make it a good design"


I found this to be hilarious, but can't remember who first said it: "Love is real, unless declared an integer."


It should work!

- a programmer's last words.


My programs don't have bugs, they just develop random features


Stroustrup:

In C, its easy to shoot yourself in the foot. C++ makes it more difficult, but when you do, you'll blow your whole leg off.


"Multi-threading is the art of screwing things up before, during or after something else."


if (!kill) strength++;

Programming languages are like girlfriends: The new one is better because you are better.


"When all you have is a hammer, everything starts to look like a nail." --Source Unknown


"That time in Seattle... was a nightmare. I came out of it dead broke, without a house, without anything except a girlfriend and a knowledge of UNIX."

"Well, that's something," Avi says. "Normally those two are mutually exclusive."

-- Neal Stephenson, "Cryptonomicon"


Engineering is the art of doing with one dollar what any damn fool can do with two.

From Space Systems Failures by David M. Harland and Ralph D. Lorenz


It works on my machine - anonymous programmer..

@ Gulzar [1]

Your quote reminded me of another great quote:

I don't care if it works on your machine! We are not shipping your machine! - Ovidiu Platon

[1] #58780


I know it doesn't sound like a big effort, but programmers are really, really lazy, and they like to minimize motion. They'd use feeder tubes if the Health Department would let them.

-- Steve Yegge


UNIX is user friendly. Its just picks whom it want to be friends with.


"It depends" is the answer to all good software engineering questions, but to be a good software engineer, you should know on what it depends, and why.

-- User:hexium, on StackOverflow [1].

[1] http://stackoverflow.com/questions/81677/whats-your-motto-as-a-developer-programmer/1780767#1780767


You're never done, you just run out of time.


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

and

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.

Both from Edsger Dijkstra's paper - The Humble Programmer (EWD340) [1].

[1] http://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD340.html


Good design adds value faster than it adds cost.

-- Thomas C. Gale


"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. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures."

—Fred Brooks, The Mythical Man-Month


Phil Haack has a great post on 19 Eponymous Laws Of Software Development [1].

One of my favourites:

Parkinson’s Law Otherwise known as the law of bureaucracy, this law states that...

Work expands so as to fill the time available for its completion.

[1] http://haacked.com/archive/2007/07/17/the-eponymous-laws-of-software-development.aspx


Sam Redwine:

Software and cathedrals are much the same. First we build them, then we pray.


Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why.


With all due respect John, I am the head of IT and I have it on good authority. If you type "Google" into Google, you can break the Internet.

Jen, "The IT Crowd"


http://imgs.xkcd.com/comics/regular_expressions.png

The second row.


The two most common elements in the universe are hydrogen and stupidity.

-- Harlan Ellison


My physics teacher used to say:

Always code as if a single bug will bring the building down.


There is no IRL, only AFK

-- Unknown


PC Load letter? What the @#$%! is PC Load Letter?!?!


A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools.

-- Douglas Adams


C++ : Where friends have access to your private members.

source [1]

[1] http://io.srijith.net/post/87207373/c-where-friends-have-access-to-your-private


Waldi Ravens

A C program is like a fast dance on a newly waxed dance floor by people carrying razors.


God did not create the world in seven days; for six days he screwed around and then pulled an all-nighter.

(This also explains a lot :)


"if you are a programmer working in 2003 and you don't know the basics of characters, character sets, encodings, and Unicode, and I catch you, I'm going to punish you by making you peel onions for 6 months in a submarine."

Joel Spolsky [1]

[1] http://www.joelonsoftware.com/articles/Unicode.html


The origins aren't in programming, but this certainly is relevant when getting the requirements from the customer:

If we'd asked the customers what they wanted, they would have said "faster horses" - Henry Ford


Laurence Gonzales

The word “experienced” often refers to someone who’s gotten away with doing the wrong thing more frequently than you have.


"Plan to throw one away; you will anyway"

  • Brooks' The Mythical Man-Month

See Alan Perlis' epigrams in programming [1]:

  1. One man's constant is another man's variable.

  2. Functions delay binding; data structures induce binding. Moral: Structure data late in the programming process.

  3. Syntactic sugar causes cancer of the semicolon.

  4. Every program is a part of some other program and rarely fits.

  5. If a program manipulates a large amount of data, it does so in a small number of ways.

  6. Symmetry is a complexity-reducing concept (co-routines include subroutines); seek it everywhere.

  7. It is easier to write an incorrect program than understand a correct one.

  8. A programming language is low level when its programs require attention to the irrelevant.

  9. It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures.

  10. ...

[1] http://www.cs.yale.edu/quotes.html


Real Programmers don't comment their code. If it was hard to write, it should be hard to understand.

This and other "facts" found here [1]

[1] http://www.guidenet.net/resources/programmers.html


'Goto' is always evil, like in 'goto school' or 'goto work'.


From Bash.org

(dusk) python is pretty easy to leaRN (dusk) you write pseudocode, and you indent it correctly :)


(maniaman) so lets say i have a daTE (aNdAres) who's the lucky girL? (maniaman) if that date occurs between 2 dates in a single row in a database


(JAy) Did you hear about the Linux-car finishing last in the indy500? (MRbEek) I did now ;-) (MRbEek) Not surprised though... You know how impossible it is to find a decent driver for linux hardware?


(HAx.13307) U're all lame as hell here!!!!! I can hack u all in no time! just tell me your ip and u're dead! (MAler.home) try mine (MAler.home) 127.0.0.1 *** Signoff: HaX.1337 (Connection reset by peer) (DAmz|dispute) wow. never thought such a retard nick can get his hands on something actually working xD


(SIxfEet-) rejected by a computer script, new low in my life (NTT) well, at least u didnt have cybersex with one of those bots that pm's you here on mirc (SIxfEet-) well i tried, but it replied with "lets just be friends..." (SIxfEet-) =(


(CRaghAck)Theory is when you know everything and nothing works. (CRaghAck)Practice is when things work, and noone knows why. (CRaghAck)Here we combine theory and practice. (CRaghAck)Nothing works and noone knows why.


(mentor) How do you escape handcuffs? (mentor) backslashes


(CHipper) Hexidecimal counting systems are awesome! (CHipper) On a scale from 1 to 10, I give them an E


(mav) I've always wanted to change my legal name to ;DROP DATABASE; and see what kind of havoc ensues...


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


(sm-) how would i check a mysql database to see if a table exists? (ALpha232) put down a table cloth, if it doesn't turn into a rug, then it exists


Maybe_Factor: C++ doesn't have a compiler, it has a complainer.


scruss: a guy called us and complained because his dsl didn't work, come to find out he had win98 and actually took a knife and trimmed the rj45 connection to fit into the rj11 jack


(ROguefOxx) I'm going to go outside (ROguefOxx) where no nerd has gone before (ROguefOxx) pray for me


* +ramoth4 slaps politik with an unsigned long double * +politik comes back with a _uint64 uppercut * +ramoth4 pulls out a struct and returns fire * +politik corrupts ramoth's heap * +Fire_Elemental-Coding- ducks to avoid leaked memory * +politik pops Fire_Elemental-Coding- square in the stack * +ramoth4 stuffs politik's face in the bitbucket, and begins to operate on nil pointers * +politik throws uncatchable exceptions around the room * +ramoth4 dodges skillfully with his try-catch block * +politik cuts off ramoth's private member * +ramoth4 encapsulates the wound in a protected class * +politik destroys all foes with up-casts to inappropriate derived classes! * +politik is out of ideas * +politik :: ~politik(); * +ramoth4 declares flipcode his namespace! (+ramoth4) I win! * +ramoth4 beat C++. (+ramoth4) The last guy was hard.


(ruffkin2) HAHAHAH dat dude you sent me 127.0.0.1 iz enfected wit sub7 im fuckin with him now (andrw) oh good, format his computer (TEsticular_ONe) format his computer (THegReaterzEro) format him


(typobox43) programming without arrays is like swimming without trunks. it works, but for most people, it's ugly.


(FEren) I'm a network engineer, and I'm o-kay / I plot all night and capture packets all day. (AThena) You smack down PCs and eat Cat5, and go to the lavatory? On wednesdays you hunt scriptkiddies, and have roasted punk for tea? (SLipstream) Old MacDonald had a network. EIGRP. And on this Network, he had some packets. EIGRP. With an ACK, ACK, here, and an ACK, ACK, there. Here an ACK, there an ACK, everywhere an ACK-ACK. Old Macdonald had a Network. EIGRP.


(hydro`) i had this weird dream (hydro`) someome broke into the house (hydro`) and changed the wallpaper on the computer and left


(GHo5t) i decided against that php bumper sticker (GHo5t) i don't want my friends from home to think i turned into a super geek (GHo5t) i can just imagine what would happen when they ask what 'php' meant (ASLeep)hah (ASLeep)I don't drive so my PHP sticker is on my laptop. (ASLeep) Of course, I'm getting my php tattoo this weekend so it doesn't matter.


Your code is both good and original. Unfortunately the parts that are good are not original, and the parts that are original are not good.


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


It has been said that the great scientific disciplines are examples of giants standing on the shoulders of other giants. It has also been said that the software industry is an example of midgets standing on the toes of other midgets.

-- Alan Cooper


Having grown up coding C, I prefer the double quote, " (ASCII 34).


Not really a programmers quote, but I like to remind:

They did not know it was impossible, so they did it! - Marc Twain


Later equals never


Phil Reed

For a list of the ways in which technology has failed to improve our quality of life, press 3.


I (...) am rarely happier than when spending an entire day programming my computer to perform automatically a task that would otherwise take me a good ten seconds to do by hand. Douglas Adams, Last Chance to See

Programming is not a zero-sum game. Teaching something to a fellow programmer doesn’t take it away from you. I’m happy to share what I can, because I’m in it for the love of programming. The Ferraris are just gravy, honest! John Carmack, from Michael Abrash' Graphics Programming Black Book


Here are some of my favorites that don't all come from the world of programming, but certainly apply to it. And thanks to this thread, I have new favorites too!

On pursuing solutions:

People who are really serious about software should make their own hardware. – Alan Kay

On simplicity:

Consider the postage stamp: its usefulness consists in the ability to stick to one thing until it gets there. – Josh Billings

On management:

Don't tell people how to do things, tell them what to do and let them surprise you with their results. – George S. Patton

On making time for projects:

Time is never found. – A good friend of mine

On fear:

I wish in the past I had tried more things 'cause now I know that being in trouble is a fake idea. – Raymond Quentin Smuckles [1]

On multitasking:

Multitasking is the art of distracting yourself from two things you’d rather not be doing by doing them simultaneously. – I think I read this on 43folders.com [2].

On obsolete standards:

No I ain't got a fax machine! I also ain't got an Apple iic, polio, or a falcon! – Ray Smuckles [3] again

[1] http://www.achewood.com/ [2] http://www.43folders.com/ [3] http://www.achewood.com/


"Code never lies, comments sometimes do"

Ron Jeffries said this once, someone else could have say it before.


Cursing is the one language every programmer knows.


“A computer programmer is a device for turning coffee into bugs.”

Bram Moolenaar (author of Vim)


(Note that I could be wrong about the authors of the quotes.)

  • Any sufficiently advanced bug is indistinguishable from a feature. ~Rich Kulawiec
  • From a programmer's point of view, the user is a peripheral that types when you issue a read request. ~Peter Williams
  • 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

And my favorite:

  • Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. ~Stan Kelly-Bootle

God is Real, unless declared Integer.

(J. Allan Toogood)


Great Larry Wall Quotes:

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

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

  • It won't be covered in the book. The source code has to be useful for something, after all...

  • Just don't create a file called -rf.

  • Sex is fun, but it probably doesn't solve all your problems.

  • My assertion that we can do better with computer languages is a persistent belief and fond hope, but you'll note I don't actually claim to be either rational or right. Except when it's convenient.

  • I try not to confuse roles and traits in my own life. Being the Perl god is a role. Being a stubborn cuss is a trait.

And lots more here [1]

[1] http://www.cpan.org/misc/lwall-quotes.txt.gz


Paul Graham has some good quotes on his web site. [1]

I particularly like Greenspun's Tenth Rule:

"Any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp."

[1] http://www.paulgraham.com/quotes.html


Short but sweet quote from Jon Bentley [1], to whom respect is well deserved

People who deal with bits should expect to get bitten

[1] http://en.wikipedia.org/wiki/Jon\_Bentley


"There are two major products that come out of Berkeley: LSD and UNIX. We don’t believe this to be a coincidence." – Jeremy S. Anderson


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. (IBM Manual, 1925)


There is nothing quite so permanent as a quick fix.


"Shipping is a feature." -- Richard Campbell.


If C didn't exist, we would be programming in OBOL, PASAL or BASI

Unknown

Sorry for my English.


“The question of whether computers can think is like the question of whether submarines can swim.” (Edsger W. Dijkstra)


"The Internet? Is that thing still around?"

  • Homer Simpson

"They have computers, and they may have other weapons of mass destruction."

  • Janet Reno

"The question of whether computers can think is like the question of whether submarines can swim."

  • Edsger W. Dijkstra

Only Half of programming is coding. The other 90% is debugging.

-- T-shirt wisdom


Now I'm a pretty lazy person and am prepared to work quite hard in order to avoid work.

Martin Fowler, "Refactoring", page 90


"What I cannot build, I do not understand." – Richard Feynman


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

-- John Johnson


“The Linux philosophy is 'Laugh in the face of danger'. Oops. Wrong One. 'Do it yourself'. Yes, that's it.”

-- Linus Torvalds


Artificial Intelligence is no match for natural stupidity.

Unknown author


Technology is dominated by two types of people:

  • those who understand what they do not manage; and
  • those who manage what they do not understand

The more bizarre the behavior, the more stupid the mistake.

-Ed's Law of Debugging


There are no significant bugs in our released software that any significant number of users want fixed.

-- Bill Gates


One that is relevant to the way I'm often forced to work:

Any sufficiently successful rigged demo is indistinguishable from advanced technology.

(to paraphrase A C Clarke)


i like the Quotes

What I hear, I forget. What I see, I remember. What I do, I understand. - Confucius

Any fool can write code that a computer can understand... But only good programmers write code that humans can understand. -- Martin Fowler


A very inspiring note.

Apple's Welcome Kit for new hires has this written on the bottom of the box:

There's work and there's your life's work.

The kind of work that has your fingerprints all over it. The kind of work that you'd never compromise on. That you'd sacrifice a weekend for. You can do that kind of work at Apple. People don't come here to play it safe. They come here to swim in the deep end.

They want their work to add up to something.

Something big. Something that couldn't happen anywhere else.

Welcome to Apple.


"Yes, sometimes Perl looks like line noise to the uninitiated, but to the seasoned Perl programmer, it looks like checksummed line noise with a mission in life."

-Randal Shwartz


My other car is a cdr


From my personal compilation [1]:

“New technologies aren’t adopted because they are great, new, and disruptive; they are adopted only if the user’s crisis solved by the technology is greater than the perceived pain of adoption.”

Any problem in computer science can be solved with another layer of indirection. But that usually will create another problem. - David Wheeler (1927 - 2004)

"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live" - Martin Golding

In my experience, one of the most significant problems in software development is assuming. If you assume a method will passed the right parameter value, the method will fail. – Paul M. Duvall

Programming languages are like girlfriends: The new one is better because you are better. – Derek Sivers

The sooner we start coding fewer frameworks and more programs the sooner we’ll become better programmers. – Warped Java Guy Elementary Java Solutions

Starting a startup is hard, but having a 9 to 5 job is hard too, and in some ways a worse kind of hard. – Paul Graham The Future of Web Startups

In essence, let the market design the product. – Paul Graham The Future of Web Startups

A startup now can be just a pair of 22 year old guys. A company like that can move much more easily than one with 10 people, half of whom have kids. – Paul Graham The Future of Web Startups

Startups almost never get it right the first time. Much more commonly you launch something, and no one cares. Don’t assume when this happens that you’ve failed. That’s normal for startups. But don’t sit around doing nothing. Iterate. – Paul Graham How Not to Die

The key to performance is elegance, not battalions of special cases. – Jon Bentley and Doug McIlroy

You’ll spend far more time babysitting old technologies than implementing new ones. – Jason Hiner IT Dirty Secrets

To Iterate is Human, to Recurse, Divine. – James O. Coplien

No one hates software more than software developers. – Jeff Atwood Hanselminutes Podcast 74

I was a C++ programmer before I started designing Ruby. I programmed in C++ exclusively for two or three years. And after two years of C++ programming, it still surprised me. – Matz The Philosophy of Ruby

Good architecture is necessary to give programs enough structure to be able to grow large without collapsing into a puddle of confusion. – Douglas Crockford The Elements of JavaScript Style

Programming is difficult. At its core, it is about managing complexity. Computer programs are the most complex things that humans make. Quality is illusive and elusive. – Douglas Crockford The Elements of JavaScript Style

Code reuse is the Holy Grail of Software Engineering. – Douglas Crockford The Elements of JavaScript Style

The structure of software systems tend to reflect the structure of the organization that produce them. – Douglas Crockford The Elements of JavaScript Style

The definition of Hell is working with dates in Java, JDBC, and Oracle. Every single one of them screw it up. – Dick Wall CommunityOne 2007: Lunch with the Java Posse

I went to school to learn how to program software applications, which inevitably have bug defects. There was no course at my university on testing, debugging, profiling, or optimization. These things you have to learn on your own, usually in a tight deadline. – Juixe TechKnow

To most Java developers, Ruby/Rails is like a mistress. Ruby/Rails is young, new, and exciting; but eventually we go back to old faithful, dependable, and employable Java with some new tricks and idioms and we are the better programmer for it. – Juixe TechKnow

You might as well pay your customers 50K because they are just your QA. – Juixe TechKnow

[1] http://www.google.com/notebook/public/13971387429774074224/BDQyESwoQv\_76lOoi


"Computer Science is no more about computers than Astronomy is about telescopes." - E. Dijkstra


Eric Sink’s Axiom of Software Development

You can't eliminate problems, but you can make trades to get problems that you prefer over the ones you have now.


Manually managing blocks of memory in C is like juggling bars of soap in a prison shower: It's all fun and games until you forget about one of them.

Not sure who's the author, saw it on irc.


Ravera's observation on premature optimization: "If it doesn't work, it doesn't matter how fast it doesn't work"

Ravera's First Law of System Administration: "Any set of procedures, no matter how well intentioned or useful, that are too difficult to follow, will be circumvented."

You can have it cheap, fast, or right -- pick any two.

If you make it a constant today, you will have to make it a variable in a couple of weeks. If, however, you think that you need to look it up in a table somewhere, it will become a univeral constant that could have been completely factored out of your code, not just hardcoded.


Deleted code is debugged code.

Jeff Sickel


Better is the enemy of good. ("le mieux est l'ennemi du bien")

--Voltaire

The notion is not to wait until something is perfect, when 'good enough' will do. Its always a struggle to make that judgement, since nothing is ever "done."


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.


UNIX is simple. It just takes a genius to understand it's simplicity.

-- Dennis Ritchie


"Keyboard not found. Press < F1 > to RESUME."

source unknown


"Code -- a set of symbols whose primary purpose is to restrict comprehension."

-- Webster's 3rd International Dictionary


Not directly a programming quote, but I saw it on Slashdot and I think it applies:

"Eschew obfuscation."


I wish I could attribute this, but it is just something I heard 30 years ago and it still seems applicable:

All programs have at least one bug remaining and can be optimized by one byte. Thus, by mathematical induction, all programs can be reduced to one byte. And it won't work.


The sooner you get behind in your work, the more time you have to catch up.

No idea of the source.


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


It is easier to optimize correct code than to correct optimized code.

Bill Harlan [1]

[1] http://billharlan.com/pub/papers/A\_Tirade\_Against\_the\_Cult\_of\_Performance.html


Java is like a variant of the game of Tetris in which none of the pieces can fill gaps created by the other pieces, so all you can do is pile them up endlessly.

-- Steve Yegge (2007, Codes Worst Enemy)


"Software is hard."

Donald Knuth


Requirements are like water. They're easier to build on when they're frozen.

-Anonymous


This is related to project management / Software design. I hope it has not been submitted.

"Designing software in a team is like writing poetry in a committee meeting." [ Joel Spolsky ]


Education is the process of learning more and more about less and less until one knows everything about nothing and is entitled to call oneself 'Doctor'


“Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.”

-- Alan Kay


Java is to JavaScript what Tea is to Teabagging.


You have to "solve" the problem once in order to clearly define it and then solve it again to create a solution that works.


A logician trying to explain logic to a programmer is like a cat trying to explain to a fish what it's like to get wet." - unknown


"Documentation is like sex. When it's good, it's fantastic. When it's bad, it's still better than nothing." - Unknown


Three things should never be seen in the process of being created: laws, sausage, and software. -- Source unknown to me

I have found that the reason a lot of people are interested in artificial intelligence is the same reason a lot of people are interested in artificial limbs: they are missing one. -- David Parnas


On the 7th day ... God began debugging.


Here are several I like that I didn't see above:

Get it right. Then get it fast.

Sentiment of Steve McConnell, whose book Code Compelte is one of the best out there on the topic of software development


If we can't fix it, then it ain't broke.

Debuggers motto, noted by John Bently in Programming Perls


Every truth passes through three stages before it is recognized. In the first, it is ridiculed, in the second it is opposed, in the third it is regarded as self-evident.

Arthur Schopenhauer 19th-century philosopher


Worry is a dividend paid to disaster before it is due.

Ian Fleming


Spare the integrity, spoil the data.

Mike Britten 20th-century programmer


Those who are enamored of practice without science are like a pilot who goes into a ship without rudder or compass and never has any certainty where he is going. Practice should always be based upon a sound knowledge of theory.

Leonardo da Vinci


The most successful software applications are never completed – they evolve with the enterprises they serve.

Daniel D. Corkill


Long ago, I put some quotes on the subject of "Good Programmers" over here [1]

My Absolute best: "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

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." - Antoine de Saint-Exupéry in Wind, Sand and Stars

[1] http://www.everything2.com/index.pl?node%5Fid=967077


"Fight code entropy." -- John Carmack


I keep a very long collection of my favorite programming quotes [1].

But I think that my favorite that has not been posted yet is:

"The cheapest, fastest, and most reliable components are those that aren't there." — Gordon Bell

[1] http://quotes.cat-v.org/programming/


"Go away or I will replace you with a very small shell script!"


"Any sufficiently advanced bug is indistinguishable from a feature." - Carl Franklin


"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." (Damian Conway from the book Perl Best Practices).


Good programmers learn more from "That's not what I expected!" than from getting it right the first time.


I don't know where it came from, but

2B | ~2B, that's FF


Computers are useless. They can only give you answers.

-Pablo Picasso

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

-H L Mencken


"When you want to do something differently from the rest of the world, it's a good idea to look into whether the rest of the world knows something you don't."

Read it in a forum somewhere so I don't know who coined it. But it's good!


Once in a while, there comes along something really new and truly innovative. Of all the machines I've seen, only Macintosh embodies that standard.

Bill Gates


Not really programming, but it is definitely relevant:

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


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

Bill Gates [1]

[1] http://en.wikipedia.org/wiki/Source%5Flines%5Fof%5Fcode#Disadvantages


If you require information, do not free memory containing the information. ... MSDN [1]

[1] http://msdn.microsoft.com/en-us/library/aa366701%28VS.85%29.aspx


"Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest."

--Isaac Asimov


"Simplicity is the ultimate sophistication." -- Leonardo da Vinci

I'm sure he didn't say it from a programmer's aspect but it definitely fits in..


Saying Java is better because of multi platforms is like saying anal sex is better because it works on all genders.

-- Origin unknown by poster


` The single back-quote


To iterate is human. To recurse divine! :)


corollary to Clarke's law:

Any technology distinguishable from magic is insufficiently advanced


Anything that can go wrong will go wrong, anything that can't go wrong will go wrong anyway


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

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." -Martin Fowler


"Code is never finished, only abandoned."

I don't know who said it first but it's based on Leonadro Da Vinci's quote:

"Art is never finished, only abandoned."


If debugging is the process of removing software bugs, then programming must be the process of putting them in” – Edsger Dijkstra


A programmer who can get a blonde is not a programmer enough!

--Suraj Chandran


Don't code today what you can't debug tomorrow


This one by Jamie Zawinski always made me laugh

Using these toolkits is like trying to make a bookshelf out of mashed potatoes


I don't know from where I got this but I like this one:

Software is like entropy. It is difficult to grasp, weighs nothing, and obeys the second law of thermodynamics; i.e. it always increases.


"The difference between theory and practice is larger in practice than it is in theory".


Don't fix it if it ain't broke presupposes that you can't improve something that works reasonably well already. If the world's inventors had believed this, we'd still be driving Model A Fords and using outhouses. (H. W. Kenton)


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


"Inside every complex program is a simple program trying to get out." - My Mentor


This one has to be on the list. Credits go to Darren Thomas wo posted it in the comments here [1].

There are 10 types of people. Those who can read ternary, those who can't and those who mistake it for binary.

[1] http://stackoverflow.com/questions/58640/great-programming-quotes#58645


Not sure of the origin but:

When you hear hoof beats, think horses, not zebras.


"Programs should be written to be read by humans, and to be accidentally executed by machines".

Rigth now I can't remember the author..


If you don't have time to fix it now, what on Earth makes you think you will have time to fix it later?

-- Bob Mannes (IT Operations Mgr, in response to programmers trying to put programs with known deficiencies into production in order to meet their project deadlines/milestones)


Nihilism:

while (true) {
return null;
}

How does a web design go straight to hell : http://theoatmeal.com/comics/design_hell [1]

[1] http://theoatmeal.com/comics/design%5Fhell


Whenever someone thinks that they can replace SSL/SSH with something much better that they designed this morning over coffee, their computer speakers should generate some sort of penis-shaped sound wave and plunge it repeatedly into their skulls until they achieve enlightenment.

Peter Gutmann [1]

[1] http://diswww.mit.edu/bloom-picayune/crypto/14238


Users are a terrible thing. Systems would be infinitely more stable without them.

From the book Release It! by Michael T. Nygard.


"If all you have is a hammer, everything looks like a nail"

"have" can be swapped for "know"; too many developers just repeat what they did last time without checking that it is the best solution to the new problem.


"Never trust a computer you can’t throw out a window." - Steve Wozniak


Real programmers don't need comments, the code is obvious!


"Our Program who art in Memory, Hello by Thy Name. Thy Operating System come, Thy Commands be done, at the Printer as it is on the Screen. Give us this day of our daily Data, and forgive us our I/O Errors as we forgive those whose Logic Circuits are faulty. Lead us not into frustration, and deliver us from Power Surges. For Thine is the Algorithm, The Application and the Solution, looping for ever and ever.

Return."

--

"If it doesn't work, change the documentation."

--

Q: Is there a UNIX FORTRAN optomizer? A: Yeah, "rm *.f"

--

"The reason that God was able to create the world in seven days is that he didn't have to worry about the existing configuration"


"on a clear disk you can seek forever"


Managing programmers is like herding cats.


If you can build it, your users can break it.


"I would change the world, but I don't have the source code" a programmer


“C is quirky, flawed and an enormous success.” - Dennis Ritchie


Hardware is the part of a system you can kick. Software is the one you can only curse at


"A Programmer is a device for turning coffee into code"

which is a variation of a quote from Paul Erdos

"A mathematician is a device for turning coffee into theorems."


In theory this should work.

--anonymous developer


"Good software, like wine, takes time." - Joel Spolsky


Few of the quotes from my collection (that I didn't see in the earlier answers):

Artificial Intelligence is no match for natural stupidity.

-Unknown

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

The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.

-Edsger Dijkstra

APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.

-Edsger Dijkstra

If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime.

-Unknown


WOMBAT: Works On My Box All the Time. -- Most of us, at some point in our careers


The best things are simple, but finding these simple things is not simple.


I don't know who said it originally, but

There's no such thing as temporary code.


"When I am 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." - R. Buckminster Fuller


My best effort:

"Software is either testable or detestable."


It's not specifically about programming, but it matches the way I often find myself debugging:

The definition of insanity is doing the same thing over and over and expecting a different result.

Attributed variously to, inter alia, Ben Franklin and Albert Einstein.


“If builders built buildings the way programmers write programs, then the first woodpecker that came along would destroy civilization.”

Weinberg’s Second Law


"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 W. Dijkstra


It was originally about warfare, but is no less true of building software:

“I have always found that plans are useless, but planning is indispensable.” - Dwight D. Eisenhower


I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.

--Linus Torvalds


Friend: "The problem with this code is it has far too many levels of misdirection"

Me: "don't you mean indirection?"

Friend: "I meant what I said"

I won't start a flame war by telling you which 3rd party library he was talking about.


If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.

-- Robert X. Cringely


Matthew Leffler:

You want a dot operator in PHP?

eval(str_replace('.', '->', $code_with_dot_operator))

“In a world without walls and fences, who needs Windows and Gates?”


"It's interface, not in your face"

[ Kai Krause ]

Read that one and it gave me a laugh and added it here since I couldn't find it.


There's a nice collection of quotes here:

Programming quotes [1]

[1] http://www.bobarcher.org/software/programming%5Fquotes.html


"Fixing Unix is easier than living with NT." - Jonathan Gilpin


No code is faster than no code. -- merb motto


WTF?!

Attributed to anybody ready anybody else's code.


I finally found a definition for "middleware". "Middleware" is the software nobody wants to pay for. - Chris Stone, President of the Object Management Group

Lamenting the difficulty of cost-justifying infrastructure software like CORBA.


"code that ALMOST works looks NOTHING like the code that ACTUALLY works."

http://bash.org/?696919


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?


UNIX is simple. But It just needs a genius to understand its simplicity. --Dennis Ritchie


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

-- Michael A. Jackson [1]

I must not prematurely optimize. Premature optimization is the mind-killer. Premature optimization is the little-death that brings total obliteration. I will face my desire to prematurely optimize. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the desire has gone there will be nothing. Only I will remain.

-- Samuel Tesla [2], with apologies to Frank Herbert [3]

[1] http://en.wikipedia.org/wiki/Optimization\_(computer\_science)#Quotes [2] http://blog.alieniloquent.com/2005/08/23/the-progammers-litany/ [3] http://www.quotationspage.com/quote/33089.html


Flame bait propagated by Slackware lovers:

If you know Red Hat you know Red Hat, If you know Slackware you know Linux.


If people aren't buying your obscure gadget, make it run on USB. Programmers will go wild.

-- Sleep Deprivation Ninja :)

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

-- Henry Spencere

The primary duty of an exception handler is to get the error out of the lap of the programmer and into the surprised face of the user. Provided you keep this cardinal rule in mind, you can't go far wrong.

-- Verity Stob

Good code is its own best documentation. As you're about to add a comment, ask yourself, 'How can I improve the code so that this comment isn't needed?' Improve the code and then document it to make it even clearer.

-- Steve McConnell Code Complete

Not originally intended for programming but fits:

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

-- Tom Stoppard


"A fool with a tool is still a fool." (I don't know who originated it, but I believe it is true)


Never trust a programer who can spel.


"Never attribute to malice that which can be adequately explained by stupidity" - Hanlon's Razor.

You'd think it wouldn't be applicable to programming until you start thinking about endless requirements changes from clients who don't know what they want, etc...


I can't find the exact quote, but Coco Chanel once said something along these lines:

Once you've dressed and before you leave the house, look in the mirror and take at least one thing off.

Yeah, it's Coco Chanel but it applies!


To Err is human, to Debug is Divine...


Half-knowledge is dangerous

Famous quote that applies to everything!


I am not an engineer, I am a software engineer.

:)


// TODO: or die

Helpful todo comment


Programmers do not die. They just gosub without return.

Unknown author.


You do not want to get a NotImplementedException when calling self.planeContainer.lowerLandingGear().

Bertrand Meyer, explaining the value of defining preconditions in Eiffel, over throwing runtime NotImplemented exceptions.


Occam's Taser: The simplest solution is often the most painful.

Don't remember where I heard it, but it describes my life well.


One must learn from design patterns, not the design patterns.


The function name should define everything the function does.


"Every revolutionary idea seems to evoke three stages of reaction: One, it's completely impossible. Two, it's possible, but it's not worth doing. Three, I said it was a good idea all along." - Arthur C. Clarke


One of my collegues had a great quote in french: "Tout nouveau développement contient au moins un bug. Toute correction de bug est un nouveau développement."

Which translates to "Every new development contains at least one bug. Every bug correction is a new development"

Where I work it sadly happens to be true...


One of my friends likes this very much:

Open source software only comes in one edition: awesome.


They really need some way to search through the answers for questions like this! LOL But here's my contribution...

"Make something fool-proof and someone will make a better fool." !!!

Syntactic sugar causes cancer of the semicolon


We don't have time to do it right, but we have time to do it twice.

Engineering slogan in one of the start-ups I worked for. I think the CTO was the source of it (at least in our company)


Two protons walked into a Black Hole.


Applies to a lot, but also to software:

Never on schedule, always on time


"Our software isn't released, it escapes leaving a bloody trail of testers behind it."

-- unknown author (only because I can't be bothered to look it up in google since the point here is to display the entertaining quote, and not in giving any kickback to the original author, because media in digital form are not realistically copyrightable.)


Jeff Atwood [1]:

The real money isn't in the software. It's in the service you build with that software.

[1] http://www.codinghorror.com/blog/archives/000842.html


Recently my colleague said

"When you write a good code, you take it from the parallel ideal universe, thereby coming nearer to it."

Not fun but very philosophical.


"Never change a running system." - widely spread. Well my interpretation is: "Never run a changing system."


Python: Programming the way Guido indented it ( Digital Creations T-shirt slogan at IPC9 [1])

[1] http://www.amk.ca/quotations/python-quotes/page-8


“The limits of my language mean the limits of my world”

Ludwig Wittgenstein [1]

[1] http://sg.answers.yahoo.com/question/index?qid=1006051728024


"Compatibility means deliberately repeating other people's mistakes."

and the often incompletely quoted...

"Any problem in computer science can be solved with another layer of indirection...but that usually will create another problem."

David Wheeler


Perilous to us all are the devices of an art deeper than that which we possess ourselves

J.R.R. Tolkien


[The common definition of estimate is] "An estimate is the most optimistic prediction that has a non-zero probability of coming true" . . .

Accepting this definition leads irrevocably toward a method called what's-the-earliest- date-by-which-you-can't-prove-you-won't-be- finished estimating.

Tom DeMarco (1982)


"Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end."

--Henry Spencer


If you don't have time to do something properly, you certainly don't have time to do it twice!


The manager's function is not to make people work, it is to make it possible for people to work. from "Peopleware: Productive Projects and Teams"


All programmers are optimists

Frederick Brooks, The Mythical Man-Month


If your software breaks, do you get to keep both pieces?


C++ is more of a rube-goldberg type thing full of high-voltages, large chain-driven gears, sharp edges, exploding widgets, and spots to get your fingers crushed. And because of it's complexity many (if not most) of it's users don't know how it works, and can't tell ahead of time what's going to cause them to loose an arm.

-- Grant Edwards

C: a language that combines all the elegance and power of assembly language with all the readability and maintainability of assembly language

-- Unknown


Selecting a project due date before the requirements are properly gathered is like selecting which corner you want to paint yourself into, while simultaneously negating the doorway as a viable option. - Chris Ames


Like a gas, software expands to fill its containing memory completely.


Quoting here the zen of python

$ python
>>> import this

The Zen of Python, by Tim Peters

Brought to you as is, unedited:

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than right now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!


“Computers are useless. They can only give you answers.” (Pablo Picasso)


"Rob say 'Code Monkey very diligent, but his output stinks. His code not functional or elegant, what does code monkey think' _codeMonkey think 'Maybe manager Rob want to write gosh darn log-in page him self."

Jonathan Coulton - Code Monkey. (song)

"Aperture Science, we do what we must because we can. For the good of all of us, except the ones who are dead. But there's no sense crying over every mistake, you just keep on trying 'till you run out of cake."

Jonathan Coulton & GlaDOS - Still Alive (song)


If you get it free, it is worthless. If you pay for it, is has value. If you build it yourself, it is priceless.

- Raj More

When a professional race car driver races, his pulse gets lower and he relaxes. When I code it is the same thing.

--Jun-ichiro Hagino


It's difficult to express the sorrow of losing code that you spent hours on, simply because you forgot to save...


The quality goes in after the code goes out.


Friend of mine: "Artificial Intelligence is a technic for making computers act like Paris Hilton."


C++ is to C as Lung Cancer is to Lung.


H.L. Mencken:

For every problem, there is a solution that is simple, elegant, and wrong.

George Neville-Neil:

People who think, "Oh this is a one-off," need to be offed, or perhaps politely removed from the project.

Conway's Law:

Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.

Charles Babbage:

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.


Rule 1. You can't tell where a program is going to spend its time. Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you've proven that's where the bottleneck is.

Rule 2. Measure. Don't tune for speed until you've measured, and even then don't unless one part of the code overwhelms the rest.

Rule 3. Fancy algorithms are slow when n is small, and n is usually small. Fancy algorithms have big constants. Until you know that n is frequently going to be big, don't get fancy. (Even if n does get big, use Rule 2 first.)

Rule 4. Fancy algorithms are buggier than simple ones, and they're much harder to implement. Use simple algorithms as well as simple data structures.

Rule 5. Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.

Rule 6. There is no Rule 6.

--Rob Pike


From Paul Graham's "On Lisp":

An ideal world is left as an exercise to the reader.


I like this one because, joking aside, it's often how things end up getting done. I don't know who said it but it stuck in my mind....

"Right. You lot start coding, I'll go and see what they want"


Alan Perlis's Epigrams on Programming [1] has some great ones:

"If you have a procedure with 10 parameters, you probably missed some."

"It is easier to write an incorrect program than understand a correct one."

"You can measure a programmer's perspective by noting his attitude on the continuing vitality of FORTRAN."

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

I love the guy because he was oppressively pessimistic about programming.

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


Here's one from American Gods by Neil Gaiman:

...Tell him that language is a virus and that religion is an operating system and that prayers are just so much f*ng spam.


What you’ve described, “The bottleneck in writing code isn’t in the writing of the code, it’s in understanding and conceptualising what needs to be done,” is common to all highly abstract programming languages. Writing Haskell, for example, involves an hour of meditation followed by the emission of a fold expression. - Jonathan Feinberg

The link to original is here [1]. You'll have to search down for it.

[1] http://www.vetta.org/2008/05/scipy-the-embarrassing-way-to-code/


"Complexity has nothing to do with intelligence, simplicity does." - Larry Bossidy.


C is to programming as Latin is to literature

I had just had the idea and found a nice way to word it, I don't know if someone already told something like this :D


Think of it this way: threads are like salt, not like pasta. You like salt, I like salt, we all like salt. But we eat more pasta.

-- Larry McVoy

from kernelnewbies fortune cookie


Inside every small program is a large program struggling to get out. -- C.A.R. (Tony) Hoare


I got two for you:

(1) Its not the size of the app but how you code it! (Rails Envy)

(2) A programmer never dies he just degrades gracefully ;-)


All real programmers know C of course -- Jeff Atwood

I'm not sure if he is the original author of this quote, but I heared it in episode 23 of the stackoverflow podcast.


Not strictly programming, but I find it often fits:

Good enough is neither.

-- Jim Spivey, though I don't know if he coined it

And speaking of fits, this one is surprisingly useful in many facets of life:

If it doesn't fit, make it fit.


When a manager I had was put under pressure by a client to throw more developers at a project to try and get it in under time he said;

"No matter how many men a woman sleeps with, it's still going to take her 9 months to have a baby"


Late but I'll try. Jon Bentley had one column composed of many quotes, but one sticks in my mind. IIRC it was from 1976.

"Use four digits. A new millenium is coming."


Keep It Simple Stupid

KISS [1]

[1] http://en.wikipedia.org/wiki/KISS%5Fprinciple


"Good Programmer code and Great reuse."

"Pick any three lines from my code and I will tell you from where they are coming and what they do."


Documentation is like sex: when it is good, it is very, very good; and when it is bad, it is better than nothing.


If you want to confuse your enemies, give them the source code. If you want to really confuse them, give them the documentation.


Good programmers invest the effort to learn how to use current practices. Not-so-good programmers just learn the buzzwords, and that’s been a software industry constant for a half century.

Boris Beizer


Some OOP jokes:


Q: What is the difference between an object methodologist and a terrorist? A: You can negotiate with the terrorist.


From comp.object: Q: How many object programmers does it take to screw in a lightbulb? A: None. You just send a change bulb message to the socket object!


Have you hear they are developing an OO version of COBOL? It's called "ADD ONE TO COBOL"


This is an object-oriented system: if we change anything, the users object.


// Definition of a Software professional in C++:

class cSoftwareProfessional
{
private:
double salary;
long   lunches;
float  jobs;
char   unstable;
void   work;

private:
UpdateSkills();
DownloadPictures();
ProcessH1();
GetVisa();

public:
PaintTheManagers();
FTP(); // FTP: Full Time Pass
SendMails();
ReceiveMails();
Send(Pictures);
Send(Jokes);
};

Processes and methodologies can make good servants but are poor masters

Mark Dowd, John McDonald & Justin Schuh in " The Art of Software Security Assessment [1]"

[1] http://rads.stackoverflow.com/amzn/click/0321444426


Simplicity is hard to build, easy to use, and hard to charge for. Complexity is easy to build, hard to use, and easy to charge for. — Chris Sacca [1]

[1] http://twitter.com/sacca/statuses/860432283


a quote from my prev. manager

- will it work on 19 inch monitor too

Write in C / Listen Here [1]

When I find my code in tons of trouble,
Friends and colleagues come to me,
Speaking words of wisdom:
"Write in C."

As the deadline fast approaches,
And bugs are all that I can see,
Somewhere, someone whispers:
"Write in C."

Write in C, Write in C,
Write in C, oh, Write in C.
LOGO's dead and buried,
Write in C.

I used to write a lot of FORTRAN,
For science it worked flawlessly.
Try using it for graphics!
Write in C.

If you've just spent nearly 30 hours
Debugging some assembly,
Soon you will be glad to
Write in C.

Write in C, Write in C,
Write in C, yeah, Write in C.
Only wimps use BASIC.
Write in C.

Write in C, Write in C
Write in C, oh, Write in C.
Pascal won't quite cut it.
Write in C.

Write in C, Write in C,
Write in C, yeah, Write in C.
Don't even mention COBOL.
Write in C.

[1] http://www.youtube.com/watch?v=J5LNTTGDKYo


Not sure if these were mentioned, however they come from this site [1]

  • Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.
  • Thou shalt check the array bounds of all strings (indeed, all arrays), for surely where thou typest "foo" someone someday shall type "supercalifragilisticexpialidocious".

[1] http://www.lysator.liu.se/c/ten-commandments.html


This is one that I came up with to use in my .signature, I believe it's original:

If you've seen one picture of the Mandelbrot Set [1], you've seen them all.

This was in response to the great number of calendars and coffee table books with pictures of fractals.

[1] http://en.wikipedia.org/wiki/Mandelbrot\_set


The third version is the first version that doesn't suck. -Mike Simpson


"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, writer and commentator (1919-)


Like wine, the mastery of programming matures with time. But, unlike wine, it gets sweeter in the process.

-Lawrence Mucheka


"C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off" - Bjarne Stroustrup


"I do not care if it works on your system, I am not gonna ship your computer."


"There is never enough time to do it right first time, but there is always time to go back and fix it when it breaks.."


This is missing from the list:

"Premature optimization is the root of all evil"

or...

"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." (Knuth, Donald. Structured Programming with go to Statements, ACM Journal Computing Surveys, Vol 6, No. 4, Dec. 1974. p.268.)


Amateur programmers think there are 1000 bytes in a kilobyte; Real Programmers know there are 1024 meters in a kilometer.


Intel giveth and Microsoft taketh away.

I have no idea who came up with it, although there was an interview with Gordon Moore where he quoted it himself.


A documented bug is not a bug; it is a feature. -- James P. MacLennan


Just saw this one:

"I'm not a great programmer; I'm just a good programmer with great habits." - Kent Beck


If you use copy and paste while you're coding, you're probably committing a design error.

-- David Parnas [1]

[1] http://en.wikipedia.org/wiki/David%5FParnas


Programming is not like being in the CIA; you don't get credit for being sneaky. It's more like advertising; you get lots of credit for making your connections as blatant as possible.

Steve McConnell on coupling from, "Code Complete."


it's not what the software does. it's what the user does. [1] -hugh macleod

[1] http://www.gapingvoid.com/Moveable%5FType/archives/003940.html


"Good programmers know what to write. Great ones know what to rewrite (and reuse)."

Eric Raymond


"The Free Lunch Is Over."

Herb Sutter


"When in doubt, leave it out" - Joshua Bloch


If architects built buildings the way programmers build programs, the first woodpecker to come along would destroy the whole civilization.

-- Gerald Weinberg


A computer scientist counts to ten: 0, 1, 2, 3, 4 ...

everyone else counts to ten: 1, 2, 3, 4, 5


Bolton College Lecturer 1988 (name forgotten)

To iterate is human, to recurse divine.


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

"Enlightened trial and error outperforms the planning of flawless intellects." David Kelly

"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

"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 Kernighan's .sig quote.

And two quotes from the Agile Manifesto:

"Working software is the primary measure of progress."

"Simplicity -- the art of maximizing the amount of work not done -- is essential."


Not sure how its ended up in my twitter favoites, but I think I saw this on proggit at some point:

"Simplicity is hard to build, easy to use, and hard to charge for. Complexity is easy to build, hard to use, and easy to charge for."

http://twitter.com/sacca/statuses/860432283


C trades a slap on the wrist at compile time for a knife in the back at run time. -- as far as I know, my C teacher in college (can't find in google)


Richard A. O'Keefe (from The Craft of Prolog, and before that, comp.lang.prolog):

Elegance is not optional.


"It makes no sense to try to do what we can. We must do what is necessary"

Winston Churchill (quoted from memory, may not be exact)


Can't locate the source. It describes C programming perfectly.

80 percent of my problems are simple logic errors. 80 percent of the remaining problems are pointer errors. The remaining problems are hard.


"Software isn't about methodologies, languages, or even operating systems. It is about working applications."

-- Christopher Baus


@ Unsliced [1]

Any sufficiently advanced magic is indistinguishable from a rigged demonstration.

Actually this one is:

Any sufficiently advanced technology is indistinguishable from magic

by Arthur C. Clarke

[1] #58672


... what society overwhelmingly asks for is snake oil. Of course, the snake oil has the most impressive names — otherwise you would be selling nothing — like "Structured Analysis and Design", "Software Engineering", "Maturity Models", "Management Information Systems", "Integrated Project Support Environments" "Object Orientation" and "Business Process Re-engineering" (the latter three being known as IPSE, OO and BPR, respectively).

Edsger W. Dijkstra — EWD 1175: The strengths of the academic enterprise [1]

[1] http://www.cs.utexas.edu/users/EWD/transcriptions/EWD11xx/EWD1175.html


Python's syntax succeeds in combining the mistakes of Lisp and Fortran. I do not construe that as progress.

-- Larry Wall

...and no, I do not agree.


"He who hasn't hacked assembly language as a youth has no heart. He who does as an adult has no brain." -- John Moore


“Any intelligent fool can make things bigger and more complex. It takes a touch of genius - and a lot of courage - to move in the opposite direction.” - E.F. Schumacher


If it doesn't have to work, we can do it real quick.

-- Watts Humphrey


If at first you don't succeed, try/catch, try/catch again.


“You want to enjoy life, don't you? If you get your job done quickly and your job is fun, that's good isn't it? That's the purpose of life, partly. Your life is better.

I want to solve problems I meet in the daily life by using computers, so I need to write programs. By using Ruby, I want to concentrate the things I do, not the magical rules of the language, like starting with public void something something something to say, "print hello world." I just want to say, "print this!", I don't want all the surrounding magic keywords."

Yukihiro Matsumoto, The Philosophy of Ruby [1]

[1] http://www.artima.com/intv/ruby.html


Software Engineering isn't rocket science ...

It's harder


"Powered by 110000001111111111101110"

-An email signature I saw once


"I do not fear computers. I fear the lack of them." -Isaac Asimov


Never underestimate the disparity between developer excitement and user apathy.

From this [1] great article.

[1] http://www.theregister.co.uk/2008/09/22/dziuba\_anti\_revolution/


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


Two strings walk into a bar. One says: "I'd like a beer pleas$$%~¬..3783u The other string says: "Sorry about my friend, he's not null-terminated."


On LOC: Lines of code are only worth counting, when times as come to delete them.

Rephrased from Warren' answer [1].

[1] http://stackoverflow.com/questions/184071/when-if-ever-is-number-of-lines-of-code-a-useful-metric#184078


Sure, it's overkill. But you can never have too much overkill...

A good programmer looks both ways before crossing a one-way street

Fatal exception at address: Ox13374A40. Press OK to continue.

The reason we plan ahead is so that we don't have to do anything right now


From Alan J. Perlis' "Epigrams in Programming"

A language that doesn't affect the way you think about programming, is not worth knowing.

A program without a loop and a structured variable isn't worth writing.

Simplicity does not precede complexity, but follows it.

In programming, as in everything else, to be in error is to be reborn.

Sometimes I think the only universal in the computing field is the fetch-execute cycle.

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

The eleventh commandment was "Thou Shalt Compute" or "Thou Shalt Not Compute" - I forget which.

Wherever there is modularity there is the potential for misunderstanding: Hiding information implies a need to check communication.

Symmetry is a complexity-reducing concept (co-routines include subroutines); seek it everywhere.

If you have a procedure with ten parameters, you probably missed some.


Run this in Python:

import this


Mosher's Law of Software Engineering:

Don't worry if it doesn't work right. If everything did, you'd be out of a job.


A quote from Richard Powers's novel, Plowing the Dark:

Code is everything I thought poetry was, back when we were in school. Clean, expressive, urgent, all-encompassing. Fourteen lines can open up to fill the available universe.

Definitly not one of the more common ones, but it expresses one of my main motivations behind studying Computer Science :-).


"I've never written the best code I've ever written."

Awesome quote from an old friend.


Another Nathaniel Borenstein one for me:

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

Particularly apropos considering some of the LHC doomsday hysteria this week...


I'm not sure who said it, but it goes something like this.

If your bug has a one in a million chance of happening, it'll happen next tuesday.

To sum up the meaning, computers operate so quickly, and large systems may have so many users, that even something with a very low occurrence rate would still happen quite often.


"We don't have time to plan. We only have time to execute."


"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. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures."

— Frederick P. Brooks Jr.


Artificial intelligence is no match for real stupidity.


"When I have a specific goal in mind and a complicated piece of code to write, I spend my time making it happen rather than telling myself stories about it."

  • Steve Yegge

"There is no programming problem that can't be solved with one more level of indirection." -- John McCarthy

"... or a couple more low-memory globals." -- Andy Hertzfeld

(Andy, if you never really said that, let me know...)

"If your hammer is C++, everything looks like your thumb." -- Scott Douglass


Only in wealth, there is room for a bad idea -- Jasper van der Meer


If P = NP, then the world would be a profoundly different place than we usually assume it to be. There would be no special value in “creative leaps,” no fundamental gap between solving a problem and recognizing the solution once it’s found. Everyone who could appreciate a symphony would be Mozart; everyone who could follow a step-by-step argument would be Gauss... — Scott Aaronson, MIT

The main argument in favor of P ≠ NP is the total lack of fundamental progress in the area of exhaustive search. This is, in my opinion, a very weak argument. The space of algorithms is very large and we are only at the beginning of its exploration. [. . .] The resolution of Fermat's Last Theorem also shows that very simply [sic] questions may be settled only by very deep theories. —Moshe Y. Vardi, Rice University

Being attached to a speculation is not a good guide to research planning. One should always try both directions of every problem. Prejudice has caused famous mathematicians to fail to solve famous problems whose solution was opposite to their expectations, even though they had developed all the methods required. —Anil Nerode, Cornell University


Good code is its own best documentation.


I don't understand why "you" can't get it to work. It works on "my" machine.

:This is a brilliant way to deflect criticism away from your own code and deflect the blame on the person finding the fault in your code/software.


Team debugging: the act of intimidating a PC into doing for two people what it refuses to do for one.


I stumbled upon this quote and I sympathize with it:

I get as much enjoyment from trashing code as I do from scratching it out in the first place!

credit: http://www.codeproject.com/KB/cs/PropertyWatch.aspx


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


It can scarcely be denied that the supreme goal of all theory is to make the irreducible basic elements as simple and as few as possible without having to surrender the adequate representation of a single datum of experience. -Albert Einstein

This has been requoted as "Everything should be made as simple as possible, but no simpler." but I've never seen where he was actually been documented as saying exactly that.

There are two facets of this quote that relate to software development and maintaining a balance between complexity and simplicity.

The key thing not to miss is "as simple as possible" or "without having to surrender the adequate representation of a single datum" means that sacrifices should not be made in the name of simplification which would result in over-simplification.

Never make a solution more complex because it feels more clever. Sometimes in the face of a deadline, it could also mean don't make something more complex trying to satisfy non-existent "what if" requirements. The "What if our [insert software used by 10 internal staff] goes commercial and we need to provide it in 20 different languages?" Reusability and generalization can be good, but there is a sweet spot of balance between the extra effort becoming wasteful, and the lack of effort creating future challenges.

There are those developers who sometimes don't completely feel out all the scenarios their software will encounter, and then there is the flip side where you have overly passionate developers that sometimes make things far more complex than necessary. Both of which have a lot to gain from this quote.


Francis Crick

"God is a hacker, not an engineer. You can do reverse engineering, but you can’t do reverse hacking.”


"All programming is an exercise in caching." - Terje Mathisen ( Found here [1])

[1] http://www.azillionmonkeys.com/qed/optimize.html


Linus Torvalds

Talk is cheap, show me the code !


There are 10 kinds of people -- those who understand binary and those who do not.


I think the collection under http://goit-postal.blogspot.com/2007/12/quotes-5-different-views-on-computers.html is fun (example: "Ted Nelson: Any fool can use a computer. Many do." or "Alan J. Perlis: There are two ways to write error-free programs; only the third one works.").


Real programmers don't document If it was hard to write, it should be hard to understand!


Niven's laws:

  • No technique works if it isn't used

  • Ethics change with technology

  • "F × S = k" the product of freedom and security is a constant


Here's a humorous, sarcastic one:

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.

Rick Cook, The Wizardry Compiled


"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." - Donald Knuth/C.A.R. Hoare

http://www.cookcomputing.com/blog/archives/000084.html

http://en.wikipedia.org/wiki/Optimization_(computer_science)

http://en.wikipedia.org/wiki/C._A._R._Hoare


In effect, we conjure the spirits of the computer with our spells.

From SICP.


"This is important, and a little hard to understand. English is useful because it's a mess. Since English is a mess, it maps well onto the problem space, which is also a mess, which we call reality. Similarly, Perl was designed to be a mess (though in the nicest of possible ways)." - Larry Wall " 2nd State of the Onion [1]", August 1998

[1] http://www.wall.org/~larry/onion/onion.html


You can have a negative percent chance of succeeding in a task. For example, if you have a -5% chance of succeeding, not only will you fail every time you make an attempt, you will also fail 1 in 20 times that you don't even try.


"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


"The road to wisdom? Well, it's plain And simple to express: Err and err and err again, but less and less and less." -- Piet Hein


"Hey, did someone turn off the database?"


"Rules are for the obedience of the inexperienced and the guidance of the wise." -- Author unknown

"There is a great satisfaction in building good tools for other people to use." - Freeman Dyson

"Process is no substitute for synaptic activity" - Jeff DeLuca


Found in some comments relating to an automated zip

// zip it, zip it good.

I'm just guessing that the people that downvoted this didn't get the reference to the Devo song called Whip It [1]

Oh well. :(

[1] http://www.youtube.com/watch?v=Xbt30UnzRWw


If I have not seen as far as others, it is because giants were standing on my shoulders.

-- Hal Abelson


Every dark corner you haven't explored with your flashlight is full of bugs.

Kent Beck and Martin Fowlere in Planning Extreme Programming, page127.


Make It Work Make It Right Make It Fast


Singleton is a misconcept in OOP unless it's used as a misconcepted paradigm for application development.

Unknown.


For all you family fathers/mothers out there:

"Anyone who has a wife and small kids knows that programming belongs to the easy things in life." -- me some minutes ago (inspired by a quote from John McEnroe)


The goal of Computer Science is to build something that will last at least until we've finished building it.


"Good web applications should look like trifle."

Cal Henderson - http://www.iamcal.com/


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


Back to home at the bus today, I thought this one:

The time machine's software will have a recursive main method.

I know it's horrible, but it stoned me for 2 seconds.


Behind Every Successful Coder, there'an even more successful De-Coder to understand that Code.


My all time favourite adaptation of Shakespeare:

0x2B || !0x2B


"All programs can be shortened by at least one line.

All programs contain at least one error.

All programs can be reduced to one line which is wrong!"


Here's one for the CSLA.Net [1] programmers, a twist on the catchprase of The Fast Show's ' Swiss Toni [2]'..

"Programming with the CSLA is like making love to a beautiful woman. First you have to check the IsDirty() flag"

- Dean Biggs

Still makes me chuckle :o)

[1] http://www.lhotka.net/cslanet/ [2] http://en.wikipedia.org/wiki/Swiss%5FToni


I always think about this one when I'm forced to work with FORTRAN

"In the good old days physicists repeated each other's experiments, just to be sure. Today they stick to FORTRAN, so that they can share each other's programs, bugs included."

-Edsger W.Dijkstra


Some day, someone will construct a list of 500 Great Programming Quotes, and this will be one of them.


Some programmers try to reach higher by standing on other programmers' shoulders. Other programmers try to reach higher by standing on other programmers' toes.

Don't know where I got it from.


We had a good one recently from one of our developers on staff:

If our customers wanted a product that worked that way, tell them to purchase a product that works that way.

I like it because it speaks towards the never ending list of requests from our customers, and how some customers have EXACTLY the opposite opinion of how another customer likes our software to work.

But without those picky customers, we wouldn't have a job... oh well...


Any problem in computer science can be solved with another layer of indirection. But that usually will create another problem.

David Wheeler


“It’s hardware that makes a machine fast. It’s software that makes a fast machine slow.”

– Craig Bruce


I love this one.

Did you write the case structure? If you did, please get your colleague to slap your head. If your colleague wrote it, please slap your colleague in the head. Preferably hard. That code is stupid and redundant.


Reiser, a French drawer once wrote this little chat :

  • Today's computers are amazing. Then can perform 20 billion calculations a second, making only one mistake every 10 billion calculations !

  • 2 screw up a second, so that's progress ?


If you're going to break it, then break it good. Break everything. Get to the very front of the line. Don't like move up a couple of slots. That's pointless.

--Anders Hejlsberg


If debugging is the act of removing bugs from software, than programming must be the act of putting them in.


Change is the only constant thing in Software Engineering.


There are only 10 kinds of people, those who understand ternary, those who don't and those who think it's binary


This one I saw written on advertising posters in coding competitions held in my univeristy, I don't know who coined it:

There are 10 types of people in this world: those who understand ternary, those who don't, and those who confuse it with binary.


The whole HTML validation exercise is questionable, but validating as XHTML is flat-out masochism. Only recommended for those that enjoy pain. Or programmers. I can't always tell the difference.

-Jeff Atwood


"You can write software expecting the hardware to be perfect, unfortunately hardware is not perfect and you have to fix it in code."

  • W. Giraud.

He was my mentor for FIRST Robotics, and this is absolutely true.


Once cut fails try awk, once awk fails do perl. Once perl sucks learn python. (Me, commenting on bash tips thread)


"A well-written program is its own heaven; a poorly-written program is its own hell."

From the TAO Of Programming

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


"Perspective is worth 80 I.Q. points" - Alan Kay


Arrogance in computer science is measured in nano-Dijkstras. - Alan Kay


In the JSR-296 "The intended audience for this snapshot is experienced Swing developers with a moderately high tolerance for pain. "

Gil Hova Reply :"Wait. There are Swing developers with low tolerances for pain?"

from : http://asserttrue.blogspot.com/2009/04/swing-versus-death-by-paper-cut.html


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.


In theory, theory and practice are the same; in practice, they are not.


Design bugs are often subtle and occur by evolution with early assumptions being forgotten as new features or uses are added to a system. —Fernando J. Corbató


Requirements are like water. They are easy to build on when they are frozen.


While tracking down a long running process, I found the offending line of code. The bad code had the following comment.

"Change so simple, no need to test."


Don't use web services to transfer data between databases located in the same room.

Some of the architects after realising failure of his provided architecture.


"No software survives contact with the users." ~ Me

FYI: Reworking of "No battle plan survives contact with the enemy" ~Field Marshall Helmuth Carl Bernard von Moltke


I am not smart I just screwed up first!

I am not smart I just stay with problems longer.


"Prematurely quoting someone else won't get you to the root of anything."

(Emphasis on "prematurely" here. The point in the Knuth quote this references is of course valid, but too often that quote is used to reflexively shoot down any question about performance. An intellectual curiosity about performance first principles is better than that kind of faux "wisdom", something I'm sure Knuth would agree with.)


"Be Jack of all you can be Master at any time and on any programming language"


Any sufficiently well-documented lisp program contains an ML program in its comments -- Unknown


"It compiles. Ship it!" -- anon.

"People who find Wiki-markup too difficult to use and need a WYSIWYG-editor shouldn't be using a Wiki in the first place." -- me


Fowler’s law is invoked when you have a penetrating insight into object-oriented programming.

If the quality of your insight is very high, you realise that Martin Fowler published the idea only five years ago. If the idea is poor, you realise that he published your idea more than 10 years ago…

-- No More Hacks [1]

[1] http://nomorehacks.wordpress.com/2009/08/25/fowlers-law/


j++; // increment j


One Page Principle: A specification that will not fit on one page of 8.5x11 inch paper cannot be understood. -- Mark Ardis


Here are a couple that aren't directly programming-related but fit nicely anyway :

I love deadlines, I love the whooshing noise they make as they go by.

Douglas Adams

This one is of unknown origin but I find it funny:

Jesus saves but only Buddha makes incremental backups.

This one really isn't programming related, but programmers certainly know what it means anyway:

Writing about music is like dancing about architecture.

Frank Zappa

Then you think about that pointy haired boss, or your lost job, or your ailing startup and you get this one for you :

Dope will get you through times of no money better than money will get you through times of no dope.

Freewheelin' Franklin


If you have a source do any thing.


"Simplicity is bliss"

"They won't tell you that they don't understand it; they will happily invent their way through the gaps and obscurities" -- V.A. Vyssotsky on software programmers and their views on specifications

"I love deadlines... I like the whoosing sound they make as they pass by" -- Douglas Adams


Software with no bugs is obsolete


Compared to Java code, XML is agile and flexible. Compared to Python code, XML is a boat anchor, a ball and chain.

-- PJ Eby, " Python Is Not Java [1]"

[1] http://dirtsimple.org/2004/12/python-is-not-java.html


Never Base a Technical Decision on Political Issues

and

Never Base a Political Decision on Technical Issues

-Geoffrey James


Computer programmers don't byte, they nibble a bit


The Knuth, the whole Knuth, and nothing but the Knuth, so help me Codd! -- don't know where I heard this, but I laughed.


Not sure where I heard this one, but it's stuck with me:

Think first; code later.

I also love this one by Aasimov:

Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest.

And Richard Feynmann (though it wasn't necessarily about software):

What I cannot create, I do not understand.


Concerning optimization:

A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away. - Antoine de Saint-Exupéry

In software, the most beautiful code, the most beautiful functions, and the most beautiful programs are sometimes not there at all. - Jon Bentley, Beautiful Code (O'Reilly), "The Most Beautiful Code I Never Wrote"


"There is the way we teach you to program in class and the way it's done in the real world. do it the way we teach you if you want to pass."


"Real programmers don't unit test."


If it is worth doing once, it is worth automating...


LISP: To call a spade a thpade

Karl


Not sure who this is attributable to:

"Assumption is the mother of all f***ups".

As simple as that: Assume nothing. Investigate everything. Ask people around you to find out the qualified answer. Do not assume - instead, verify.

This is the foundation for so many of the other bits of wisdom you'll find posted here.


"Beware of computer scientists with screwdrivers." --Unknown source


"Computers enable us to in thirty minutes what we never would have had to do before."


Nail here for a new monitor [x]


Don't code today what you can't debug tomorrow.


Let's not forget common help-desk terms...

  • PEBKAC - Problem Exists Between Keyboard and Chair

and the frequent sister to PEBKAC

  • I-D-10-T Error

"The enemy of Great Code, is 'Good Code.'" - Unknown


Comments? Documentation? Don't they call it code for a reason?


"Anything that can go wrong, will go wrong." -- Murphy's Law


I love deadlines. I especially like the whooshing sound they make as they go flying by. (Douglas Adams).

Tell me what you need and I'll tell you how to get along without it. (Unknown)

The 50-50-90 rule: Anytime you have a 50-50 chance of getting something right, there's a 90% probability you'll get it wrong. (Unknown)

Latest survey shows that 3 out of 4 people make up 75% of the world's population. (Unknown)

Documentation is like sex: when it is good, it is very, very good; and when it is bad, it is better than nothing. -- Dick Brandon

The whole point of getting things done is knowing what to leave undone. (Oswald Chambers)

To error is human, to fix it - divine. (Maxim Veksler)

I'll try to be nicer if you try to be smarter (Assaf Nitzan)

When debugging, novices insert corrective code; experts remove defective code. ~Richard Pattis

When a programming language is created that allows programmers to program in simple English, it will be discovered that programmers cannot speak English. ~Author Unknown

One man's constant is another man's variable. ~Alan J. Perlis

Ready, fire, aim: the fast approach to software development. Ready, aim, aim, aim, aim: the slow approach to software development. ~Author Unknown

Programming is like sex. One mistake and you have to support it for the rest of your life. ~Michael Sinz

From a programmer's point of view, the user is a peripheral that types when you issue a read request. ~Peter Williams

Programmer - an organism that turns coffee into software. ~Author Unknown

Attribute goes to our bugzilla quips collection, and to the authors among them yours humble.


From the Tao Of Programming [1] :

Though a program be but three lines long, someday it will have to be maintained.

[1] http://www.canonical.org/~kragen/tao-of-programming.html


"Great things are not done by impulse, but by a series of small things brought together." -- Vincent Van Gogh --

It is what we do..


Marick’s Law [1]: When it comes to code it never pays to rush.

[1] http://blog.objectmentor.com/articles/2008/11/29/discipline-reminder


"True glory consists in doing what deserves to be written; in writing what deserves to be read." - Pliny the Elder


If builders built as programers program, the first woodpecker that came along would destroy the civilization.


“First, solve the problem. Then, write the code.” (John Johnson)


Check out my site: http://www.SoftwareQuotes.com - it has an excellent selection of quotations about software development.

Some good quotes from the website:

"Don’t fix bugs later; fix them now." - Steve Maguire

"A well-written program is its own heaven; a poorly-written program is its own hell." - Geoffrey James

"Blame doesn't fix bugs." - Anonymous

"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


"If it wasn't for C, we'd be writing programs in BASI, PASAL, and OBOL."

"I will not be a lemming and follow the crowd over the cliff and into the C." John (Jack) Beidler

"The C Programming Language — A language which combines the flexibility of assembly language with the power of assembly language."

"C(++) is a write-only, high-level assembler language." Stefan Van Baelen


"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


-- Why did you call them "beta"? -- Uhh... 'coz they're beta than nothin'


CLASSIFICATION OF SOFTWARE ERRORS:

Requirement wrong Requirement changed Requirement vague Requirement missing

Code design not to requirement

Code not to design

Interface error Sequence error Merge of branch failed

Arithmetic/logic error

Initialization/off-by-one

Dynamic allocation Wrong argument

Not a Problem Duplicate

  • Bug in tool
  • Feature
  • RTFM
  • Ooops
  • Ooops I did it again

"No! JavaScript isn't Java!" Ash Hegab


There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton


Couldn´t find that one here so I will add it.

99% of the problems with a computer, programm, or code are located between keyboard and chair

It helps me writing code because I am trying to find the problem on my side first before I blame someone/something else.


Programming today is a race between software engineers 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 ===


Don't comment your code ... if it was hard to write ... it's going to be hard to read!

-unknown


I don't remember where I read it, but it went something like this: (about fixing bugs)

"Novice programmers add corrective code. Seniore programmers remove defective code."


Don't expect many comments. This code was hard to write, it should be hard to read.

(in assembly task switching routine)


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

--Maurice Wilkes


I've been keeping a list for quite some time using Google Notebook: Software Thoughts [1]

There's a good quote that has not been mentioned here yet:

(Peter) Norvig's law: Any technology that surpasses 50% penetration will never double again (in any number of months).

[1] http://www.google.com/notebook/public/01415928852966772493/BDRdQSwoQ5Jit8LMh


As my father used to say:

"In the land of the blind, the one-eyed man is king."

I find this quote useful in general when dealing with complex problems...


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

-- Dennie van Tassel


There is not now, nor will there ever be, a language in which it is the least bit difficult to write bad code.

Lawrence Flon


Change causes problems


What happens in the mind of a fine artist is nothing different from that going on in the mind of an expert coder. Both see and thrive in the quintessential nature of patterns.

-Lawrence Mucheka


Remember the original question said nothing about the quotes having to be funny:

"If it ain't broke, don't fix it" -- anonymous


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 Kernighan


Difficult to code, impossible to maintain.


If you don't think you're doing great things, you're probably right.


Never comment your code - if it was hard to write, it should be hard to understand. -Anonymous


"When you can measure what you are speaking about, ... you know something about it; but when you cannot measure it, ... your knowledge is of a meager and unsatisfactory kind..." —Lord Kelvin


"Programming in TSO is like kicking a dead whale down the beach" - Ken Thompson


Don't know who said it and if the quote is 100% correct (maybe someone can help) but here goes...

"Development has two outputs... Code & Bugs"


Everything is computable!


I have one:

Don't loose your knowledge with a lot of information.


  • Will work for bandwith

Altered version, the popular:

  • Will code HTML for food.

"Errors, like straws, upon the surface flow; He who would search for pearls must dive down below."

John Dryden


Not really programming, but I also like:

I think there's a world market for about five computers

(attr. Thomas J Watson Senior, 1945)


There's more than one way to do it

Larry Wall about Perl


There is no problem in computer science that cannot be solved by another layer of abstraction... -- Dave Marples


"Try It Now...."

another anonymous programmer


" high cohesion and low coupling [1]", I have no idea originally said it, but its so true.

[1] http://en.wikipedia.org/wiki/Coupling\_(computer\_science)


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 [1] accidents [2].

-Nathaniel Borenstein

[1] http://www.wired.com/software/coolapps/news/2005/11/69355 [2] http://www.xs4all.nl/~carlkop/moi.html


There is always one more bug!


Very old one:

Real programmers do: copy con program.zip


"The first time God created the world, it became a total mess. So God scraped the whole thing and started again, and the big thing we learn is that after six days, God shipped." - Dan Bricklin


This quote directly from The Six Dumbest Ideas in Computer Security [1] - I'm sure it's been stated by others in other similar terms... A lesson for the managers:

"It is often easier to not do something dumb than it is to do something smart."

[1] http://www.ranum.com/security/computer\_security/editorials/dumb/


Jamie Zawinski:

Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.


"As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications." -- Dave Parnas


When behaviour can be adequately explained by incompetence, it is pointless to assume a conspiracy


The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.

  • Edsger Dijkstra

Not my favorite, but I like it as well and it wasn't posted so far:

``The great thing about mod_rewrite is it gives you all the configurability and flexibility of Sendmail. The downside to mod_rewrite is that it gives you all the configurability and flexibility of Sendmail.''

-- Brian Behlendorf
Apache Group

Do or do not; there is no "try".

-- Yoda

Oh yes there is.

-- James Gosling (unless I just made that up)


"The goal is to deliver clean code that works -- now." -- Kent Beck


"...basically, avoid comments. If your code needs a comment to be understood, it would be better to rewrite it so it's easier to understand." - Rob Pike, "Notes on Programming in C" [1], February 21, 1989

A lot of code would be better if programmers kept this creed. Comments are all too often a crutch for bad code. And, of course, if your code is easy to understand sans comments, there is no risk of the comments and the code diverging.

[1] http://www.lysator.liu.se/c/pikestyle.html


Launch crap. But launch!


If it was hard to make, it has to be just as hard to use. (Loosely translated from Danish).


I have 3 quotes to offer:

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

"Intellectuals solve problems; geniuses prevent them." - Albert Einstein

Three Rules of Work:

  1. Out of clutter find simplicity
  2. From discord find harmony
  3. In the middle of difficulty lies opportunity.

-Albert Einstein


The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.

Dijkstra

If you don't fail at least 90 percent of the time, you're not aiming high enough.

Alan Kay


it works on my machine


I believe the hard part of building software to be 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 to the conceptual errors in most systems. If this is true, building software will always be hard. There is inherently no silver bullet.

From The mythical man-month


Lisp programmers know the value of everything and the cost of nothing


There is always one more bug - Lubarsky's Law of Cybernetic Entomology


Here is mine

Meet the deadline and we'll get another client!


Niklaus Wirt gave a talk at my school and told one of his jokes -- Europeans call him by name ("Nik-lous Vert"), while Americans call him by value ("Nickle's Worth").


Web Development is a lot like kickboxing: You have to watch your cookies


The source is the documentation.


A programmer that is 10 times better than another will probably be happy making only 3 times as much - Paul Graham


The programming language [abc] was invented so that any idiot could program a computer, and, as a result, many do. (Unknown author)

Plus a variant of the Omnipotence Paradox:

Can God write a Program so complex that He cannot debug it?


Any problem in computer science can be solved with another layer of indirection. But that usually will create another problem. -- David Wheeler


Re: analyzing requirements.

"Never always; rarely never."


We reject kings, presidents and voting. We believe in rough consensus and running code.

-- David Clark

Be conservative in what you send and liberal in what you accept.

-- John Postel


The function of good software is to make the complex appear to be simple.


The future will be like the past, because in the past the future was like the past.

(can't remember the author)

Especially true in estimation scenarios and in any situation where you act as if you had a crystal ball. Rings a bell? :-)


<pengvado> making an alpha product into final is easy
<pengvado> the hard part is adding features so that it stays alpha

I've collected a whole lot of Bash-like programming-related quotes from a certain developer here [1]. Some may be amusing.

[1] http://mirror05.x264.nl/Dark/loren.html


Everything always takes twice as long and costs four times as much as you planned.


There's a fine line between being on the leading edge and being in the lunatic fringe. - Frank Armstrong


Something like '640K (bytes RAM) ought to be enough for anybody' :)) (Bill Gates)


It's not entirely a programming quote but it's still a classic: "VAXen, my children, just don't belong some places". (Jack Harvey, 1989)


In computer science, we stand on each other's feet. -- Brian K. Reid -- Holton, Gerald


[...] and the three of us spent one afternoon a week working, talking, and drinking beer at Dijkstra's house. The algorithm emerged from one of those afternoons. I think I was its primary author, but as I mention in the paper, the beer and the passage of time made it impossible for me to be sure of who was responsible for what.

Leslie Lamport, on his paper about proving the correctness of multiprocess programs [1].

[1] http://research.microsoft.com/en-us/um/people/lamport/pubs/new-approach.pdf


Life is like a set of development methodologies, there is always more than 1 way of doing it.


Software isn't the only kind of structure that changes over time.


There is no royal road to geometry.

Euclid [1]

[1] http://en.wikiquote.org/wiki/Euclid


Completly happiness is utopic, but getting paid for doing some lines of "only you know what" it's almost the the same. The problem arises when neither you know what these lines were for! :)


About Documentation:

Use the force: read the code!


from Larry Wall in Perl manpage

Perl is at the mercy of your machine's definitions of various operations such as type casting, atof() and sprintf(). The latter can even trigger a coredump when passed ludicrous input values.


"All your base are belong to us!"


Application written in Java is Platform independent but Version dependent

This quote came from our Manager because Java is not backward compatible and so Application running on 1.5 needs to be port at client side on java 1.5 only and if it is ported on java 1.6 than it would not run properly and would get some wierd things happening.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment