Steve McConnell's newest book, Code Complete, Second Edition, is now on the market. I was a big fan of the first book and I even attended McConnell's seminar by the same title. As of today, they still have my evaluation feedback listed on the Construx site:
"Although my company picked up the tab for me to attend this seminar, I would've paid for it out-of-pocket if I had to do so."
Both the book and the seminar influenced me greatly when I wrote this article for MSDN (first published in 1999). Sometimes I'll Google the article title to see who's linking to it. I've seen it show up on a college syllabus in Australia, lots of Visual Basic community sites and even in a book. In fact, the first edition of Tom Archer's, Inside C# mistakenly credited me (page 52) with influencing the C#'s team use of Pascal and camel casing when naming variables. Of course, I sent mail to Tom and he corrected this mistake in Inside C#, Second Edition. Fortunately, the C# team never caught wind of it, or at least they never hassled me about it.
Those familiar with the original book may ask McConnell, "Why did you write a second edition? Weren’t the principles in the first edition supposed to be timeless?" McConnell's response:
I’ve been telling people for years that the principles in the first edition were still 95 percent relevant, even though the cosmetics, such as the specific programming languages used to illustrate the points, had gotten out of date. I knew that the old-fashioned languages used in the examples made the book inaccessible to many readers.
Of course my understanding of software construction had improved and evolved significantly since I published the first edition manuscript in early 1993. After I published CC1 in 1993, I didn’t read it again until early 2003. During that 10 year period, subconsciously I had been thinking that CC1 was evolving as my thinking was evolving, but of course it wasn’t. As I got into detailed work on the second edition, I found that the "cosmetic" problems ran deeper than I had thought. CC1 was essentially a time capsule of programming practices circa 1993. Industry terminology had evolved, programming languages had evolved, my thinking had evolved, but for some reason the words on the page had not.
After working through the second edition, I still think the principles in the first edition were about 95 percent on target. But the book also needed to address new content above and beyond the 95 percent, so the cosmetic work turned out to be more like reconstructive surgery than a simple makeover.