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

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

– Alan Kay

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

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

– Kent Beck

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

“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

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

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

– Dwight D. Eisenhower