I like the books and most of the videos created by Uncle Bob. Maybe sometimes they are a bit too simplistic, but they help to provide a better understanding of how you should write good quality code. And if you find that a topic is not deeply analyzed enough, you can still explore it later on your own.

I’ve read quite a few books about clean coding principles or about good coding practices. What I missed a bit is more about software architecture. Hence I enqueued some books about that topic and I started to read them recently.

The first book on my list was Clean Architecture: A Craftsman’s Guide to Software Structrure and design by Robert C. Martin, a.k.a Uncle Bob.

As it’s usually true for his writings, this book is really readable and tries to teach you some lessons through real or imaginary stories instead of just via dry rules. In other words, it seems ideal to introduce software architecture for someone who already has some experience as a developer, but is not an experienced designer.

Besides the book is also a reminder of the most important clean coder principles and in addition, it reminds you what attitudes being a professional software developer means. This latter is something many juniors and even “mediors” really miss in my opinion.

I don’t want just to mention a few of explained disciplines, because it would mean I skip too many important. Instead, I would just mention only two thoughts of Uncle Bob that I find really important and not necessarily evident in all the software companies.

“First of all, a software architect is a programmer; and continues to be a programmer.”

“Of all the aspects of a software system, maintenance is the most costly.” Now this is something really important and something that another book called Code Simplicity: The Fundamentals of Software explains much more in detail. This is so important that soon I’m going to speak about it to our newcomers. Most probably not just newcomers, but more experienced developers and managers should learn about too.

The question is how to minimize that cost, right? According to Uncle Bob ” the goal of software architecture is to minimize the human resources required to build and maintain the required system.”, In other words, invest in your software architecture and you will spend less money on maintenance in the long run. And never forget: “the only way to go fast, is to go well”.