Skip to content

Software Design & Engineering

  • Structure and Interpretation of Computer Programs by Abelson & Sussman (1996) — The wizard book. Abstraction, recursion, interpreters, metalinguistic. PDF
  • A Philosophy of Software Design by John Ousterhout (2018) — Deep modules, complexity management. Best modern design book. (copyrighted)
  • Designing Data-Intensive Applications by Martin Kleppmann (2017) — The definitive guide to distributed data systems. Essential reading. (copyrighted)
  • The Pragmatic Programmer by Hunt & Thomas (2019) — Timeless software engineering wisdom. Tracer bullets, DRY, orthogonality. (copyrighted)
  • Clean Code by Robert C. Martin (2008) — Naming, functions, formatting. Controversial but influential. (copyrighted)
  • Design Patterns by Gamma, Helm, Johnson, Vlissides (1994) — The Gang of Four book. Know these patterns even to argue against them. (copyrighted)
  • The Mythical Man-Month by Frederick Brooks (1975) — Adding people to a late project makes it later. Still true. (copyrighted)
  • Code Complete by Steve McConnell (2004) — Encyclopedia of software construction practices. (copyrighted)