TB: Hackers and Painters (Paul Graham)

Core Thesis

Hackers are makers — closer to painters than to scientists. Great hacking requires taste, empathy, and the willingness to think what you're not supposed to think. A programming language should be malleable because programs are how you think, not how you express what you've already thought. The best design is timeless; the best systems are ones that can be rewritten as understanding evolves.

Key Takeaways

Hackers as makers

  • Hackers start original and get good; scientists start good and get original.
  • The best hacking has morale at its core: if you're bored when building something, the result will be boring.
  • If you can imagine someone surpassing you, you should do it yourself.
  • Aiming at timelessness is also a way to evade the grip of fashion. The only style worth having is the one you can't help.

Empathy is the core skill

  • Empathy is probably the single most important difference between a good hacker and a great one.
  • Programs should be written for people to read, and only incidentally for machines to execute.
  • A test of empathy: can you explain a technical matter to a non-technical person without using jargon they don't know?

Thinking what you're not supposed to think

  • If everything you believe is something you're supposed to believe, that is almost certainly not a coincidence. You probably just think whatever you're told.
  • Great work tends to grow out of ideas others have overlooked, and no idea is so overlooked as one that's unthinkable.
  • Draw a sharp line between your thoughts and your speech. Inside your head, anything is allowed.
  • Argue with idiots, and you become an idiot.

Design and iteration

  • It's unrealistic to expect program specifications to be perfect. Write programs in a way that allows specifications to change on the fly.
  • Plans are just another word for ideas on the shelf. When good ideas arrive, implement them.
  • The best writing is rewriting. Worse is better — a rough sketch refined is better than a perfect outline executed mechanically.
  • Committees yield bad design. Their worst danger is that they interfere with redesign.

On wealth and leverage

  • If a job feels safe, you will not get rich — because if there's no danger there's almost certainly no leverage.
  • To say a certain kind of work is underpaid is identical to saying people want the wrong things.
  • You need rich people in society not because they create jobs by spending, but because of what they have to do to get rich — they make things others want.

Programming languages

  • A programming language is for thinking about programs, not for expressing programs you've already thought of.
  • The main branches of the evolutionary tree of languages pass through those with the smallest, cleanest cores. The more of a language you can write in itself, the better.
  • Programming languages are not just technology — they're what programmers think in. Half technology, half religion.
  • After a certain age programmers rarely switch languages voluntarily; they tend to consider whatever they're used to as just good enough.

Mental Models

  • Take the Other Person's Point of View — empathy is Graham's core criterion for greatness as a hacker or designer
  • Inversion — Graham inverts the question: instead of what should I add, ask what can I not help but include (the only style worth having)

Source note