Programming computers is hard because, as Hal put it, it isn't about programming, and it isn't about computers.

A wizard conjuring a computer program. Generated by Dall-E

Even the most mundane of programming issues are rooted in profound questions:

  • "Why are my dependencies broken?" => "What is causality?" [1]
  • "Should I check for null?" => "When can we know a program is correct? Design time, compile time, or run time?" [2,3]
  • "Why don't I understand this code?" => "What is memory, cognition, and language?" [4]
  • "Why is this program buggy?" => "What is a proof?" [5,6]

While you'll overhear the questions on the left rising from the desks of developers on a Tuesday afternoon, their answers are surprisingly elusive and timeless.


  1. Program Actions as Actual Causes
  2. Null References: The Billion Dollar Mistake
  3. The Three Levels of Software
  4. Tacit knowledge
  5. Curry-Howard correspondence
  6. Would aliens understand lambda calculus?