January 31st, 2021 update

Over the last few months, I've been a little bit quiet sitting in my apartment reading books, writing code, and working on Humans & Code. I've read books on XP, Agile, TDD (inside-out, outside-in), DI, project planning, object-oriented programming, object design, connascence, psychology, productivity, and even some classic philosophy.

This has enriched my thinking. I've been contemplating the direction we're taking with solidbook.io, both from a content perspective and a cadence perspective.

With that in mind, I'd like to share two significant updates concerning both of these things.

Let's start with the content first.

Putting the mission back in focus

After coming across many patterns, principles, and approaches to developing software after eight months of buying and reading every essential programming I could find and afford, I first started writing this book.

The institutions have failed us.

As a JavaScript developer discovering the sheer amount of knowledge I was missing after five years of college and university, I felt like I needed to write this book for my peers.

Getting started, I was excited to distill what I've learned about topics like Clean Architecture, Event Sourcing, connascence, design principles, patterns, and their architectural equivalents.

I still want to discuss these topics, but I now think there's something more fundamental we need to do.

Two types of knowledge

Have you ever read a book and felt like it just talked about a lot of cool things, but you didn't learn how to do anything? Books that discuss many topics but don't teach you how to take practical action in different situations?

The ancient Greek philosopher, Aristotle, differentiates between two intellectual wisdom types: in his book, The Nicomachean Ethics.

  • sophia: which translates to philosophy (i.e.: from Greek"*philosophia*"), meaning the "love of wisdom." Easy to logically construct and teach.
  • phronesis: which translates to the practical wisdom.

Now, both types of knowledge are important. But to me, one is more important in a programming book.

If you guessed phronesis (practical wisdom), you're right. With that in mind, I've revisited what I would like readers to step away with after having read this book.

The goal of this book

While there are specific goals to the book that we outline in the introduction (like understanding how and to organize your code into layers and how to use the SOLID principles to prevent tightly coupled and untestable code), I think the goal of this book needed a proper revision.

Here's where I've landed.

💡 The goal: A book for junior developers and new grads. To uncover the common unknown unknowns of software design and architecture from clean code to microservices (sophia). From object-design to Domain-Driven Design (sophia). This book distills the most influential ideas and practical wisdom from classic programming books, teaching you how to write testable, flexible, maintainable code along the way (phronesis).

An outline and timeline

In Growing Object-Oriented Programming Guided By Tests and Extreme Programming: Explained, there's the walking skeleton concept. It's the test-driven approach to building out your very first feature in a new project. The idea is that create the minimal amount of architecture necessary to get a full E2E acceptance test up and running. That means a little bit more work upfront, but it also means get a general idea of the architecture and understand, from the get-go, how to deploy, test, and confirm that it's working. Not only that, but you now have a clean way to ensure there aren't any regressions. If you want to do Agile properly, this is an exceptional approach to ensure you can consistently contribute value to each iteration/sprint.

Taking inspiration from this idea, I think we need to consolidate on the outline for the book.

Having read 2 or 3 books a day over the past few weeks, I think we're in much better shape to do this now.

It's time to practice what we preach. Like Jean-Paul Sartre said, "I am my philosophy." In true Agile fashion, I'm working on completing the book's final outline: the walking skeleton.

After I have the outline, I want to get rigid about a timeline, share that with you, and stick to making progress over the next few months until it's done.

Thank you!

The next email you get from me will be the final outline containing the timeline — I'm hoping to complete the book within Mid-April 2021 to May 2021, but I'll follow up with you on that.

Again, thank you for your support on this project. I'm grateful for the book and blog readers, the emails I get, and those of you helping out each other on Twitter and the DDDForum GitHub page.

Finally, if you want a say in the book's final outline, please feel free to send me an email. Otherwise, keep on the lookout for my next email.

Cheers!