As the lone developer working for a large engineering company, all of my training had been OTJ. It quickly became apparent that I needed to find better ways to design, develop, and produce high quality software. I began to read everything I could get my hands on about software, design, usability, databases, design patterns, testing, and architecture. I was particularly interested in design patterns. I had read several books on the subject (my personal favorite being Head First Design Patterns), and was looking for new examples of the patterns I had already begun putting into practice.
While browsing the shelves at a Barnes and Noble in Houston, TX, I happened upon a book called Agile Principles, Patterns, and Practices in C# by Robert Martin. I did not realize it at the time, but that book would forever change me as a software developer (I read the book cover-to-cover that weekend).
This book is filled with a library of knowledge, but is very well edited, removing the fluff and leaving the reader with only the white meat. It often reads like the Tao Te Ching, offering insight and wisdom that must be reflected upon and internalized in small pieces before eagerly moving on. Each chapter is succinct and provides simple and appropriate working examples that can be put to use in your own code or process right away - but it does something more.
This book uses the principles as a jumping off point to introduce deeper programming concepts (“code smells”, design pattern usage, TDD, assembly and dependency management, and refactoring). Rather than a comprehensive compendium of rules and dogma (although Robert Martin does provide anecdotes and evidence to support his assertions), it provides a blueprint for agile philosophy, and you the reader, are left to implement them in the manner best suited for your circumstance.
I was profoundly affected and influenced by the substance of this book and did not want the knowledge to end. It validated some of my existing beliefs, gave new perspective to older ones, and provided me an entirely new lexicon to pull from. The principles, concepts, and ideas enumerated in this book form the basis of our core development philosophy at Envoc.
Agile Principles, Patterns, and Practices in C# can be purchased for about $60, and it is worth every penny. Put in the time, effort, energy, and erudition necessary to absorb the information contained within and you will have no choice but to become a better developer and professional.