It's a really good book that talks about software development fundumentals. It didn't change my mind, as I already knew most of it. However I found it useful to reiterate the argument why those fundumentals are important. I did find the book a bit repetitive at times, but not enough to be distracting.
The book is well structured and easy to follow. The book suggest two main parts which we should optimise for: learning and complexity.
“Optimize for Learning,” looks at how we organize our work to allow us to make progress in small steps. How do we evaluate if we are making good progress or merely creating tomorrow’s legacy system today?
“Optimize for Managing Complexity,” explores the principles and techniques necessary for managing complexity. This explores each of these principles in more depth and their meaning and applicability in the creation of high-quality software, whatever its nature.
The book also covers important topics like: What is software engineering? Is it a craft or engineering? How to measure software? How to evaluate external tools? and more.
I would recommend this book to all software devevelopers, senior or junior.