Book review: “Code complete” by Steve McConnell
February 20th, 2004 at 6:22 pmThis is, no less, an encyclopedia of “programming practices”. Everything
you think of when you ponder about programming and software engineering
(bar a specific programming language/environment) can be found in this
800-page book, explained in detail.
Being encyclopedic in nature, “Code complete” is very hard to read cover-to-cover quickly.
So, I just put it at work and read a chapter here and there when I got
the free time. It took me more than a year to complete it, and meanwhile
the 2nd edition was released. Note that this review refers to the first
edition.
The scope of this book is overwhelming. Everything is carefully chewed,
starting with low-level stuff of how to write loops, name variables, and
use white-space, and up until high-level software architecture and design,
QA, system integration and even philosophic ventures into the topics of
personal character and “software craftsmanship” and their relation to
programming. The detail McConnell gets into is sometimes astonishing. For example,
12 pages are devoted to correct programming of if and case statements,
and there are 30 pages on naming (variables, data types, etc.)
I didn’t learn much new from this book. This is both surprising, encouraging and
dissapointing.
It’s surprising because the book is so large and vast, and
contains (literally!) loads of information. It was written about 10 years
ago, and it appears that since then these ideas sunk well in the software
community and became common-sense. That’s probably why most of what I’ve read
sounded familiar - I usually try to keep up with software practices and
professional books.
It’s encouraging because I now know that I have all this information somewhere
in my head. I can’t be sure I always use it correctly, but that is another issue.
Having the information in my head is a good prerequisite to being a better
programmer, I hope.
It’s dissapointing because… well, because I bought the book and spent a lot
of time reading it. I think that I’m quite happy overall, since the “encouraging”
part overweights the “dissapointing”.
If you’re an experienced programmer and have read a couple of similar books/articles,
I don’t think you’ll gain much from this book. Maybe a couple of specific chapters
here and there, but there’s no need to read it cover to cover. If these topics are
new to you, then the book is a must. Each serious programmer should read about these
topics at least once in his lifetime, and later come back to specific details when
needed. In any case, don’t spend money buying it, as the draft of the 2nd edition
is available online.
By the way, I think this book would be a great basis for a course (or two) in Uni.
Collecting the most important points and teaching them, along with proper excercises,
to students that have just completed a few basic CS/programming courses would be great. There
are software engineering courses in Uni, but they focus only on the high-level issues, while
this book covers the whole scope of the trade.
Related posts:
