Many of you know Steve McConnell’s Code Complete. It’s been one of our most popular books since the first edition was published in 1993 and after we published Steve’s update, the second edition, in 2004. We see this through Amazon reviews, responses to our anonymous survey (http://www.microsoft.com/learning/booksurvey, via which you can give us feedback about any of our books), and ongoing sales and relevance years after initial publication (a goal for books in our Best Practices series, by the way), but here’s another measure that helps describe Code Complete’s importance and impact:
Three years ago someone asked this question on Stack Overflow, and since then Code Complete has often (perhaps always?) topped the list. Also, the question is currently the second most popular question of all time on Stack Overflow, with 1416 votes: http://stackoverflow.com/questions?sort=votes
An aside: Stack Overflow’s creators, as well as its users, greatly admire the book. Jeff Atwood named his blog, Coding Horror, after one of the book’s icons and calls it his “all-time favorite programming book.” And Code Complete and Rapid Development are on Joel Spolsky’s list of “all the books that I honestly think that every working programmer needs to read”: http://www.joelonsoftware.com/navLinks/fog0000000262.html.
A hearty congratulations to Steve McConnell for creating a book that so many find useful!
Here, for those unfamiliar with the book, are Code Complete’s contents:
Laying the Foundation 1 Welcome to Software Construction 2 Metaphors for a Richer Understanding of Software Development 3 Measure Twice, Cut Once: Upstream Prerequisites 4 Key Construction Decisions
Creating High Quality Code 5 Design in Construction 6 Working Classes 7 High-Quality Routines 8 Defensive Programming 9 The Pseudocode Programming Process
Variables 10 General Issues in Using Variables 11 The Power of Variable Names 12 Fundamental Data Types 13 Unusual Data Types
Statements 14 Organizing Straight-Line Code 15 Using Conditionals 16 Controlling Loops 17 Unusual Control Structures 18 Table-Driven Methods 19 General Control Issues
Code Improvements 20 The Software-Quality Landscape 21 Collaborative Construction 22 Developer Testing 23 Debugging 24 Refactoring 25 Code-Tuning Strategies 26 Code-Tuning Techniques
System Considerations 27 How Program Size Affects Construction 28 Managing Construction 29 Integration 30 Programming Tools
Software Craftsmanship 31 Layout and Style 32 Self-Documenting Code 33 Personal Character 34 Themes in Software Craftsmanship 35 Where to Find More Information
The languages used in the book's code samples are C++, Java, and Visual Basic.
As always, enjoy.