Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

It's been quite a few years since Code Complete was published. I really love the book, I keep it in the bathroom at the office and read a little out of it once or twice a day.

But I don't think it's possible to call Code Complete, "Code Complete" when it doesn't have language features that even Delphi has, like anonymous methods and generics.

What key sections are missing from this book, and what should be deprecated?

share|improve this question

closed as not constructive by Thomas Owens Oct 19 '12 at 12:58

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Just got notified that my beloved 2 year old question is notable and much to my chagrin I find it closed. Do the right thing and stay classy Programmers –  Peter Turner Oct 18 '12 at 20:27
Yet your question is a poll, which fits perfectly with, as not being a constructive question. –  Ramhound Oct 19 '12 at 14:03
I've edited the question to remove the "Is it even possible to call Code Complete "Code Complete"..." question which can easily be interpreted as a poll for opinions. The remaining question seems very answerable since Code Complete is a core book for any programmer's library. I would vote to reopen again if I could, but I've already voted to reopen once in the past so can't cast another reopen vote, so have flagged this for a moderator to reopen instead. –  Rachel Oct 22 '12 at 13:45
@Rachel "What key sections are missing from this book, and what should be deprecated?" That is also subjective and polling. There is no way to measure the rightness or wrongness of answers to those questions, other than personal opinion. –  Thomas Owens Oct 22 '12 at 13:46
@ThomasOwens This question isn't asking for a subjective book review, but is instead asking what key sections are missing from a specific book that is one of the most famous in the software development industry. I think the number of answers you will get are fairly limited, and there are some very clear right/wrong answers. Sure the first version of the question was quite open ended and asked for a lot of opinions, but I think the edited version of the question is a good one and should be left open. –  Rachel Oct 22 '12 at 13:51
show 2 more comments

6 Answers

How to determine the real problem you're solving, before assuming you know what it is. a/k/a avoiding the X/Y problem.

How to ask questions effectively, online and in person.

How to keep attacking a problem until you find the answer before giving up and asking someone for help. The flip-side: When to stop banging your head against the wall and ask someone for help.

Clearly, I've been reading a lot of StackOverflow today. :-/

share|improve this answer
add comment

After having read both editions of Code Complete, and taken extensive notes (see a summary here), I'm not sure much should be added: methinks it's a book for advanced beginners and intermediate programmers (< 5 years in industry), for which it works very effectively in cultivating good habits, and a wider view of programming and software project management. Programmers who are moving beyond intermediate level (e.g. starting to learn multiple paradigms, including learning non-mainstream languages and multiple development processes) won't get as much out of it. But that's not the book's fault; it's not meant for them. If every working programmer just read Code Complete and nothing else, the average skill level in the industry would be raised 5x at least.

In terms of things to be removed: words. Needless words, to be precise. The book is too long and the writing style can be tiresome. I also don't care for the Microsoft-centric approach (VB examples?!) and overly-mainstream perspective (e.g. caution/fear of recursion in Ch.17).

Beyond Code Complete are books like The Pragmatic Programmer, which if applied, does take one into advanced levels of skill. Pragmatic Programmer assumes you're no longer doing silly things like using poor variable names or indenting/formatting inconsistently, thus freeing thinking for harder stuff. It's much shorter with more content per sentence too. But again, Code Complete has its place in boosting a naive, stumbling-but-curious programmer into a competent one.

share|improve this answer
Aren't there a whole new host of foibles people get in to with Anonymous Methods, generic data types and LINQ to SQL and stuff like that that he could cover though? Also, people still write bad code in Ruby and Python don't they? Maybe that's a case for another programmers.SE question... –  Peter Turner Oct 19 '10 at 5:02
@Peter: maybe, but I'd believe not, since the book is meant to be mostly language-agnostic. To the degree that those "foibles" promote needless complexity, McConnell would argue against them. Yes, absolutely one can write bad code in Ruby and Python, though I'd argue more so with Ruby, whose syntax is comparatively messy and inconsistent. :) –  limist Oct 21 '10 at 16:55
add comment

For me, one of the great things about Code Complete was that it didn't just talk about writing code. The personality of a software engineer and the importance of understanding stakeholder needs is all in there.

In my third edition, that would be expanded. Engaging with testers, customers or their proxies, support staff, other engineers etc is all critical to being a good engineer. So I'd have a chapter on requirements engineering, one on effort estimation, one on delegation, and probably some more.

share|improve this answer
add comment

Two sections that I would like to see would be writing secure code and somewhat in line with Andy Lester's suggestion of knowing what the problem is, or in other words, ensuring that you have the correct requirements.

In regards to writing secure code, it's not that unusual these days to hear about various errors in code that lead to security issues and having the common problems summarized in Code Complete could go a long way towards helping developers avoid some of the problems. Likewise, now that we are starting to move in more of a web-centric environment, it might be appropriate to mention some of the common security issues around web development in such a section.

Next, the issue of knowing that you are solving the correct problem and ensuring that you have the correct requirements. This is actually something that has popped up for me quite a bit in my own job and while others may help gather the requirements, it is still on the developer to implement those requirements and produce the final product that will be delivered. As such, having some information in Code Complete to demonstrate to the developer good requirements and also when you should take a pause to ensure that you are solving the right problem. As part of such a section it might also be a good idea to mention "non-programming solutions" as there are also situations where the program might be hiding a "process smell" that should be resolved outside of the program itself. This might be a little bit off topic for Code Complete though, but worth mentioning.

All this said though, I do agree with the others in regards to making the book a bit less wordy. Likewise, over time I have found myself referring more to the project management and system design considerations as opposed to the source code discussions which leads me to agree with others that its a good book for junior to mid-level developers but over time it starts to offer less. Thus, it might just be a good idea to focus a bit more on what distinguishes a senior level developer for a junior and also add some additional information that would be of interest to a senior developer.

share|improve this answer
Regarding the security stuff, you're onto a winner nd got a +1 here. I'd go further though, Code Complete 3 should talk about the SDL and understanding security requirements. –  user4051 Feb 17 '11 at 9:26
add comment

Ebook/Kindle support! - I would love to own a copy on Kindle to replace my hard copy. As it's such a large book it's cumbersome to take around. We're programmers we should be leading the way in making our content available electronically!

share|improve this answer
add comment

The three problems in the 2nd chapter of 'Programming Pearls' and a thank-you note to Linus Torvalds.

share|improve this answer
Ohh I keep my copy of programmer perl 2e in the bathroom as well... J/K –  Peter Turner Oct 18 '10 at 18:46
Wow, it took me a few months, but I realized I completely misread your answer sorry, +1! –  Peter Turner Jan 31 '11 at 15:18
@Peter : Was pretty soon :-) –  Geek Feb 1 '11 at 8:34
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.