Brief synopsis of Agile Principles, Patterns, and Practices in C#
Agile Principles, Patterns, and Practices in C# is a book written for professional software developers working for large corporations that make banking software (coincidentally this is precisely the type of company the author’s consulting firm primarily serves). The scope of this text is quite broad. It covers object oriented design, UML diagrams, test-driven development, programming patterns, and much more. However, it does so with verbose explanations and overly complicated code examples. At its core this book is teaching some important concepts, but it does so in such an unnecessarily convoluted manner that I have to wonder if it was intentional. That is, so the author is ultimately hired by a large corporation as a consultant speaker to clear up all the confusion he created himself. Don’t get me wrong, there are some diamonds buried in this text. The only problem is that only the most clever and dedicated readers will have the tools (and the patience) to uncover them.
This book is 670 pages in length not counting the appendices and index at the end.
Print and binding quality
Agile Principles, Patterns, and Practices in C# looks great in hardcover format. The print, diagrams, and drawings throughout the text look very nice; on par with your typical high-quality text book. The font used is a little on the smaller side, but the layout has a large margin around each page which helps.
The target audience for this book is clearly a professional computer programmer working in a formal corporate environment. As mentioned below, the first 12 chapters have the highest value for game developers.
Relevance to game development
The relevance of this book to game programming is moderate. There are some good general programming techniques scattered throughout the book. However, this text could be so much more applicable. The author blows it by including so much extraneous information, using bloated overly complex examples, and covering UML diagramming techniques he himself admits are a waste of time. Seriously, he literally introduces many of these topics as a waste of time and then concludes in the respective section summary they are a waste of time. Let that sit with you for a moment.
How Agile Principles, Patterns, and Practices in C# should be read
If you’re going to tackle this book I recommend reading the UML diagramming chapters first (in the middle), the programming pattern chapters second (at the end), and then going back to the start to finish the rest. The author starts the book off by using UML diagrams and programming patterns he doesn’t explain until much later in the text. The original order the information is presented in makes no sense. You could, alternatively, ignore the UML diagrams and programming patterns and instead just read the first 12 chapters (174 pages) to get the best bang for your buck.
The funny pictures and jokes scattered throughout the book are the best feature. The author’s overall writing style is pretty good as well, but can at times come off as overly clever and even arrogant if you’re not fond of sarcasm and wit. Overall I think the first 12 chapters (174 pages) are the best. If I had to choose a single chapter as being the best it would have to be chapter 6 (A Programming Episode) in which the author and a colleague walk through the development of a program designed to calculate bowling scores. It’s presented in an iterative test-driven design fashion while the two have a conversation back and forth. This chapter did a great job demonstrating how the developers think about solving problems.
What I wish was different
This is a 700 page book that should have been a 300 page book. Seriously, this would be explosively good if all of the fluff and extraneous complexity were distilled off. I would love to see a summarized version of this text covering the core concepts with very succinct code examples with no unnecessary algorithms or math puzzles.
There are many typos and errors in this book. I say many because this is a translation of the original title Agile Software Development, Principles, Patterns, and Practices. I would have expected a lot of the more obvious typos to have been caught during the conversion process. The author is, however, a genuinely good writer.
Code quality in Agile Principles, Patterns, and Practices in C#
The code examples in the book are bad for several reasons. First, there is simply way too much code in this book. It’s unnecessary. Second, the examples used are overly complicated. The author is obsessed with making everything a puzzle; nothing is straightforward. When a simple concept is being demonstrated the author will always, and I mean always, insert some kind of math problem or algorithm to make things more complicated. Third, this book was converted from another language (C++ and Java presumably) but it does not utilize advanced C# language features. The conversion was pretty basic. Don’t expect to learn anything special about the C# language itself.
The author has a crass and sarcastic sense of humor. I can appreciate this, but based on some of the negative reviews on Amazon people tend to interpret this as arrogance. I will concede with the negative reviewers on Amazon that the author does attempt to be excessively clever/witty in his writing by inserting obscure literary references all over the place. In short, the jokes are good but he goes overboard with the cleverness at times. Yes, we get it, you read lots of books.
At the time of writing this book has 126 global ratings on Amazon with an average score of 4.5 out of 5 stars. Unfortunately the author has achieved legendary status in the software development community. I say this because it means the reviews are not likely to be as objective as I would like. There are only a few negative reviews and they correlate strongly with what I have already covered in my own review here.
Should you buy Agile Principles, Patterns, and Practices in C#?
I would not buy this book new, but if you can find it for a low price on the used market I would read the first 12 chapters. The rest of it can safely be skipped. Doubly so if you’re a game developer. That, or just read the introductions and summaries of the later chapters. I don’t regret my purchase and I did learn a lot. It just came across like the UI and crafting system in Animal Crossing: New Horizations: sadistic by design.