Software engineering quotes

A big collection of engineering quotes I like, collected over many years. Also see engineering lessons.

All code is liability.

- Peter Norvig

Information wants to be free.
Data wants to be dirty.
Duplicated data wants to skew.

- Stewart Brand; me

The first rule of systems engineering is: If you optimize the components you will probably ruin the system performance.

- Richard W. Hamming

The best part is no part. The best process is no process.

- Elon Musk

To this very day, idiot software managers measure “programmer productivity” in terms of “lines of code produced,” whereas the notion of “lines of code spent” is much more appropriate.

- Edsger W. Dijkstra

Software has bugs. Security-relevant software has security-relevant bugs.

- Steve Bellovin

Running a successful open source project is just Good Will Hunting in reverse, where you start out as a respected genius and end up being a janitor who gets into fights.

– Byrne Hobart

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.

- Conway’s Law

When a program has nothing surprising, interesting or useful to say, it should say nothing.

- The UNIX Rule of Silence

A program that uses an interface must not be confused by an implementation of that interface.

- Liskov Substitution Principle

Gather together the things that change for the same reasons. Separate things that change for different reasons.

- Single Responsibility Principle

A Module should be open for extension but closed for modification.

- Open-Closed Principle

Keep interfaces small so that users don’t end up depending on things they don’t need.

- Interface Segregation Principle

Depend in the direction of abstraction. High level modules should not depend upon low level details.

- Dependency Inversion Principle

Type systems and type checking in programming languages are just an approximate solution to a more general problem: determining whether a program is free of errors for all possible values of variables along all possible control flow paths.

– Tim Sweeney

Always do the hard part first. If the hard part is impossible, why waste time on the easy part? Once the hard part is done, you’re home free.

- Al Schapira

Always do the easy part first. What you think at first is the easy part often turns out to be the hard part. Once the easy part is done, you can concentrate all your efforts on the hard part.

- Al Schapira

Of all my programming bugs, 80 percent are syntax errors. Of the remaining 20 percent, 80 percent are trivial logical errors. Of the remaining 4 percent, 80 percent are pointer errors. And the remaining 0.8 percent are hard.

- Marc Donner

Twenty percent of all input forms filled out by people contain bad data.

- Vie Vyssotsky

Eighty percent of all input forms ask questions they have no business asking.

- Mike Garey

When in doubt, use brute force.

- Ken Thompson, Bell Labs

To be a programmer is to develop a carefully managed relationship with error.

- Ellen Ullman

engineering flowchart, wd40 vs duct tape

Everything should be built top-down, except the first time.

- Alan Perlis

We build our computer systems the way we build our cities: over time, without a plan, on top of ruins.

- Life in Code, Ellen Ulman

Choose the least powerful programming language suitable for a given purpose, not the most powerful.

- Rule of least power, W3C

maybe teaching sand to do math was a mistake

– @wirehead2501

if you ever code something that “feels like a hack but it works,” just remember that a CPU is literally a rock that we tricked into thinking

not to oversimplify: first you have to flatten the rock and put lightning inside it

- ben (@daisyowl)

The more equally attractive two alternatives seem, the harder it can be to choose between them — no matter that, to the same degree, the choice can only matter less.

- Edward Fredkin

Before you can develop reusable software you need to have developed it three times. Before you can reap the benefits of reuse, you need to reuse it at least three times.

- “Rule of Threes,” Ted Biggerstaff, via Will Tracz

We have a squeaky bathroom door, so I thought we need to oil it. Then I realised there are a few other doors in the house that need oiled. Then I thought “wouldn’t it be cool if I could pour oil down one pipe and oil all the doors at once?” That’s how software engineers think.

– Paul Campbell

When AT&T donated the V6 source code to Berkeley, it was classified as industrial waste for tax purposes.

As it was explained to me, the law at the time said if your business produced byproducts that had economically recoverable value, you could get a tax break by donating them.

So, for example, if you were Kodak, and your film factory produced effluent with silver dissolved in it, you could get a tax break by donating it to someone who’d recover the silver.

AT&T being the Phone Company, they were forbidden to commercialize anything not directly related to telephony. UNIX was a byproduct of their research work, and they couldn’t sell it. But they could give it away as sludge!

– Evan Hunt

Just like entropy always increases, mean time to failure always decreases.

- Alan Perlis, paraphrased

I’ll buckle down and get to work as soon as I finish reading the internet.

- Unknown

Show me your flowcharts, and conceal your tables, and I shall continue to be mystified; show me your tables and I won’t usually need your flowcharts: they’ll be obvious.

- Fred Brooks, The Mythical Man Month

Technology is anything that doesn’t work quite yet.

- Danny Hillis

Early in the morning of 17 July 1997, human error at Network Solutions causes the DNS table for .com and .net domains to become corrupted, making millions of systems unreachable.

– RFC 2235: Hobbes’ Internet Timeline

There are really only two types of computations: calculating stuff about an unchanging thing, and calculating a new version of a thing that is changing over time. Recognizing this simplifies the debate over functional versus imperative programming.

– Tim Sweeney

The Fallacies of Distributed Computing

* The network is reliable
* Latency is zero
* Bandwidth is infinite
* The network is secure
* Topology doesn’t change
* There is one administrator
* Transport cost is zero
* The network is homogeneous

- Bill Joy, Tom Lyon

The paging will continue until the nines improve.

- Hank Jacobs

All code is technical debt; it’s just different interest rates we’re paying on it. Debt powers the economy and it powers your business. None of this is inherently good or bad. It’s a tool.

- Dormain Drewitz

The condition of any backup is unknown until a restore is attempted.

- “Schrödinger’s Backup,” Redditor intelx88

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 (aka Kernighan’s Law)

[On naming systems]

Human-meaningful, secure, decentralized: choose two.

- Zooko’s Triangle, Zooko Wilcox-O’Hearn

Consistency, availability, partition tolerance: choose two.

- CAP Theorem, Eric Brewer

When we can finally print from any computer to any printer consistently, there will be no computer science problems left to solve.

- Steve Moyer (Moyer’s Law)

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

- Mich Ravera

Never attribute to malice that which can be adequately explained by stupidity.

- Hanlon’s Razor

Never attribute to stupidity that which can be adequately explained by complexity.

- Thompson’s Razor

There is always a well-known solution to every human problem – neat, plausible, and wrong.

– Henry Louis Mencken

The Tao gave birth to machine language. Machine language gave birth to the assembler. The assembler gave birth to the compiler. Now there are ten thousand languages.

Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao.

But do not program in COBOL if you can avoid it.

– Geoffrey James, The Tao Of Programming

Oftentimes, when trying to reinvent the wheel, you end up with a wheel. But there is a nice moment of “huh, I guess that’s why people just use wheels”… that process of justifying the standard is satisfying, if massively wasteful.

- Mike Bithell

An [engineer] can mull over complicated designs for months. Then suddenly the simple, elegant, beautiful solution occurs to them. When it happens to you, it feels as if God is talking! And maybe He is.

- Leo Frankowski

The percentage of users without fully functioning JavaScript is approximately 1%…If you had an application bug which occurred 1% of the time, you’d fix it. No team I’ve come across would put up with that level of reliability.

– Adam Silver

Cryptography turns a big amount of data to secure into a big amount of data and a small additional amount of radioactive waste.

– Sophie Schmieg

Insecurity is like entropy. You can’t eliminate it, but you can move it around.

- internal NSA saying, via Steve Bellovin

All code you haven’t tested is wrong. All code you have tested is also wrong, but appears to work by coincidence. And code you’ve proven correct does the wrong thing, correctly.

– Tim Sweeney

The paradox is that when managers focus on productivity, long-term improvements are rarely made. On the other hand, when managers focus on quality, productivity improves continuously.

– John Seddon (more)

One of the superpowers of the most effective programmers must be not travelling down a meandering hole of upgrading all code possibly tangentially related to the thing they are working on.

I have not mastered this.

– Patrick McKenzie

There exists in such a case a certain institution or law; let us say, for the sake of simplicity, a fence or gate erected across a road. The more modern type of reformer goes gaily up to it and says, ‘I don’t see the use of this; let us clear it away.’ To which the more intelligent type of reformer will do well to answer: ‘If you don’t see the use of it, I certainly won’t let you clear it away. Go away and think. Then, when you can come back and tell me that you do see the use of it, I may allow you to destroy it.’

– “Chesterton’s Fence” (G. K. Chesterton)

At my last job, a team put up a poster for their reusable components. It said:
We made a thing from scratch, so you don’t HAVE to make things from scratch.
But when engineers read this, they see:
We made a thing from scratch, so you don’t GET to make things from scratch.

– M. J. Fromberger

What five words best describe programming?
Tell rocks what to think
It works on my computer
Google, StackOverflow, Quora, Reddit, Slack
My estimate of five words was slightly off
Turtles all the way down
How did this ever work?

– @abstractionscon

When you finish a PhD in computer science, they take to a special room and explain that you must never use recursion in real life. Its only purpose is to make programming hard for undergrads.

– John Wilander

Another flaw in the human character is that everybody wants to build and nobody wants to do maintenance.

- Kurt Vonnegut, Hocus Pocus

A simple heuristic for technical debt: It’s always fine to introduce a quick hack. But as soon as you have to work around that hack, stop and fix it instead.

– Aaron Boodman

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

- Alan Perlis

Optimization hinders evolution.

- Alan Perlis

Every program has (at least) two purposes: the one for which it was written, and another for which it wasn’t.

- Alan Perlis

To err is human; to manage error is system.

- Kevin Kelly

If software cannot be maintained, then it will be rewritten.

- Dave Cheney

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

- Alan Perlis

There is an old network saying: Bandwidth problems can be cured with money. Latency problems are harder because the speed of light is fixed. You can’t bribe God.

- Unknown

Peres’s Law: If a problem has no solution, it may not be a problem, but a fact; not to be solved, but to be coped with over time.

- Shimon Peres

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

- Alan Perlis

Code is like humor. When you have to explain it, it’s bad.

- Cory House

The only thing you will get from a Big Bang Rewrite is a big bang.

- Martin Fowler

The first step of any project is to grossly underestimate its complexity and difficulty.

- Nicoll Hunt

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

- Bram Cohen

Programming is like a “choose your own adventure game” except every path leads you to a StackOverflow question from 2013 describing the same bug, with no answer.

- Pranay Pathole

Of all the technical debt you can incur, the worst in my experience is bad names – database columns, variables, functions, etc. Fix those IMMEDIATELY before they metastasize all over your codebase and become extremely painful to fix later…and they always do.

- Jeff Atwood

Betting on an apocalyptic future in every line of code – as if any assumption might break in the future – that is the path to immense developer productivity waste.

- Graham Lee, paraphrased

It’s amusing how hard it is to get computers to behave deterministically. I mean, they just had the one job.

- Aaron Boodman

There is a rising tide of security breaches. There is an even faster rising tide of hysteria. Yet the world is doing remarkably well overall. This continuing general progress of society suggests that cyber security is not very important.

- Andrew Odlyzko

This stuff is really important. We don’t want to swap the As and the Ts, that would be a real mess.

- NIH / All of Us

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

- John Carmack

First you listen to the users; then you ignore them.

- Ken Arnold

Why does a computer with 1000x faster processor and 100x more memory than 20 years ago still feel slower?

Our use of technology always expands to the very edge of its capacity. A thousand years from now, everyday technology will be just barely sufficient for the job.

- Jevon’s Paradox (aka Wirth’s law aka Page’s law aka Gates’s law aka May’s law)

  1. Make it work.
  2. Make it right.
  3. Make it fast.

- Kent Beck

Old technology fails frequently, but in a reliable way. New technology fails less often, but when it fails, it fails in an unexpectedly new way we are not prepared for.

- Kevin Kelly

The key to performance is elegance, not battalions of special cases. The terrible temptation to tweak should be resisted unless the payoff is really noticeable.

- Jon Bentley and Doug McIlroy

Marie Kondo, but for source code. Line by line, does this spark joy? Delete, delete, delete. So long, and thanks for all the bugs.

- Ben Werdmüller

Don’t solve a problem just because you can imagine it. Wait until there is a problem, then go after it. If you over-anticipate, you will design freedom out of the system.

- Stewart Brand

Matlab has normalized the practice of storing array indices as floats starting at 1.0, which now that I am used to it makes me think why bathe or brush my teeth? Why not start doing meth? Why bother at all?

- Seamus Blackley

Everything is broken.

- Quinn Norton, Bob Dylan, True Detective, and more…

People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.

- Donald Knuth

Don’t patch bugs out, rewrite them out.

- Unknown

As a programmer, my core strengths have always been apologizing to users and composing funny tweets.

- Maciej Cegłowski

Absence is beauty, in error logs.

- Leonard Bogdonoff

Civilization advances by extending the number of important operations which we can perform without thinking of them.

- Alfred North Whitehead

Load-bearing optimization, n.

A performance-related change – for example, adding a cache – that accidentally becomes required for correctness.

– David Smith

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

If you have error reporting and your team ignores it, you don’t have error reporting.

- Graham Hoefer

Sometimes the problem is to discover what the problem is.

- Gordon Glegg

Code gets rewritten all the time. Don’t get attached to it. The ideas are all that matter.

- Parisa Tabriz

availability downtime, per year cost
99.9 8.76h $$,$$$
99.99 52.6m $$$,$$$
99.999 5.25m $,$$$,$$$
99.9999 31.5s you can’t afford it

- Christopher Church (tweet)

$ git rebase -i master

error: from the abyss the howls of the Old Ones devour the last shreds of your sanity.

When you have resolved this error, use git rebase –continue

- Andrew Chatham (tweet)

Testing leads to failure, and failure leads to understanding.

- Burt Rutan (SpaceShipOne designer)

You have a problem. You use a distributed system. Now you still have a problem, but you no longer know where.

- @llogiq

Hyrum’s Law: With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors will be depended on by somebody.

- Hyrum Wright; obligatory XKCD

Software engineering is what happens to computer programming when you add time and other programmers.

- Russ Cox and Titus Winters

Programming is the art of knowing when to use google, when to ask for help, and when to go for a walk around the block.

-Dennis Collinson

Sometimes, the elegant implementation is just a function. Not a method. Not a class. Not a framework. Just a function.

- John Carmack

We sort of understood abstractly the idea that there are only two kinds of software projects: failures and future legacy horrors.

- Peter Weinberger

Goodhart’s Law: When a measure becomes a target, it ceases to be a good measure.

- Charles Goodhart

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

- Edward V Berard

No one in the brief history of computing has ever written a piece of perfect software. It’s unlikely that you’ll be the first.

- Andy Hunt

A primary cause of complexity is that software vendors uncritically adopt almost any feature that users want.

- Niklaus Wirth

The best programs are the ones written when the programmer is supposed to be working on something else.

- Melinda Varian

“Feral systems”: Access databases, spreadsheets with macros, and other hacked solutions made out of frustration when current systems don’t meet a need.

– Hadley Beeman

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

- Seymour Cray

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

- Bill Gates

Rules of Optimization:
Rule 1: Don’t do it.
Rule 2 (for experts only): Don’t do it yet.

- Michael A. Jackson

CoffeeScript, Haml, Sass, all on top of me, holding me up psychologically for MONTHS.

– @erowidrecruiter (Markov-powered mashup of Erowid trip reports and tech recruiter emails)

Writing code is not an exercise in [ego].

- Mark Hahn

If you’ve been pounding nails with your forehead for years, it may feel strange the first time somebody hands you a hammer. But that doesn’t mean that you should strap the hammer to a headband just to give your skull that old familiar jolt.

- Wayne Throop

Junior developer: “I will just copy over this code to reuse it”
Middle developer: “I will make it DRY with code sharing/inheritance/macros”
Senior developer: “I will just copy over this code to reuse it”

– Hubert Lepicki

We are in the business of novel outages.

– Google SRE

Unix was not designed to stop people from doing stupid things, because that would also stop them from doing clever things.

- Doug Gwyn

Twyman’s Law: Any figure that looks interesting or different is usually wrong.

- Tony Twyman

As-builts are building plans that show in detail exactly what was built, which is always significantly different from what was in the original plans. Without accurate as-builts, says Chuck Charlton, “An electrical failure can have you wandering through the building shotgunning circuit breakers and shinnying down the chases.” …If the as-builts aren’t updated constantly, each bit of repair or remodeling, each new contractor, each change of property management makes the plans more misleading.

- Stewart Brand, How Buildings Learn (see my full presentation)

We live in a society exquisitely dependent on science and technology, in which hardly anyone knows anything about science and technology.

- Carl Sagan

Give someone a program, you frustrate them for a day. Teach them how to program, you frustrate them for a lifetime.

- David Leinweber

I call it my billion-dollar mistake. It was the invention of the null reference in 1965.

- Tony Hoare

Every technology, when sufficiently complicated, becomes programmable.

– Kenton Varda

Compatibility means deliberately repeating other people’s mistakes.

- David Wheeler

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

- Norm Schryer

Debugging is like being the detective in a crime movie where you are also the murderer.

- Filipe Fortes

You don’t pay engineers to write code, you pay them to understand problems, subtleties, and edges. The code is incidental.

- Ted Dziuba

Given sufficient abstraction, every problem becomes hard.

– @ericlaw


Given sufficient abstraction, every problem becomes every problem.

– @mikemiles86

Technology…is a queer thing. It brings you great gifts with one hand, and it stabs you in the back with the other.

- C. P. Snow

We’re trying to change the Kleenex mentality of technology – you buy a smartband or an Android Wear watch and next year you’ll throw it away…We need to create objects that are worth keeping and upgrading.

- Philippe Kahn

Any sufficiently advanced magic is indistinguishable from technology.

- unknown (apocryphal Larry Niven, Terry Pratchett; note inversion of Arthur C Clarke’s law!)

Technology is the knack of so arranging the world that we don’t have to experience it.

- Max Frisch

Productivity and reliability depend on the length of the program text, independent of language. You will produce roughly the same number of lines of code in assembly, per hour, as in Ruby or Scheme or Perl.

- Lutz Prechelt (based on actual research studies)

Any problem can be solved by adding a layer of indirection…but where network engineering is involved, it’s more effective to just stuff it into DNS.

- Geoff Huston

A week of coding can save an hour of thinking.

- unknown

All technology should be assumed guilty until proven innocent.

- Jerry Mander

Engineering is what happens when you take science and economics and try to put them together.

- Greg Wilson

Why do engineers seem like such different people? We live every day in a world where one misplaced character brings the whole world crashing down around us.

- unknown

“Write code that’s easy to delete, not easy to extend.”

– Ben Nadel

The experienced CTO does not feel guilty about technical debt. What counts is how (and how much) they deal with it.

– via Colin Vernon

1995: Every object in your home has a clock & it is blinking 12:00
2025: Every object in your home has a IP address & the password is Admin

– @mcclure111

[Software] is never finished, only abandoned.

- Leonardo da Vinci

An action or resource should either not be permitted (zero), happen uniquely (one), or have no arbitrary limit at all (infinity).

- Willem van der Poel

Manual until it hurts.

- Ryan, re automation

Software is not an academic discipline, not a liberal art. It’s a craft. And the only way to learn craftsmanship is to apprentice.

– Nelson Minar

At 9:37AM PST, an authorized S3 team member using an established playbook executed a command…one of the inputs to the command was entered incorrectly…

– 2/27 S3 outage postmortem

“The road of life is paved with flat squirrels who couldn’t make a decision.”

- Anonymous (via MSK)

Most papers in computer science describe how their author learned what someone else already knew.

- Peter Landin

You cannot release crap. There are companies that do this and end up making a tidy profit. You are not that person, because once you are rewarded for releasing crap, you begin a blind walk down a path of mediocrity that ends up with you working at Computer Associates on a product no one has heard of and that no one cares about.

- Michael Lopp, Managing Humans

BUG REPORT: I’ve written hundreds of great tweets and bad things are still happening.

– Avery Edison

Rules of abstraction: 1. Don’t use abstraction 2. Don’t use abstraction 3. Only consider abstraction when you see at least three things that ARE the same 4. All abstractions must pay for themselves 5. Beware DRY, the evil siren that tricks you into abstraction

- Martin Thompson

In the beginning, the first programmer wrote code from scratch.
Henceforth, all code was copied, pasted, and modified.

- Programmer’s Bible, Code Psalms 12:56-57

Yesterday I was clever, so I wanted to change the world. Today I am wise, so I am changing myself. ― Jalaluddin Rumi

Have no fear of perfection. You’ll never reach it.

- Salvador Dali (via MSK)

My job is to copy data from one protocol buffer to another.

- ancient Google proverb

Anything from before you were born is normal and natural. Anything invented between when you were 15 and 35 is revolutionary and exciting. Anything invented after you’re 35 is against the natural order.

- Douglas Adams

[Looking at dependencies…]
Wait, my code depends on what?

- ancient Google proverb

Technical mistakes can and will be corrected with a strong community, but not the other way around.

- Yehuda Katz (via zack)

Code wants to be broken.

- Noam Ben-Ami, Quora: “Why is coding so hard?”

Talent hits a target no one else can hit. Genius hits a target no one else can see.

- Arthur Schopenhauer (via Othman)

The question of whether machines can think is about as relevant as the question of whether submarines can swim.

- Edsger Dijkstra

I love deadlines. I love the whooshing noise they make as they go by.

- Douglas Adams

When a computer receives conflicting instructions from its owner and a third party, the owner should always win.

- Cory Doctorow, re DRM

Object-oriented programming is an exceptionally bad idea which could only have originated in California.

- Edsger W. Dijkstra

We are stuck with technology when what we really want is just stuff that works.

- Douglas Adams

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

– Edsger Dijkstra?

The Programmers’ Credo: we do these things not because they are easy, but because we thought they were going to be easy.

– Maciej Cegłowski

A good scientist has original ideas. A good engineer makes designs with as few original ideas as possible.

- Freeman Dyson

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

— Stan Kelly-Bootle

Einstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.

- Fred Brooks

In computer science, we’re privileged to run elbows with the giants on whose shoulders we stand.

via @zooko

I define UNIX as 30 definitions of regular expressions living under one roof.

- Donald Knuth

The best minds of my generation are thinking about how to make people click ads.

- Jeff Hammerbacher

Defenders have to be right every time. Attackers only have to be right once.

- Unknown

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

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

- Donald Knuth

In my experience, all distributed consensus algorithms are either 1: paxos, 2: paxos with extra unnecessary cruft, or 3: broken.

- Mike Burrows

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

– Donald Knuth (apocryphal: C.A.R Hoare)

12 thoughts on “Software engineering quotes

  1. Pingback: sonicrocketman


  • André Jaenisch

Leave a Reply

Your email address will not be published.