1 minute read

When I recently read this excellent book, I have already finished dozens of books related to software engineering, and I have spent almost two decades in the industry. Why is it relevant? Because I have difficulties recommending this book without any limitations.

I have seen many failures and also many successes throughout my career. Some lessons I needed to learn from my own mistakes and others I could learn from various sources. I consider myself an experienced software engineer and software engineering manager with a good understanding of how we should develop software. And this book just touches my heart in every aspect. It advocates for the right core values and principles.

But why can I not recommend this book to everyone?

Because it requires a certain level of maturity in our industry. This book is definitely not for juniors or anyone with a few years of software engineering experience. In my opinion, they are still struggling with more basic ideas, such as TDD, CI/CD, simple design, pair programming, SOLID, and so forth, so more advanced topics such as cohesion, modularity, separation of concerns, abstraction, and coupling would surely not understood by them.

However, for experienced software engineers and for software architects this book is a true gem.

What I truly appreciated is that it does not talk about one particular methodology, technique, framework or tool, but about the fundamentals. For example, it talks about working iteratively and feedback instead of Agile or Scrum.

What I liked the most:

  • Talks about the true fundamentals
  • Includes valuable references to other great literature
  • Helps for further refining or structuring existing knowledge about software engineering

What I didn’t like much

  • Not for everyone, requires a certain level of maturity and experience

Comments