Here’s a list of books, articles, talks and other things that have changed the way I think in some way. Hopefully you’ll find something that will inspire you. Please let me know if you’d like to chat about any of these, or have any suggestions for things I might enjoy!
- John Ousterhout - A Philosophy of Software Design book — Probably the most useful book on how to structure software I’ve ever read. Contains great insights into what good software design is, and shows you a bunch of red flags that you can use to tell when these insights are violated.
- Daniel Jackson - Rethinking Software Design talk — Introduces the idea of concepts, purposes, principles and misfits as fundamental elements of software design, and how to use these to identify “bad smells” in software designs.
- Richard Gabriel - Worse is Better post — Old-school classic about the superiority of “worse-is-better” over the “the right thing” (aka. the “MIT approach”).
- Robert L. Read - How to be a Programmer free book — A useful set of “how to” guides for programmers of all skill levels, with particularly great insights into the “soft” skills. I come back to this every couple of years, and always feel like I understand more.
- Julia Evans - Wizard Zines zines — Playful but extremely information-heavy zines about essential technology (Linux, Bash, CSS, SQL, Docker, …).
- Martin Kleppmann - Designing Data-Intensive Applications book — The bible for everything related to practical distributed systems and databases. Tons of knowledge packed in very densely - very useful to use as a reference guide, especially when trying to choose between different databases or trying to do anything over the network.
- Jay Kreps - The Log: What every software engineer should know about real-time data’s unifying abstraction post — In-depth insight into some of the reasoning behind Apache Kafka and related systems which are essential for “big-data” architectures these days.