My absolute favorite to kick off this list:

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

– Phil Karlton

later evolved to

“There are two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.”

If you are wondering how naming things could be hard, I suggest checking out these posts [0] [1].

“A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system.” (Gall’s law)

– John Gall

“Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.”

– Edsger W. Dijkstra

“Excessive complexity is nature’s punishment for organizations that are unable to make decisions.” (Gregor’s law)

– Gregor Hohpe

“If you don’t fail at least 90 percent of the time, you’re not aiming high enough.”

– Alan Kay

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

– Rob Pike

Programming Is About Code, But Programs Are About Data: All programs transform data, converting an input into an output. Start designing using transformations.

– David Thomas & Andrew Hunt, The Pragmatic Programmer

“Developers are drawn to complexity like moths to a flame, often with the same outcome.”

– Neal Ford

First make it work, then make it right, and, finally, make it fast.

– Kent Beck

“Focus is about saying, No. And the result of that focus is going to be some really great products where the total is much greater than the sum of the parts.”

– Steve Jobs, WWDC 1997

Writing more code than you need results in Ugly, Large and Slow code. Ugly: Leaves places for bugs to hide. Large: Ensures incomplete tests. Slow: Encourages the use of shortcuts and dirty tricks.

– Bjarne Stroustrup

“I’m not going to refactor the code yet, because the code doesn’t know yet where it wants to go.”

– Kent Beck

“The general tendency is to over-design the second system, using all the ideas and frills that were cautiously sidetracked on the first one.” (Second-system syndrome)

– Frederick P. Brooks Jr., The Mythical Man-Month: Essays on Software Engineering

“At scale, everything breaks no matter what you do and you have to deal reasonably cleanly with that and try to hide it from the people actually using your system.”

– Urs Hölzle

“Problems can usually be solved with simple, mundane solutions. That means there’s no glamorous work. You don’t get to show off your amazing skills. You just build something that gets the job done and then move on. This approach may not earn you oohs and aahs, but it lets you get on with it.”

– Jason Fried

Nathan’s four Laws of Software:

  1. Software is a gas. Software always expands to fit whatever container it is stored in.
  2. Software grows until it becomes limited by Moore’s law. The growth of software is initially rapid, like gas expanding, but is inevitably limited by the rate of increase in hardware speed.
  3. Software growth makes Moore’s law possible. People buy new hardware because the software requires it.
  4. Software is limited only by human ambition and expectation. We will always find new algorithms, new applications, and new users.

– Nathan Myhrvold

“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

“Unfortunately, most warning systems do not warn us that they can no longer warn us.”

– Charles Perrow, Normal Accidents: Living with High Risk Technologies

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

– Douglas Hofstadter

“When a measure becomes a target, it ceases to be a good measure” (Goodhart’s law)

– Charles Goodhart

“What is important is seldom urgent and what is urgent is seldom important.”

– Dwight D. Eisenhower

“Risk is what’s left over when you think you’ve thought of everything.”

– Carl Richards

“You can’t connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something — your gut, destiny, life, karma, whatever. This approach has never let me down, and it has made all the difference in my life.”

– Steve Jobs

“It isn’t what a man has that constitutes wealth. No–it is to be satisfied with what one has; that is wealth. As long as one sorely needs a certain additional amount, that man isn’t rich.”

– Mark Twain

“Reports that say that something hasn’t happened are always interesting to me, because as we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns—the ones we don’t know we don’t know. And if one looks throughout the history of our country and other free countries, it is the latter category that tends to be the difficult ones.”

– Donald Rumsfeld