Software engineering quotes

Engineering quotes I like, collected over many years. Also see engineering lessons.

All code is liability.

- Peter Norvig

Information wants to be free.

- Stewart Brand

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

- Me

Over time, all data approaches either deleted or public.

– Norton’s Law

Scope wants to creep.

- Todd Wolfson

Code wants to be broken.

– Noam Ben-Ami

All models are wrong. Some are useful.

– George Box

Computing’s core challenge is how not to make a mess of it.

– Edsger W. Dijkstra

Over time, bandwidth increases with the square of latency.

– David Patterson

By June 1949, people had begun to realize that it was not so easy to get a program right as had at one time appeared. … It was on one of my journeys between the EDSAC room and the punching equipment that the realization came over me with full force that a good part of the remainder of my life was going to be spent in finding errors in my own programs.

– Maurice Vincent Wilkes

A systems programmer will know what to do when society breaks down, because the systems programmer already lives in a world without law.

– James Mickens

Docker containers are kind of neat. They are also kind of a craven surrender to the rotting mess of excessive software complexity.

– John Carmack

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

- Richard W. Hamming

  1. Make the requirements less dumb.
    (Aka, question the requirements.)
  2. Try very hard to delete the part or process.
    (Aka, the best part is no part. The best process is no process.)
  3. Simplify and optimize the design.
  4. Accelerate cycle time.
  5. Automate.

- 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

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

90% of everything is crap.

– Sturgeon’s Law

[ed: …which has a corollary that I actually find optimistic: 10% of everything is not crap!]

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

Schrödinger’s Backup — “The condition of any backup is unknown until a restore is attempted.” — is overly optimistic.

– Jan Schauman

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

A cryptosystem should be secure even if everything about the system, except the key, is public knowledge.

– Kerckhoffs’s principle

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

To err is human; to manage error is system.

- Kevin Kelly

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

- Dave Cheney

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

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

– Alan Perlis

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

– Alan Perlis

Simplicity does not precede complexity, but follows it.

– Alan Perlis

The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information.

– Alan Perlis

Bringing computers into the home won’t change either one, but may revitalize the corner saloon.

– Alan Perlis

In computing, invariants are ephemeral.

– Alan Perlis

A year spent in artificial intelligence is enough to make one believe in God.

– Alan Perlis

Computer Science is embarrassed by the computer.

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

- David Clark

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

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

Corollary:

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

-Douglas Hofstadter

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

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

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

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

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

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

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

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

– Philip Greenspun

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

corollary:

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, adapted (apocryphal?)

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.

- Me, 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)

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)

Progress is a new error message.

- Me

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

- Parisa Tabriz

The idea that new code is better than old is patently absurd. Old code has been used. It has been tested. Lots of bugs have been found, and they’ve been fixed. There’s nothing wrong with it. It doesn’t acquire bugs just by sitting around on your hard drive. Au contraire, baby! Is software supposed to be like an old Dodge Dart, that rusts just sitting in the garage? Is software like a teddy bear that’s kind of gross if it’s not made out of all new material?

– Joel Spolsky, Things You Should Never Do, Part I

The first step in fixing a broken program is getting it to fail repeatably.

- Tom Duff

It is basically always the case that the long-term costs of keeping a system working reliably vastly exceed any inconveniences you encounter while building it.

- Dan McKinley, Choose Boring Technology

Don’t gloss over a routine or piece of code involved in the bug because you “know” it works. Prove it. Prove it in this context, with this data, with these boundary conditions.

- Andrew Hunt

If you ever talk to a great programmer, you’ll find they know their tools like an artist knows their paintbrushes.

- Bill Gates

A clever person solves a problem. A wise person avoids it.

- Albert Einstein

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

computers think using etchings in poisoned sand and measure time using vibrating crystals so if you were looking for magic you found it

-@computerfact

A computer should never ask a question if it should be able to work out the answer.

- Unknown

If it hurts, do it more often.

- Unknown; popularized by Martin Fowler et al

Digital information lasts forever – or five years, whichever comes first.

- Jeff Rothenberg

a popular myth is that people who are Very Computer have computers that work. nothing could be further from the truth. the Very Computer are capable of generating much more novel and fascinating ways to make computers not fucking work and exercise this capability wantonly

– @cakesandcourage

Sometimes in engineering you need to do the wrong thing in order to figure out what the right thing is.

– Tim Angus

The severity of an incident is measured by the number of rules broken in resolving it.

– Jan Schauman

If a postmortem follow-up task is not picked up within a week, it’s unlikely to be completed at all.

– Jan Schauman

UTC or GTFO.

– Jan Schauman

Very few operations are truly idempotent.

– Jan Schauman

“Asserting state” beats “monitoring for compliance” any day.

– Jan Schauman

If you determine “human error” as the root cause, then you’re doing it wrong.

– Jan Schauman

There are very few network restrictions creative and determined use of ssh(1) port forwarding can’t overcome. This is both incredibly useful and concerning.

– Jan Schauman

It is tempting to jump right into implementing a solution when the right thing may well be to not do the thing that requires the solution in the first place.

– Jan Schauman

Turning things off permanently is surprisingly difficult.

– Jan Schauman

Debugging any sufficiently complex open source product is indistinguishable from reverse engineering a black box.

– Jan Schauman

At some point in your career you will implement half of Kerberos. Poorly.

– Jan Schauman

CAPEX budget always increases, OPEX budget always decreases.

– Jan Schauman

That completely automated solution you set up requires at least three manual steps you didn’t document.

– Jan Schauman

Software projects sorted by increasing difficulty:
– criticizing existing thing
– maintaining own thing
– rewriting own thing
– writing a new thing
– rewriting somebody else’s thing
– maintaining somebody else’s thing
– moving from old thing to new thing
– turning off old thing

– Jan Schauman

One in a million is next Tuesday.

– Larry Osterman

To consult the statistician [or, in our case, peer-reviewer] after an experiment is finished is often merely to ask him to conduct a post mortem examination. He can perhaps say what the experiment died of.

– Ronald Fisher

(also see Notes on Progress: Doing science backwards, We don’t know how to fix science)

The Lindy Effect is a heuristic that the future life expectancy of non-perishable entities is proportional to their age. The longer something has already lasted, the higher likelihood it will continue to endure.

– Matt Rickard

Corollaries:

The longer a feature has been on the product roadmap, the longer it’ll tend to remain on the roadmap.

– Shreyas Doshi

The longer a technology has been in an organization, the longer it will take to move off that software.

– Packy McCormick

the most consequential figures in the tech world are half guys like steve jobs and bill gates and half some guy named ronald who maintains a unix tool called ‘runk’ which stands for Ronald’s Universal Number Kounter and handles all math for every machine on earth

– 6thgrade4ever

A sign you’ve created a good infrastructure abstraction is that AWS offers it as a service.

– Jay Kreps

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.

- Ted Biggerstaff, via Will Tracz

ORM is the Vietnam of Computer Science.

– Ted Neward

test && commit || revert

– Kent Beck

It’s always a great feeling when you fix the last bug in a software project. With a big enough project you can have that feeling every few hours, forever.

- Unknown

There are two ways you can get exercise out of a bicycle: you can “overhaul” it, or you can ride it. On the whole, I am not sure that a man who takes his pleasure overhauling does not have the best of the bargain. He is independent of the weather and the wind; the state of the roads troubles him not. Give him a screw-hammer, a bundle of rags, an oil-can, and something to sit down upon, and he is happy for the day. He has to put up with certain disadvantages, of course; there is no joy without alloy. He himself always looks like a tinker, and his machine always suggests the idea that, having stolen it, he has tried to disguise it; but as he rarely gets beyond the first milestone with it, this, perhaps, does not much matter. The mistake some people make is in thinking they can get both forms of sport out of the same machine. This is impossible; no machine will stand the double strain. You must make up your mind whether you are going to be an “overhauler” or a rider.

– Jerome K Jerome

Having a discussion about technical debt is a luxury. Being able to talk about technical debt implies success.

- Kelly Sutton

Every problem is the result of a solution to another problem.

– John A. Norton

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

- Brian W. Kernighan

I really didn’t foresee the Internet. But then, neither did the computer industry. Not that that tells us very much of course – the computer industry didn’t even foresee that the century was going to end.

- Douglas Adams

It is generally recognized that the current approach of using IP address both as a locator and as an identifier was a poor design choice.

When you’re on call at Google, you have the temporary equivalent authority of a VP.

- Google internal, via SRE Prodcast

New inventions start out novel, slightly broken, and eventually become utilities.

- Simon Wardley

15 thoughts on “Software engineering quotes

  1. Pingback: sonicrocketman

Leave a Reply

Your email address will not be published. Required fields are marked *