Readings
A curated list of books, articles, and resources I return to when thinking about software engineering, system design, and the craft of building things.
Books
-
A Philosophy of Software Design
John Ousterhout's guide to managing complexity in software systems. The concept of 'deep modules vs. shallow modules' is one of the most practically useful mental models I've found.
-
Designing Data-Intensive Applications
Martin Kleppmann's deep dive into the principles behind reliable, scalable, and maintainable systems. Essential reading for anyone building distributed systems.
Articles
-
A beloved meditation on complexity and simplicity told from the perspective of a developer who deeply fears the complexity demon. Required reading.
-
Sandi Metz on why 'duplication is far cheaper than the wrong abstraction' — a short post that permanently changed how I think about refactoring.
Other Resources
-
Jeff Atwood's long-running programming blog. One of the formative voices on what it means to write software thoughtfully and with care for the humans who read it.
-
A continuously updated collection of essays on software design, architecture, and process. The entry on strangler fig pattern alone is worth bookmarking.