October 17th, 2022 update
❗ Originally posted via the #solidbook-chat discussion in Discord. Join here in order to contribute to the discussion.
Hello all,
As promised, I've have an update for you all on the current status of the book.
Introducing The Essentials: The 80-20 of Software Design & Architecture
Perhaps the most valuable aspect of this book is the demonstration and explanation of my process for writing scalable code, developed through studying, practicing, and teaching other developers the Phronimos patterns, principles, and practices.
To my knowledge, there is no other faster way to learn the essentials of software design and architecture than this.
The Essentials are:
- Domain discovery: Discovering & decomposing the essential complexity of the domain
- Essential architecting: Composing an architecture determined by the Essential Needs of the customer, users, and developers
- Vertical splitting: Implementing features agnostically, guided by tests
- Horizontal splitting: Encapsulating concerns into layers & patterns
- Abstraction design: Inventing, choosing & integrating abstractions
- Integration testing: Testing infrastructure to feature connection
- Deploying & delivering: Ensuring and maintaining quality standards
- Strategy & Planning: Performing The Essentials efficiently in the real-world against time, value, people, and complexity constraints
The Shift from a Code-First Developer to a Software Essentialist
The biggest shift you make as a software designer is the shift from being a code-first developer to a software essentialist.
Instead of getting bogged down in libraries, frameworks, tools, and technical nonsense from the start, beginning with a large amount of Accidental Complexity, you start from the essential and carefully manage the way you add levels of Necessary Accidental Complexity.
Huge.
Wrote Current Book Structure & First Iteration Target
Feeling very happy with the way the book is shaping up to serve both the needs of the readers at work (reference) and at study (learning).
I've taken all of your questions and concerns and turned them into a general structure.
I've attached an image to show you generally what the overall book looks like at the moment.
Note that you may not see your key questions / topics / comments at this level at this particular scope, but don't worry, I've got them.
If you have any doubts, please respond to this message and ask me "where are you going to show/demonstrate/talk about [insert problem/topic] and I'll answer you. Stuff that is in scope is in there.
Varying levels of scope based on the reader's intent
It doesn't look like half at the moment, but the first half of the book covers many of the foundational software design and architecture topics, but it only goes to the absolute required level of detail so that you can continue to follow along and do the challenges.
In the final part (the phronesis archives), you'll find the more detailed discussions linked to and from the first half designed for study instead of reference.
What's next?
- Timelines coming soon. I am currently in the process of expanding on chapters and coming up with estimates of timelines for when you can expect them. Will post more details ASAP.
- First iteration of the first few chapters. I will be writing, finalizing, then testing the first few chapters against a small number of readers.
Common questions
- What about the other sections - when can I see what those will contain? Soon! I'm still fleshing everything out, but very shortly, I'm going to start getting feedback on the first sections few sections in the book for the first iteration.
- What about the reference section towards the back of the book? That's still there. I haven't fully broken it into sections and subsections yet.
- I don't see my questions/concerns I left feedback about in the ToC / what gives?. Mentioned this already, but if you have a question about where a topic fits into the book, ask! I'll let you know if it's in there and to which extent it will be covered.