Mike Gunderloy’s Coder to Developer purports to pass along the wisdom of experienced developers (or, at least, one experienced developer) and explain the practices and techniques that aren’t taught in school, but which make development work a lot easier. He’s aiming, in short, for the same target that The Pragmatic Programmer aimed for.

But he doesn’t hit it, exactly. Gunderloy’s book isn’t a bad book — it’s well organized, it’s up-to-date, it has lots of useful information — but it’s not exactly what it purports to be. A more accurate title would be Best Practices for Developing Software with Small Teams in .NET — because while there is some general advice here, it’s fairly obvious and high-level; the detailed and worthwhile parts of the book are those that delve more specifically into an overview of the tools available to .NET developers. There’s a chapter on using Visual Studio well, a chapter on build tools for .NET, a chapter on version control options, a chapter on .NET unit testing tools (with NUnit examples), and so on.

Gunderloy also has an odd habit of including topics by reference. When he talks about making schedules, for instance, he basically says, “Go read Joel’s essay,” provides a URL, and then goes from there. This isn’t necessarily a bad idea — Joel’s essay is well-written and sensible, so why should Gunderloy bother rewriting it just to slap it in his book? — but it feels very un-book-like.

Really, the whole book feels more like a Web page or a blog than a proper book. Everything in it is very much of the now — all those reviews of tools will be obsolete in two years, when the tool landscape has changed; and even the links to Web essays might be broken as URLs drift — and there’s very little timeless wisdom. So, if you’re reading this in 2004, are developing in .NET, and want to get a broad overview of the tools landscape for that environment, this is a fine resource; but if you’re reading this later or using a different environment, this isn’t the book for you.


{{comment.name}} said {{timeAgo(comment.datetime)}}