This author is claiming that the “essence” of software isn’t code, rather it’s concepts. He’s arguing that we should design software more on the conceptual level.
Concepts are the user’s mental model of how the software works, and how the big pieces of the software interact. He argues for designing these concepts along multiple axes:
Structure: what is the concept?
Purpose: why does it exist?
Composition: how does it relate to other concepts?
Dependency: what other concepts depend on it?
Mapping: how does it manifest in the UI?
Specificity: does it serve only one purpose?
Familiarity: is it shared with other applications?
Integrity: how does it “protect” itself from encroachment by other concepts?
I’ve known this as a “noun” analysis. When trying to learn new software, sometimes it’s helpful to analyze the “nouns” – the… things, in the software, that you do stuff with. That really helps you organize the software in your head.
What’s interesting is how relevant this is in the new era of AI-driven software development. Writing code is no longer the critical thing. What’s becoming more important is understanding how your users will use the software, and the models they will use to think about the problem domain.
Future software will likely be designed at the conceptual level, and here’s a great example:
This is a configuration language that I designed (…or maybe “evolved” over years of use). I wrote a detail specification for it, delineating the concepts behind it. Since then, I’ve had Claude Code implement it – write the actual code – for two different languages. It’s neat because it works the same in both, because the concepts are the same.
This is the future of software development. The book was ahead of its time.
Also, the book has an interesting format, in that it’s divided into two halves. The first half is the meat of the argument, without much elaboration of asides. The second half is basically an extended set of “notes” to the first half, in which the author tells colorful anecdotes and explains the concepts with more narrative. (The author is a professor at MIT, so if he was using this as a textbook, I think the students find that helpful.)
Finally, the author has an entire website in support of the book. It’s not just promotional – some of the content expands on and reinforces the concepts of the book.
Book Info
Author
Daniel Jackson
Year
Pages
336
Acquired
I have read this book. According to my records, I completed it on March 21, 2026.
A softcover copy of this book is currently in my home library.
I write a weird amount of code that needs dynamic configuration, meaning configuration which is supplied at runtime, not at parse or startup time. To configure, the code needs to read in a string of text (the “source”), and turn it into an object. I use these when configuring pipeline processes….