10 types of people

There are only 10 types of people in the world: those who understand binary and those who don’t.


A big gap

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

Randy Stross

A black art

Considering the current sad state of our computer programs, software development is clearly still a black art, and cannot yet be called an engineering discipline.


A deeper art

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

J.R.R. Tolkien

A good programmer

A good programmer is someone who always look both ways before crossing a one-way street.


A great team

You can’t have great software without a great team, and most software teams behave like dysfunctional families.

Jim McCarthy

A perfect match

A computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are, in short, a perfect match.

Bill Bryson

A quality money can’t just buy

Almost anything in software can be implemented, sold, and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars. But there is one quality that cannot be purchased in this way — and that is reliability. The price of reliability is the pursuit of the utmost simplicity. It is a price which the very rich find most hard to pay.

Tony Hoare

A smart terminal

A smart terminal is not a smartass terminal, but rather a terminal you can educate.

Rob Pike

Accurate estimations

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

Douglas Hofstadter


If a kid is addicted to a computer, I think that’s far better than watching TV, because at least his mind is making choices.

Bill Gates

Adding a feature

The cost of adding a feature isn’t just the time it takes to code it. The cost also includes the addition of an obstacle to future expansion. […] The trick is to pick the features that don’t fight each other.

John Carmack

Adding bugs

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

Edsger Dijkstra

Adequacy and excellence

Creating computer software is always a demanding and painstaking process — an exercise in logic, clear expression, and almost fanatical attention to detail. It requires intelligence, dedication, and an enormous amount of hard work. However, a certain amount of unpredictable and often unrepeatable inspiration is what usually makes the difference between adequacy and excellence.


Allocating memory

All you have to do is call free() slightly less often than malloc(). You may want to examine the Solaris system libraries for a particularly ambitious implementation of this technique.

Eric O’Dell

Another level of indirection

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

David Wheeler


Computers are useless. They can only give you answers.

Pablo Picasso

Any idiot could write it

Things which any idiot could write usually have the quality of having been written by an idiot.

Bram Cohen

Array indices

Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.

Stan Kelly-Bootle


In computer science, arrogance is measured in milli-Dijkstras.

Alan Kay

Artificial intelligence

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

Bad and good programmers

Bad programmers worry about the code. Good programmers worry about data structures and their relationships.

Linus Torvalds

Bad code

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.


Bad comments

Bad comments are like bad sex. It may not be great, but it’s better than nothing at all.


Bad habits

Compulsive caching or pre-calculation of answers when the questions aren’t performance intensive is a bad habit.

Donald Knuth

Bad programs

While it is possible to write bad programs in any language, in C it is absolutely required.



Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway.

Andrew S. Tanenbaum

Batteries included

A language that doesn’t have everything is actually easier to program in than some that do.

Dennis Ritchie

Beautiful solutions

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

Being exact

There’s no sense being exact about something if you don’t even know what you’re talking about.

John von Neumann

Bells and whistles

Are you quite sure that all those bells and whistles, all those wonderful facilities of your so called powerful programming languages, belong to the solution set rather than the problem set?

Edsger Dijkstra


There are two major products that come out of Berkeley: LSD and UNIX. We don’t belive this to be strictly by coincidence.

Jeremy S. Anderson

Best practices

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


Beware of bugs

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

Donald Knuth


I have an ugly tendency to blame all my failings on others. It’s something I picked up from my parents.

Matt Wedel


It is a painful thing to look at your own trouble and know that you yourself and no one else has made it.


Blind faith

I don’t wish to be without my brains, tho’ they doubtless interfere with a blind faith which would be very comfortable.

Ada Lovelace

Brute force

When in doubt, use brute force.

Ken Thompson


They don’t make bugs like Bunny anymore.

Olav Mjelde

Bytes and bits

Two bytes meet. The first byte asks, «Are you ill?» The second byte replies, «No, just feeling a bit off».


C and C++

C lets you easily shoot in your foot, C++ lets you reuse the bullet.


Can’t do

I am always doing that which I cannot do, in order that I may learn how to do it.

Pablo Picasso

Can’t possibly go wrong

The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that, when a thing that cannot possibly go wrong goes wrong, it usually turns out to be impossible to get at or repair.

Douglas Adams

Cause and solution

I’m a programmer. People seem to think I can fix their computer problems. I guess they never wonder where those problems came from.


Changing a light bulb

  • How many programmers does it take to change a light bulb?
  • None: it’s a hardware problem.


Changing the world

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


Chaotic XML

XML is like violence. Sure, it seems like a quick and easy solution at first, but then it spirals out of control into utter chaos.


Clean and nice programs

The cleaner and nicer the program, the faster it’s going to run. And if it doesn’t, it’ll be easy to make it fast.

Joshua Bloch

Clever tricks

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.

Edsger Dijkstra


A camel is a horse designed by committee.

Alec Issigonis


Search all the parks in all your cities; you’ll find no statues of committees.

David Ogilvy


The three C’s of software engineering are: Communication, Communication and Communication. Projects hardly ever fail due to technical problems.



Compatibility means deliberately repeating other people’s mistakes.

David Wheeler

Complete code

The code is 100% complete, it just doesn’t work yet.


Complex problems

Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.

Laurence J. Peter

Complexity and beauty

Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defence against complexity.

David Gelernter

Complexity and sophistication

Increasingly, people seem to misinterpret complexity as sophistication, which is baffling — the incomprehensible should cause suspicion rather than admiration. Possibly this trend results from a mistaken belief that using a somewhat mysterious device confers an aura of power on the user.

Niklaus Wirth

Complexity kills

Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges and it causes end-user and administrator frustration.

Ray Ozzie

Computer errors

Behind every computer error there is at least two human errors, one of which is blaming the computer.


Computer science

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

Edsger Dijkstra

Computer scientists

Mathematicians stand on each others’ shoulders and computer scientists stand on each others’ toes.

Richard Hamming

Computing sins

More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any other single reason — including blind stupidity.

William Wulf


That which CAN be configured, MUST be configured.



A foolish consistency is the hobgoblin of little minds, adored by little statesmen and philosophers and divines.

Ralph Waldo Emerson


Constraints are not limitations; they are insight.

Steve Sanderson


Correctness is clearly the prime quality. If a system does not do what it is supposed to do, then everything else about it matters little.

Bertrand Meyer

Cost and time

Any given program costs more and takes longer.



I have no special talents. I am only passionately curious.

Albert Einstein

Data structures

A data structure is just a stupid programming language.

Bill Gosper


Databases are details to be hidden. They are not your central abstraction, nor are they the core of your application.

Robert C. Martin


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

Douglas Adams


Naturally, a tool for getting rid of bugs in your program is called a «debugger». Mudanely enough, the corresponding tool for putting bugs into your program is called a «programmer».

Simon Cozens


Debugging is damnably troublesome work, and plagues me.

Ada Lovelace

Debugging time

Debugging time increases as a square of the program’s size.

Chris Wenham

Debugging tools

The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.

Brian Kernighan


Debugging: removing the needles from the haystack.


Designing perfection

In design, 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

Development time

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


With diligence it is possible to make anything run slowly.

Tom Duff

Distributed systems

A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.

Leslie Lamport

Do it both ways

If you aren’t sure which way to do something, do it both ways and see which works better.

John Carmack

Doing lots of things

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


When in doubt, leave it out.

Joshua Bloch

Easy to use

I have always wished that my computer would be as easy to use as my telephone. My wish has come true. I no longer know how to use my telephone.

Bjarne Stroustrup


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

Eric S. Raymond

Enough eyeballs

Given enough eyeballs, all bugs are shallow.

Eric S. Raymond

Enough time

If you don’t have time to do it right, you better have time to do it over.


Error-free programs

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

Alan Perlis


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


Fashion is something barbarous, for it produces innovation without reason and imitation without benefit.

George Santayana

Faster code

No code is faster than no code.

Ezra Zygmuntowicz

Faster mistakes

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

Mitch Ratcliffe

Finished software

Software is finished when the last person stops using it.


Fixing problems

The trick is to fix the problem you have, rather than the problem you want.

Bram Cohen

Formulating questions

Comparing to another activity is useful if it helps you formulate questions, it’s dangerous when you use it to justify answers.

Martin Fowler


FORTRAN is not a flower but a weed — it is hardy, occasionally blooms, and grows in every computer.

Alan Perlis

Forward thinking

Forward thinking was just the thing that made multics what it is today.

Erik Quanstrom


Software is like sex. It’s better when it’s free.

Linus Torvalds


Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.

Linus Torvalds

Funny hardware

Never attribute to funny hardware that which can be adequately explained by broken locking.

Erik Quanstrom

Game design

Design games for yourself, but pretend like you’ve never seen the game before, so make it intuitive.

Markus Persson

Generic programs

Any program that tries to be so generalized and configurable that it could handle any kind of task will either fall short of this goal, or will be horribly broken.

Chris Wenham


Everyone is a genius, but if you judge a fish on its ability to climb a tree, it will live its whole life believing it is stupid.

Albert Einstein

Getting things done

The whole point of getting things done is knowing what to leave undone.

Oswald Chambers

Giants and midgets

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


«Infinitely extendable API» roughly translates as «we can’t live without API bloat». Frankly, judging by the codebase, people who designed GNOME are culturally incompatible with UNIX.

Alexander Viro

Good code

If you can’t write a good code, at least make it looks good.

Bill Gates

Good code

Good code is short, simple, and symmetrical — the challenge is figuring out how to get there.

Sean Parent

Good comments

It is only a slight exaggeration to say that every good comment in a program represents a small failure of the language.

Charles Simonyi

Good design

Good design adds value faster than it adds cost.

Tom Gale

Good ideas

A good way to have good ideas is by being unoriginal.

Bram Cohen

Good names

The most important thing in a programming language is the name. A language will not succeed without a good name. I have recently invented a very good name, and now I am looking for a suitable language.

Donald Knuth

Good programmers

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

Martin Fowler

Halloween and Christmas

Real programmers always confuse Halloween and Christmas because Oct 31 equals Dec 25.


Handling exceptions

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


Haskell is faster than C++, more concise than Perl, more regular than Python, more flexible than Ruby, more typeful than C#, more robust than Java, and has absolutely nothing in common with PHP.

Audrey Tang

Hateful computers

That’s the thing about people who think they hate computers. What they really hate is lousy programmers.

Larry Niven and Jerry Pournelle

Have you tried turning it off and on again?

I remarked to Dennis [Ritchie] that easily half the code I was writing in Multics was error recovery code. He said, «We left all that stuff out [of Unix]. If there’s an error, we have this routine called panic, and when it is called, the machine crashes, and you holler down the hall: Hey, reboot it

Tom Van Vleck


Bugs that go away by themselves come back by themselves.

Pete Becker


I think Microsoft named .Net so it wouldn’t show up in a Unix directory listing.



For a sucessful technology, honesty must take precedence over public relations for nature cannot be fooled.

Richard Feynman

HTML validation

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

IDE features

Integrated development environment features are language smells.

Reg Braithwaite


Programming: when the ideas turn into the real things.

Maciej Kaczmarek

Idiocy disallowed

Languages that try to disallow idiocy become themselves idiotic.

Rob Pike

Imagination and knowledge

Imagination is more important than knowledge. For knowledge is limited, whereas imagination embraces the entire world, stimulating progress, givin birth to evolution.

Albert Einstein


Imagination is the Discovering Faculty, pre-eminently. It is that which penetrates into the unseen worlds around us, the worlds of Science.

Ada Lovelace


One man’s constant is another man’s variable.

Alan Perlis

Implicit environments

The problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.

Joe Armstrong


In my egotistical opinion, most people’s C programs should be indented six feet downward and covered with dirt.

Blair Houghton

Infinite monkeys

If you put an infinite number of monkeys hitting keys at random on typewriters, eventually one will bash out the complete works of William Shakespeare.



Two things are infinite: the universe and the stupidity of mankind. However, I am not so sure yet with the universe.

Albert Einstein

Intelligent fools

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

Albert Einstein

Java and XML

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

Scott Bellware


Programming is like juggling; the problem is that the balls go where you throw them.



To me, programming is more than an important practical art. It is also a gigantic undertaking in the foundations of knowledge.

Grace Hopper

Knowledge and wisdom

Knowledge is knowing that a tomato is a fruit; wisdom is knowing not to put it in a fruit salad.

Brian O’Driscoll


There is much pleasure in useless knowledge.

Bertrand Russell


Languages shape the way we think, or don’t.

Erik Naggum

Learning Perl

If you start programming by learning perl you will just become a menace to yourself and others.

Egon Casteel

Learning to program

Learning to program has no more to do with designing interactive software than learning to touch type has to do with writing poetry.

Ted Nelson


It’s a curious thing about our industry: not only do we not learn from our mistakes, we also don’t learn from our successes.

Keith Braithwaite

Life support

Programming is like sex, one mistake and you will support it for life.


Lines of source code

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

Bill Gates

Linux sysfs

I’ve wondered whether Linux sysfs should be called syphilis.

Charles Forsyth


Linux is only free if your time is worthless.


Lisp programs

Any sufficiently well-documented lisp program contains an ML program in its comments.



Lisp isn’t a language, it’s a building material.

Alan Kay


There is no place like


Low level

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

Alan Perlis


Every methodology I’ve come across has, at its kernel, a very small section labelled «Do magic here».

Katie Lucas

Mail me maybe

The Law of Software Envelopment: Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.

Jamie Zawinski

Maintaining your code

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

John F. Woods

Making the world a better place

Computers are about making life easier in much the same way that the Republican party is about fiscal responsibility and a culture of life.

Russell Borogove


Adding manpower to a late software project makes it later.


Memory expansion

Software obeys the law of gaseous expansion — it continues to grow until memory is completely filled.

Larry Gleason

Microsoft and internet

If Microsoft had developed Internet, we could not ever see the source code of web pages. HTML might be a compiled language then.


Mind crippling

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

Edsger Dijkstra

Mind reading

Computers are good at following instructions, but not at reading your mind.

Donald Knuth


If you think it’s simple, then you have misunderstood the problem.

Bjarne Stroustrup

Modern computing

Such is modern computing: everything simple is made too complicated because it’s easy to fiddle with; everything complicated stays complicated because it’s hard to fix.

Rob Pike

Monday’s code

Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday’s code.

Dan Salomon


An organisation that treats its programmers as morons will soon have programmers that are willing and able to act like morons only.

Bjarne Stroustrup

New features

The latest new features in C++ are designed to fix the previously new features in C++.

David Jameson

New technologies

Once a new technology starts rolling, if you’re not part of the steamroller, you’re part of the road.

Stewart Brand

No comments

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


No evidence

What can be asserted without evidence, can be dismissed without evidence.

Christopher Hitchens

No mistakes

There are no unitary tests in our project because we don’t do mistakes here.


Not failing

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

Thomas Edison

Not necessarily a good idea

With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea. It is hard to be sure where they are going to land, and it could be dangerous sitting under them as they fly overhead.

Ross Callon


A notation is important for what it leaves out.

Joe Stoy


OAuth is the best that the wrong way of doing things can provide.

Mike Stay

Object methodologists

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


Object-oriented programming

Object-oriented programming is to writing a program, what going through airport security is to flying.

Richard Mansfield

Occam’s razor

Entia non sunt multiplicanda praeter necessitatem.

William of Ockham

Old programs

Old programs read like quiet conversations between a well-spoken research worker and a well-studied mechanical colleague, not as a debate with a compiler. Who’d have guessed sophistication bought such noise?

Dick Gabriel

Old software

Old computers go into museums, but old software goes into production every night.


One bug

Any non-trivial program contains at least one bug.


One page principle

A specification that will not fit on one page of 8.5x11 inch paper cannot be understood.

Mark Ardis

Opportunistic refactoring

Refactoring is something that {should} be done opportunistically, as a regular part of your programming work.

Martin Fowler


You’re bound to be unhappy if you optimize everything.

Donald Knuth

Out of business

As a programmer, it is your job to put yourself out of business. What you do today can be automated tomorrow.

Doug McIlroy

Outsmarting compilers

Trying to outsmart a compiler defeats much of the purpose of using one.

Kernighan and Plauger

Overlooked risks

The most often-overlooked risk in software engineering is: incompetent programmers. […] 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.

David Parnas


In the one and only true way, the object-oriented version of «Spaghetti code» is, of course, «Lasagna code» (too many layers).

Roberto Waltman


The best is the enemy of the good.



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

Keith Bostic


It’s not that Perl programmers are idiots, it’s that the language rewards idiotic behavior in a way that no other language or tool has ever done.

Erik Naggum

PHP and Perl

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

Jon Ribbens


PHP is the Sarah Palin of programming languages.

Alex Mizrahi

Piling features

Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.


Plan 9

Plan 9 looks like it was written by experts; Linux looks like something my students could aspire to write.



I have always found that plans are useless, but planning is indispensable.

Dwight D. Eisenhower

Portable programs

A program is portable to the extent that it can be easily moved to a new computing environment with much less effort than would be required to write it afresh.

W. Stan Brown

Power and flexibility

C combines the power of assembly language with the flexibility of assembly language.


Powers of abstraction

The effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer.

Edsger Dijkstra

Powers of two

A programmer walks to the butcher shop and buys a kilo of meat. An hour later, he comes back upset that the butcher shortchanged him by 24 grams.



Prediction is very difficult, especially about the future.

Niels Bohr

Programmers and sex

  • How can you tell when a programmer has had sex?
  • When he’s washing the pepper spray out of his eyes.


Programmers at work

Mostly, when you see programmers, they aren’t doing anything. One of the attractive things about programmers is that you cannot tell whether or not they are working simply by looking at them. Very often they’re sitting there seemingly drinking coffee and gossiping, or just staring into space. What the programmer is trying to do is get a handle on all the individual and unrelated ideas that are scampering around in his head.

Charles Stross

Programming and debugging

As soon as we started programming, we found to our surprise that it wasn’t as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.

Maurice Wilkes

Programming and poetry

A program is like a poem: you cannot write a poem without writing it. Yet people talk about programming as if it were a production process and measure «programmer productivity» in terms of «number of lines of code produced». In so doing, they book that number on the wrong side of the ledger: We should always refer to «the number of lines of code spent».

Edsger Dijkstra

Programming graphics in X

Programming graphics in X is like finding the square root of PI using Roman numerals.

Henry Spencer

Programming languages

There are only two kinds of programming languages: those people always bitch about and those nobody uses.

Bjarne Stroustrup

Programming questions

A lot of programming questions are always asked because the programmer has reached the end of a twisty maze of his own creation. Turn around, walk, spin around, and try again. You’ll find a better solution.

Jonathan Rockway

Programming today

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.

Rick Cook

Put beauty into it

Everyday life is like programming, I guess. If you love something you can put beauty into it.

Donald Knuth


Python’s a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck.

Cory Dodt


In order to define recursion, we must first define recursion.


Regular expressions

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

Jamie Zawinski

Reinventing the wheel

The good thing about reinventing the wheel is that you can get a round one.

Douglas Crockford


Why don’t you guys get to work coding while we work on the requirements?


Restricting the flexibility

If you’re willing to restrict the flexibility of your approach, you can almost always do something better.

John Carmack

Reusable software

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



RMS is to Unix, like Hitler [was] to Nietzsche.

Federico Benavento


Ruby is Perl on LSD.


Running time

In non-I/O-bound programs, less than 4% of a program generally accounts for more than half of its running time.

Donald Knuth


Security is a state of mind.

NSA Security Manual

Sharing knowledge

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

Show me

Talk is cheap. Show me the code.

Linus Torvalds

Simplicity and complexity

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


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

Agile Manifesto

Simplifying and complicating

While intelligent people can often simplify the complex, a fool is more likely to complicate the simple.

Gerald W. Grumet


The ability to simplify means to eliminate the unnecessary so that the necessary may speak.

Hans Hoffmann


Programs, like ships, sink in the C.


Slow coding

No matter how slow you are writing clean code, you will always be slower if you make a mess.

Robert C. Martin

Slower software

Software gets slower faster than hardware gets faster.

Niklaus Wirth

Small and simple code

The beauty of small and simple code is that you can bend or break the rules as long it stays small and simple.

Cinap Lenrek

Small efficiencies

We should forget about small efficiencies, say about 97% of the time.

Donald Knuth

Smart software

So-called «smart» software usually is the worst you can imagine.

Christian Neukirchen

Snake oil

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 Dijkstra

So easy to implement

My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn’t resist the temptation to put in a null reference, simply because it was so easy to implement.

Tony Hoare

Software and burgers

If McDonald’s were run like a software company, one out of every hundred Big Macs would give you food poisoning, and the response would be «We’re sorry, here’s a coupon for two more».

Mark Minasi

Software and carpenters

If carpenters built houses the way programmers build programs, the next wind to come along would destroy civilization.


Software and entropy

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


Software and hardware

The most amazing achievement of the computer software industry is its continuing cancellation of the steady and staggering gains made by the computer hardware industry.

Henry Petroski

Software business

If you want to win in a software business, just take on the hardest problem you can find, use the most powerful language you can get, and wait for your competitors’ pointy-haired bosses to revert to the mean.

Paul Graham

Software design

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.

Tony Hoare

Software development

The most important single aspect of software development is to be clear about what you are trying to build.

Bjarne Stroustrup

Software efficiency

Software efficiency halves every 18 months, compensating Moore’s Law.

David May

Software quality

Trying to improve software quality by increasing the amount of testing is like trying to lose weight by weighing yourself more often.

Steve McConnell

Software sucks

Software sucks because users demand it to.

Nathan Myhrvold

Software sucks

All software sucks, be it open-source or proprietary. The only question is what can be done with particular instance of suckage, and that’s where having the source matters.

Alexander Viro

Software today

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

Something different

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.



If it doesn’t work, it doesn’t matter how fast it doesn’t work.

Mich Ravera

Standard XML

Most XML I’ve seen makes me think I’m dyslexic. It also looks constipated, and two health problems in one standard is just too much.

Charles Forsyth


The nice thing about standards is that you have so many to choose from.

Andrew S. Tanenbaum


Just because the standard provides a cliff in front of you, you are not necessarily required to jump off it.

Norman Diamond

Stay away from the drugs

In the same world where Vomit-Making System is elegant, SGI «designs» are and NT is The Wave Of Future™. Pardon me, but I’ll stay in our universe and away from the drugs of such power.

Alexander Viro

Stop digging

The standard rule is, when you’re in a hole, stop digging. That seems not to apply to software nowadays.

Ron Minnich

System weaknesses

But in our enthusiasm, we could not resist a radical overhaul of the system, in which all of its major weaknesses have been exposed, analyzed, and replaced with new weaknesses.

Bruce Leverett

Team characteristics

If you want a product with certain characteristics, you must ensure that the team has those characteristics before the product’s development.

Jim McCarthy and Michele McCarthy

Ten seconds

A user interface should be so simple that a beginner in an emergency can understand it within ten seconds.

Ted Nelson


Would you rather Test-First or Debug-Later?

Robert C. Martin


Testing? What’s that? If it compiles, it is good. If it boots up, it is perfect.

Linus Torvalds


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

Edsger Dijkstra

That brain of mine

That brain of mine is something more than merely mortal; as time will show.

Ada Lovelace

The art of programming

Programming is 10% science, 20% ingenuity, and 70% getting the ingenuity to work with the science.


The best components

The cheapest, fastest, and most reliable components are those that aren’t there.

Gordon Bell

The biggest program

The X server has to be the biggest program I’ve ever seen that doesn’t do anything for you.

Ken Thompson

The cost of abstraction

It is not that uncommon for the cost of an abstraction to outweigh the benefit it delivers. Kill one today!

John Carmack

The design of UNIX

UNIX was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things.

Doug Gwyn

The dusty archives

You want to make your way in the Computer Science field? Simple. Calculate rough time of amnesia (hell, 10 years is plenty, probably 10 months is plenty), go to the dusty archives, dig out something fun, and go for it. It’s worked for many people, and it can work for you.

Ron Minnich

The eight fallacies of distributed computing

The Eight Fallacies of Distributed Computing:

  1. The network is reliable.
  2. Latency is zero.
  3. Bandwidth is infinite.
  4. The network is secure.
  5. Topology doesn’t change.
  6. There is one administrator.
  7. Transport cost is zero.
  8. The network is homogeneous.

L Peter Deutsch

The essence of XML

The essence of XML is this: the problem it solves is not hard, and it does not solve the problem well.

Philip Wadler

The factory of the future

The factory of the future will have only two employees: a man and a dog. The man will be there to feed the dog. The dog will be there to keep the man from touching the equipment.

Warren Bennis

The hard part

In programming, the hard part isn’t solving problems, but deciding what problems to solve.

Paul Graham

The key to performance

The key to performance is elegance, not battalions of special cases.

Jon Bentley and Doug McIlroy

The most beautiful code

In software, the most beautiful code, the most beautiful functions, and the most beautiful programs are sometimes not there at all.

Jon Bentley

The new super computer

Have you heard about the new super computer? It’s so fast, it executes an infinite loop in 6 seconds.

Charles Babbage

The object-oriented model

The object-oriented model makes it easy to build up programs by accretion. What this often means, in practice, is that it provides a structured way to write spaghetti code.

Paul Graham

The proper lazyness

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

The proper use of comments

The proper use of comments is to compensate for our failure to express ourself in code.

Robert C. Martin

The purpose of abstraction

The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise.

Edsger Dijkstra

The real world

Beware of «the real world». A speaker’s appeal to it is always an invitation not to challenge his tacit assumptions.

Edsger Dijkstra

The right answers

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

The right data structures

If you’ve chosen the right data structures and organized things well, the algorithms will almost always be self-evident.

Rob Pike

The right problem

It is better to do the right problem the wrong way than the wrong problem the right way.

Richard Hamming

Theory and practice

Theory and practice sometimes clash. And when that happens, theory loses. Every single time.

Linus Torvalds

Theory and practice

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.


Things that should not work

Sometimes, things that should work, don’t. That’s worrying. Sometimes things that shouldn’t work, do. That’s worringer.

Markus Persson

Thinking computers

The question of whether a computer can think is no more interesting than the question of whether a submarine can swim.

Edsger Dijkstra

Threads and signals

Threads and signals are a platform-dependant trail of misery, despair, horror and madness.

Anthony Baxter

Three dangerous things

The three most dangerous things in the world are: a programmer with a soldering iron, a hardware engineer with a software patch, and a user with an idea.


Throwing it away

One of my most productive days was throwing away 1000 lines of code.

Ken Thompson

Tomorrow’s Unix

I’m confident that tomorrow’s Unix will look like today’s Unix, only cruftier.

Russ Cox

Too literal

  • How did the programmer die in the shower?
  • He read the shampoo bottle instructions: «Lather. Rinse. Repeat.»


Too much complexity

So much complexity in software comes from trying to make one thing do two things.

Ryan Singer

Totally safe

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


You can never train a programmer, you may discover one.


Tribal customs

Forgive him, for he believes that the customs of his tribe are the laws of nature!

George Bernard Shaw

True glory

True glory consists in doing what deserves to be written; in writing what deserves to be read.

Pliny the Elder


You can’t trust code that you did not totally create yourself.

Ken Thompson

Tuning for speed

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

Rob Pike

Turing tar-pit

Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy.

Alan Perlis

Twice as fast

A program that produces incorrect results twice as fast is infinitely slower.

John Osterhout

Twice as hard

Everyone knows that debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it?

Kernighan and Plauger

Two hard things

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

Phil Karlton

Type hierarchies

When there is no type hierarchy, you don’t have to manage the type hierarchy.

Rob Pike

Understanding the specifications

Programmers won’t tell you that they don’t understand the specification; they will happily invent their way through the gaps and obscurities.

Victor A. Vyssotsky

Undetectable errors

Undetectable errors are infinite in variety, in contrast to detectable errors, which by definition are limited.


Unformed people

Unformed people delight in the gaudy and in novelty. Cooked people delight in the ordinary.

Erik Naggum


Unix is user-friendly. It’s just particular who its friends are.


Unix is dead

Not only is UNIX dead, it’s starting to smell really bad.

Rob Pike

Unix is so simple

Unix is simple. It just takes a genius to understand its simplicity.

Dennis Ritchie


Unix is a junk OS designed by a committee of PhDs.

Dave Cutler

Unsolved problems

A good programmer would rather leave a problem temporarily unsolved than solve it poorly.


Unwritten code

Written code is buggy code, unwritten code might be bug-free code.


Useful programs

If a program is useful, it will have to be changed.


Useless programs

If a program is useless, it will have to be documented.


User expectations

Microsoft’s biggest and most dangerous contribution to the software industry may be the degree to which it has lowered user expectations.

Esther Schindler


Programmers think they all suck; Prostitutes also think they all suck. And both are right: they all suck. The big difference is that prostitutes got the term «user-friendly» right.


Users are idiots

This «users are idiots, and are confused by functionality» mentality of Gnome is a disease. If you think your users are idiots, only idiots will use it.

Linus Torvalds


Just because they are called «users» it doesn’t mean they are on drugs… although it would make more sense if they were.


Using Haskell

Do I really want to be using Haskell, a language where memoize is a PhD-level topic?

Mark Engelberg


Vacuumware: n, software which was written specifically to fill a void in the industry, especially software which is successful more due to how well it fills that void than due to anything else, like usability or utility.


Violent XML

XML is like violence: if it doesn’t solve your problem, you aren’t using enough of it.

Chris Maden

Wearing out

Software wears out softly, software development wears out the developers really hard.



Computers are like air conditioners: they stop working as soon as you open Windows.


Wonderful languages

More good code has been written in languages denounced as bad than in languages proclaimed wonderful – much more.

Bjarne Stroustrup

Won’t do

I object to doing things that computers can do.

Olin Shivers

Work expansion

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


Working well

As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications.

David Parnas

Worshipping rules

Rules allow people to write code without thinking. When you don’t think, you get bloated code that just concatenates stupid patterns. People stop thinking and questioning; then it’s just worshipping some rules without any purporse.

Cinap Lenrek

Writing code

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

Martin Fowler

Writing code

Write your code like you will have to debug it when you are low on sleep, drunk, or hungover — because you probably will.


Wrong comments

As soon as you comment your code, it is out of date and wrong.


X-Windows sucks

Sometimes when you fill a vacuum, it still sucks.

Dennis Ritchie


If the designers of X-Windows built cars, there would be no fewer than five steering wheels hidden about the cockpit, none of which followed the same principles – but you’d be able to shift gears with your car stereo. Useful feature that.

Marcus J. Ranum

XML, really?

Nobody who uses XML knows what they are doing.

Chris Wenham

Yes, my lord

When someone says: «I want a programming language in which I need only say what I wish done», give him a lollipop.

Alan Perlis