Agile Principles, Patterns, and Practices in C# (Agile PPP) by Robert Martin. Is over 10 years old, but it is written in a way that stands the test of time. Even though C# is in the title, the book focuses not on specific C# conventions but how an agile software developer should think about code as they are writing it. Some might argue that the eight chapters on UML are not as important now but at a previous job the senior developer would always plan out his design on a whiteboard using UML and I wish that I had read these chapters then.

There were two sections of the book that really resonated with me and stood out from the other Technical Agile books that I have read. The chapters on the SOLID principles were written in a way that was very easy to understand yet went very deep into what constitutes violating the principles. Even better than the explanation of the principles is the narration by Robert Martin on how he thinks about these principles and the special situations that makes them more or less difficult to implement.

The second section of the book that has already impacted the way that I write code is the chapters on design patterns. In each chapter, Robert Martin does a great job of explaining his reasoning for choosing one pattern over another and what small changes in the design would have forced

 

him to choose a different pattern. In particular, I enjoyed the chapter explaining the visitor pattern, how to implement it, and how there is almost always a simpler way to solve your current problem.

Even though this book is over 10 years old, I would highly recommend picking it up at the very least for the chapters on the SOLID principles and design patterns. In the book, Robert Martin does an in depth walkthrough of coding up a payroll system with enough code that you could follow along in C# with the book. Unfortunately, I did not follow along. In a couple of years, I plan on returning to this book, because I know that I would gain a lot from coding the payroll system and revisiting the SOLID principles and design patterns.

 

Share This