Adam Tornhill
Swedish programmer with degrees in engineering and psychology; author of Your Code as a Crime Scene and founder of CodeScene.
Clean Code by Robert C. Martin
Clean Code is another standard recommendation, but that one wasn't for me. There are useful design principles in there worth studying, but the book as a whole is too narrow and a bit too dogmatic for my taste. Your mileage might vary.
on adamtornhill.substack.com · 11 Aug 2026
Facts and Fallacies of Software Engineering by Robert L. Glass
Facts and Fallacies of Software Engineering by Robert L. Glass. In essence, this is a book about an industry that refuses to learn. That was true 25 years ago when this book was published, and it's probably twice as true today. (Just think about all the AI adoption metrics being rolled out — back to productivity mistaken for lines of code produced, only more elaborate. And expensive). What I like about this book is that Glass doesn't present anything new. Quite the opposite, actually. Rather, it's about research lessons that we all should know, but tend to forget. Ever had to do an estimate, or plan according to a requirements spec? Or maybe you thought that enough eyeballs make all bugs shallow? Then this book is for you. A great work by a fantastic author.
on adamtornhill.substack.com · 11 Aug 2026
Let Over Lambda by Doug Hoyte
Let Over Lambda by Doug Hoyte is perfect for those three people in the world who find The Art of the Metaobject Protocol underwhelming. One of the most impressive books I've read.
on adamtornhill.substack.com · 11 Aug 2026
Multi-Paradigm Design for C++ by James O. Coplien
Multi-Paradigm Design for C++ by James O. Coplien. Twenty years after reading this, the core techniques are still with me. These are commonality analysis, where the purpose is to identify families of systems, and variability analysis, which focuses on capturing the domain parameters that vary. In essence: the foundation of great software design.
on adamtornhill.substack.com · 11 Aug 2026
Paradigms of Artificial Intelligence Programming by Peter Norvig
Paradigms of Artificial Intelligence Programming by Peter Norvig. Learning the AI described in this book probably won't land you a job today. But reading the code examples will transform how you think about source code. The book shines when it comes to code comments, a topic that I've never seen demonstrated well in other sources. Here we get to see how comments become valuable as a narrative that explains both intent and reasoning. Brilliant, just brilliant.
on adamtornhill.substack.com · 11 Aug 2026
Smalltalk Best Practice Patterns by Kent Beck
Smalltalk Best Practice Patterns. True, Kent Beck is better known for his later work, which is excellent too. But Smalltalk Best Practice Patterns is particularly strong on coding style. I learned a lot by just reading the code examples. Small tweaks to names and abstractions add up. No one captures that better than Kent.
on adamtornhill.substack.com · 11 Aug 2026
Structure and Interpretation of Computer Programs by Harold Abelson
Structure and Interpretation of Computer Programs (SICP) by Gerald Jay Sussman and Hal Abelson. SICP is my all-time favourite programming book. It's also where I learned about the power of wishful thinking when coding. SICP uses wishful thinking as a design tool: write code as if the abstraction already existed. Pretend. Then, once the ideal abstraction has taken shape, you go ahead and implement those functions. This meta-level is what made SICP so valuable. Ultimately, it's a book that teaches how to think about code and problem solving. I'm tempted to even say that SICP is more a work of art than a pure coding book, but I won't go there. A beautiful book.
on adamtornhill.substack.com · 11 Aug 2026
The Design of Design by Frederick P. Brooks
The Design of Design by Frederick P. Brooks. It never received the attention that The Mythical Man-Month got, yet The Design of Design shares many of its qualities. It's a book that grows, and there's a wealth of insights on offer.
on adamtornhill.substack.com · 11 Aug 2026
The Little Schemer by Friedman and Felleisen
The Little Schemer by Friedman and Felleisen. This book won't teach you Scheme. Rather, it teaches something more valuable: it teaches how to think recursively.
on adamtornhill.substack.com · 11 Aug 2026
The Mythical Man-Month by Frederick P. Brooks
First, Refactoring, Domain-Driven Design, and the Pragmatic Programmer are all classics for a reason. Amazing books, and mandatory reads. Working Effectively with Legacy Code deserves all its praise, and of course everyone (yes, really) should check out the Mythical Man-Month.
on adamtornhill.substack.com · 11 Aug 2026
The Nature of Code by Daniel Shiffman
This book is a beautiful introduction to simulations of natural systems. We get concise prose, clear illustrations, and carefully chosen systems with a guided tour through the math. All done in the Processing language, which is fun and easy to pick up. The reason I like this book so much is probably due to timing. In 2013, I was on the verge of abandoning software development. I was fed up. (That's a story for another time.) Instead, I planned to go into cognitive psychology full-time as a researcher. This book brought back the joy in programming for me. Sometimes, a good book is the book that motivated you.
on adamtornhill.substack.com · 11 Aug 2026
Thinking Forth by Leo Brodie
Thinking Forth by Leo Brodie. I used to have this habit where I learned various programming languages. To challenge my perspective, I chose languages from families and paradigms that were fundamentally different from what I already knew. Occasionally, I stumbled upon greatness. Thinking Forth presents programming as a creative process, and it delivers those lessons in an entertaining and pedagogical way. The book is particularly strong on software analysis and design, but it's the execution and technical writing that brought the book to my top five. This is the book for anyone writing about software — Leo's way is the way to do it.
on adamtornhill.substack.com · 11 Aug 2026
Working Effectively with Legacy Code by Michael Feathers
First, Refactoring, Domain-Driven Design, and the Pragmatic Programmer are all classics for a reason. Amazing books, and mandatory reads. Working Effectively with Legacy Code deserves all its praise, and of course everyone (yes, really) should check out the Mythical Man-Month.
on adamtornhill.substack.com · 11 Aug 2026
Everything Adam Tornhill recommends — not just books — on rcmnd →