I purchased my copy of Brownfield Application Development in .Net almost as soon as it hit the shelves. I’ve been reading Kyle Baley’s entertaining posts about software development on CodeBetter.com for several years, so I thought I’d get his and co-author Donald Belcham’s consolidated development advice in a handy paperback form.
I was surprised to read that Brownfield has been out for a full year now, and figured it was high time to post my review of it. (I’d been meaning to post a review of the book for several months, but it’s been on loan to several different people. I didn’t get it back into my possession until a few weeks ago, which should tell you something about its quality right away.)
Brownfield is about the tools and techniques required to get an existing .NET application under control. Sadly, most of us developers have encountered development projects that were rushed, cobbled together, barely functional messes. This book is about reworking the application and its surrounding environment so that development work can continue on a sustainable footing.
The book is divided into two parts: the ecosystem and the code. The ecosystem describes all the necessary components to support modern software development:
This was the most valuable part of the book. You’ll see these topics covered elsewhere, but they’re often scattered across vendor sites, developer forms, and programmer blogs. Having all these best practices gathered in one place is worth the price of the book alone. It makes a great checklist to use to evaluate the status of your current development projects as well as any future work you undertake.
I’ve also found it helpful to get Java developers or development teams up to speed on the .NET suite of tools and practices. It’s saved me a lot of time translating the “we used to do it like this in Java…” conversations into their .NET equivalents.
The second part of the book concerns coding practices that can help sort out a legacy codebase. I found this much less useful than the first section. While Brownfield provides a useful summary, much of this is material that is covered in depth elsewhere. The whirlwind tour of coding practices includes:
The final chapter in the list is the only one that touches on the project management aspects of getting an unruly development effort under control. Though it too is a topic that has been covered elsewhere, I was very glad to see that it was included in the book. I’ve found that a slapdash approach to application development reflects as much upon poor management practices as it does on a lack of programmer skills — if not more.
If you’re inheriting an old .NET application and don’t know quite where to begin, Brownfield Application Development in .NET is an excellent guide to tools and practices that can help get you started.