Home > Book Reviews

After the Gold Rush
Steve McConnell

This is McConnell's fourth book on software engineering from MS Press, after Code Complete , Rapid Development, and Software Project Survival Guide. All of these were substantial and well-researched tomes on the nuts and bolts of software engineering, digging for best practices and showing how any organization could increase their productivity by taking advantage of well-known techniques. This book pulls back to take a broader overview of the field of software engineering. You can guess its thrust by the subtitle: "Creating a True Profession of Software Engineering".

Like the classic book by Fred Brooks, The Mythical Man-Month, this one is structured as a series of essays, interlocked but somewhat independent of one another. There are other similarities as well. Like Brooks, McConnell tries to understand the evolution of the software engineering profession by analogy to other fields and by measuring things. And like the earlier work, there's a polemic here as well as an examination.

It's quite clear that McConnell thinks increasing professionalism is not only inevitable but highly desireable. The outlines of this professionalism aren't always clear, but it involves:

McConnell's proposals are likely to be controversial, and indeed, I'm not especially convinced by them myself. I see two main points here to take issue with. First, his view of what practices compose proper software engineering is rather narrow. He has a list of best practices and specialties, and appears to believe that these best practices are universal across the entire field of software development (this may be in part due to the condensed nature of these essays, though). I think things are a bit richer and more diverse than that. It's interesting to contemplate, for example, the similarities between his exemplar of non-professional development, "code-and-fix", and the practices promoted by proponents of Extreme Programming (which I have written about elsewhere).

Second, much of McConnell's argument hinges on a perception of software development as a mature field. This, I think, is a category error based on the notion that everything from determining the location of the patch cords on the ENIAC to implementing a user interface in TK is fundamentally the same activity. I think that the field has been evolving so quickly that there's not really a core set of skills that every software engineer must share. It's as if one looked at the history of art from cave painting to pop art and tried to extract some core of skills that a certified artist required: a daunting task, to say the least.

McConnell recognizes this, of course. He argues that even though software development currently can be seen as art, craft, or science (among other things), what it ought to be is engineering. To his credit, he's not afraid to set this norm and argue passionately for it. And he's certainly a practiced proponent of his viewpoint. All in all, I give this book a strong +, even though I don't entirely agree with its central thesis.