What caught my attention about Adaptive Code Via C# is that it combined Agile methodologies, design patterns, and SOLID Principles into one book and this was made readily apparent by the subtitle. When I came across this book, I was more interested in the SOLID Principles part as I’ve had a decent amount of experience working on Agile teams, and had a copy of the well-received Design Patterns book by the Gang Of Four, which I was certain that I wouldn’t learn anything new from Adaptive Code Via C# and that it would just be the same material. I was wrong. What I found while reading this book is that the author describes the Agile methodology in a way that is refreshing even if you’ve been on Agile teams before. I was also pleasantly surprised at how well the author described some design patterns in a way that wasn’t overly technical, but instead in a way that is more conversational and in easily digestible chunks.
The book does a good job of marrying the topics of Agile, design patterns, and SOLID together by describing the relationship between them and how they complement one another. The author starts off with an overview of Agile, the need for adaptive code in order to adapt to rapidly changing requirements, and the importance of managing dependencies and creating a layered architecture such that the overall architecture is structured in a way that promotes adaptability. As part of the same section, he also talks about design patterns and several in particular that lend themselves nicely to adaptive code. From there, the author then describes the SOLID Principles, what they are, what they mean, and how following the principles helps create code that is easily extendable and easily unit tested. I was aware of the SOLID Principles in theory, but this book included a lot of example code both before and after each principle was applied that really drove home just how valuable these principles can be when applied correctly. Lastly, the book finishes with a simulated Agile project that steps you through a couple of simulated sprints on a project, the dialogue the developers have, and how the design patterns and SOLID Principles are applied in a way that makes future additions much easier to integrate into the system.
Overall this book was very well written, fun to read, and I highly recommend it. If you’re not experienced with C# much, I wouldn’t let that prevent you from getting the book, a lot of the knowledge is easily applied to other languages. The author states that the target audience for this book is intermediate level developers, which I don’t necessarily disagree with, but I could see junior engineers learning a lot from this book provided that they are at a point that they at least have cursory understanding of design patterns and separation of logic. The piece on Agile is also a great refresher for those who have experience with it, but I imagine it is a valuable read for those who are new to the methodology.