Having just finished reading Steve McConnell's Code Complete for the second time, a few comments.

Though I have not read any of the books on Steve McConnell's top 10, Code Complete is on my top 10 programming texts, along with The Mythical man-month, Design Patterns and Martin Fowler's Refactoring.

For me the meat of the book is in the middle chapters, and it is worth slogging through the vaguer early parts to get at it.

Code Complete deals with the day-to-day practice of coding, and addresses it at a low level. It is useful because there really are no other comprehensive texts that aim squarely at that same area.

For instance, where else can you find discussions on how long a variable name should be, how long a procedure can be before it hinders readability and increases error rates, when not to use a while loop, and so on.

The only other work that I have seen that is close is Writing Solid Code, also on Microsoft press from the same era. I find "Writing Solid Code" less useful to me as it is more tightly focused on C programming, and spends much time on C language issues such as pointer errors. I don't write any C code, and so "Writing Solid Code" did not make my top 10. Code Complete, by contrast, deliberately gives examples in a variety of procedural programming languages.

If you are a new programmer, then Code Complete is worth a read to get you started on the good path. If you are a poor programmer, then it will help you lose poor habits, and develop good ones.

If you are a good programmer (of course you are, you know that you are above average!), then the book will help you polish your skills, and will provide you with reasons, and occasionally hard experimental data, to help you convince other people why your habits are superior.

IMHO, the main shortcoming of the book is that it betrays its origins in largely pre-OO programming mileau the early 1990s. Object-Oriented techniques are only briefly discussed, and one does not get the sense that OO is the mainstream programming paradigm. I guess it wasn't, then.

None of the examples are in java, in fact java is not even mentioned. I'm not a java bigot, but it is the most popular pure OO language these days, and often language of choice for teaching and for code examples. c++ doesn't get much airtime either, but c does.

Although good procedural coding forms the foundation of good OO programming, I would love to see an updated version of this book that forgoes the Fortan and Algol examples in favour of java, C++, Object Pascal, Python or other OO languages. He could even give code examples in Microsoft's new toy, C#, it would be equally valuable to demonstrate how the techniques apply in an OO design. Perhaps this would have brought the content into similar territory than the refactoring book, but it would be interesting and very valuable.

For practical software project management wisdom, you could try Steve McConnell's companion book Rapid Application Development, which is another of my 10 ten.

Update: The second edition of Code Complete, released in July 2004, addresses my issues with regards to Object-Oriented languages, and gives examples in java and C#.