Click here to Skip to main content
15,880,392 members
Articles
Article
(untagged)

Code Complete (2nd ed.) - On Every Desk?

Rate me:
Please Sign up or sign in to vote.
4.67/5 (10 votes)
31 Jan 2007CPOL5 min read 51.3K   17   14
900 pages that fill the gap between the coder and the developer.

This article is in the Book Review chapter. Reviews are intended to provide you with information on books - both paid and free - that others consider useful and of value to developers. Read a good programming book? Write a review!

cc2e-cover-small.gif
TitleCode Complete (Second edition)
Author(s)Steve McConnell
PublisherMicrosoft Press
PublishedJune 2004
ISBN978-07356-1967-8
PriceUSD 39.99
Pages960

Introduction

Code Complete by Steve McConnell is recommended every time a developer asks "How to manage a project?" It is often mentioned as a classic, but unlike many other books with this attribute, it is also a suitable day-to-day read, in close reach of your keyboard.

This review shall help you decide whether it's the book for you or not. (Hint: it probably is.)

My reflections

There are a few rites of passage for budding developers: things that keep some people confused for life, while others pass them without a thought - indicating they have the prerequisites for great developers.

Usually, the first two obstacles are pointers and recursion. Code Complete is not about them.

Whether the software industry attracts you with its great perks during one of its ups, or you are one of the lucky people who get paid for their hobby: Developing software for a living holds some rites of passage that colleges rarely prepare you for. Some of them are:

Working in a team is a social as well as a technical challenge.

Working on a code base that you can't comprehend completely requires a completely different style than a project you wrote or could write yourself.

Planning ahead how long a feature will take and estimating its total cost - including packing up for distribution and maintenance - is something that inexperienced developers never get right, but may be vital for your project or your company.

Mediating between needs of management, marketing and sales, and the turn-pizza-into-code forces helps both sides to do their job more efficiently and don't meddle in the affairs of the others.

Code Complete isn't and cannot be the answer-it-all book, but it is a valuable asset in the evolution from a coder to a software developer.

What you can find in it

I'll list the book parts here, because they give a pretty good overview:

  1. Laying the Foundation
  2. Creating High-Quality Code
  3. Variables
  4. Statements
  5. Code Improvements (covers Testing, Debugging, Refactoring, and Code Tuning)
  6. System Considerations (covers Management, Tools, Integration)
  7. Software Craftsmanship

For a more detailed table of contents (and a chance to place your order), try this Google search[^].

About 60% of the book is dedicated to improving the code you write; the rest spread on quality control, collaboration, maintenance, management, planning, and keeping things together.

Budding developers will find the usual rules that turn writable into readable code, and "but it works for me" into robust. Code Complete can also jump start your team's style guideline document by just boiling down what makes sense to you to a one- or two-page document.

For project management - including your day-to-day activities - you will find strong arguments about which techniques and principles make sense economically, what to expect and what factors to include if you are asked for an estimate. Human and psychological factors get their share, but not extensively.

So, how good is it?

The biggest strength of Code Complete is the rich collection of statistics and condensed results of studies that support the claims and suggestions. Even for the obvious results, these charts and tables turn "feel-good-advise" into solid and valuable arguments in the struggles with management and other cheaper-faster stakeholders. Others are outright surprising. Did you know that small changes tend to introduce more mistakes than medium-range ones? That you might be better off with a slow programmer instead of an average speed one? That just reading code uncovers more errors than unit tests?

Second, it is not tied to a particular language, principle, or methodology. This may sound like a weakness, but it is not. Most of the things are independent of the process you use. (N.B. ruminations in the same direction by another author can be found here: Does process matter?). While the tools of modern development - Unit Testing and refactoring - get a fair appearance, they are untied from the context that made them well-known.

Third, it is thorough. 120 pages discussing variables, over 30 of them dedicated to naming them. Even the puny evil-doer goto gets ten pages. This depth is certainly a refreshing change from simplistic statements, but it can also be a weakness, as programmers tend to not read enough (as McConnell points out himself). But, if this isn't enough for you, each chapter has an extensive list of literature to continue with.

The writing style strikes a good balance between formal and conversational. It's not dry, but don't hunt for jokes. Non-native speakers with somewhat-above-basic English skills should be able to read it, but translations exist into many languages. The translation to German is high quality - one of the few texts where I don't clearly prefer the English version. There is a "conversion table" for technical terms, and a few places take local specifics into account. (If you can comment on another language, please do so!)

What's bad and what the book isn't

The thoroughness comes at a price - over 900 pages. The depth and detail can be intimidating - my first of the book was opening it in the middle, and seeing the seemingly common discussion of variable names. "Holy Cow! He needs 500 pages to get there!" The book tries to cope with its size by markup for Key Points, Hard Data and Horror Code, and using multiple indices (Contents at a glance, Table of contents, Indices of checklists, tables and figures). Still, I miss an index of the Hard Data.

While easy to understand, Code Complete is not easy reading. The level of detail makes it easy to doze off or skip ahead.

The book does not give you the tools for building a formal software process or architect software. You will not find a discussion of patterns, and 30 pages on class design is skimpy - considering conditions and loops get the same amount of coverage.

Conclusion

You need it. You will like it. Trust me.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Klippel
Germany Germany
Peter is tired of being called "Mr. Chen", even so certain individuals insist on it. No, he's not chinese.

Peter has seen lots of boxes you youngsters wouldn't even accept as calculators. He is proud of having visited the insides of a 16 Bit Machine.

In his spare time he ponders new ways of turning groceries into biohazards, or tries to coax South American officials to add some stamps to his passport.

Beyond these trivialities Peter works for Klippel[^], a small german company that wants to make mankind happier by selling them novel loudspeaker measurement equipment.


Where are you from?[^]



Please, if you are using one of my articles for anything, just leave me a comment. Seeing that this stuff is actually useful to someone is what keeps me posting and updating them.
Should you happen to not like it, tell me, too

Comments and Discussions

 
GeneralIt's on mine.. Pin
Duncan Edwards Jones21-Feb-07 1:04
professionalDuncan Edwards Jones21-Feb-07 1:04 
QuestionWhat language does the author use for code examples? Pin
camainc5-Feb-07 6:46
camainc5-Feb-07 6:46 
AnswerRe: What language does the author use for code examples? Pin
peterchen5-Feb-07 7:30
peterchen5-Feb-07 7:30 
GeneralRe: What language does the author use for code examples? Pin
Big Jim6-Feb-07 8:44
Big Jim6-Feb-07 8:44 
Generalcaveat emptor Pin
ednrgc1-Feb-07 9:05
ednrgc1-Feb-07 9:05 
GeneralThat's kind of good news! Pin
peterchen6-Feb-07 9:26
peterchen6-Feb-07 9:26 
GeneralRe: That's kind of good news! Pin
ednrgc7-Feb-07 4:27
ednrgc7-Feb-07 4:27 
GeneralRe: That's kind of good news! Pin
Big Jim8-Feb-07 9:20
Big Jim8-Feb-07 9:20 
GeneralRe: That's kind of good news! Pin
ednrgc9-Feb-07 2:12
ednrgc9-Feb-07 2:12 
GeneralRe: That's kind of good news! Pin
Big Jim10-Feb-07 17:36
Big Jim10-Feb-07 17:36 
GeneralLevel of detail Pin
Nish Nishant31-Jan-07 11:07
sitebuilderNish Nishant31-Jan-07 11:07 
GeneralRe: Level of detail Pin
peterchen31-Jan-07 11:26
peterchen31-Jan-07 11:26 
I hope it's not the only thing you agree on Wink | ;)



Developers, Developers, Developers, Developers, Developers, Developers, Velopers, Develprs, Developers!
We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP
Linkify!|Fold With Us!

QuestionWhere's the header? Pin
Nish Nishant31-Jan-07 11:05
sitebuilderNish Nishant31-Jan-07 11:05 
JokeRe: Where's the header? Pin
peterchen31-Jan-07 11:25
peterchen31-Jan-07 11:25 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.