The second edition of Code Complete focuses on how to build quality code in software projects. This means that most of the book is devoted to code writing, but it often drifts over to things like project and team management in addition to other closely related topics.
The author discusses many code related things that are not language specific. For example, the author covers topics like, class/routine/variable naming, commenting, statements, good length of all previous mentioned things, code tuning and much more. The book is also filled with heuristics on all the mentioned topics in addition to things like programming conventions, inheritance, constructors and containment. He also presents a lot of data to support why he claims that some things are better than others. The author does the same things with methods like pair programming, code reviews and other techniques that can improve code quality.
On top of this Code Complete presents a lot of small wisdoms that could help put any programmer into the correct mindset. Here are some of the best ones summarized:
- Program INTO a language not in it. If you do this you don’t get limited by the languages current structure.
- One of the most important jobs of a programmer is to reduce complexity.
The book also have some interesting data points like these:
- Code inspections are the most effective way of finding bugs. About 60% are found using this method, so it should be used together with other things such as unit testing, integration testing and so on.
- The industry-average productivity for a software product is about 10 to 50 of lines of delivered code per person per day (including all non-coding overhead).
I think this book is a good read for any person who wants to be a serious software developer. There is so much information packed into this book that everyone should be able to extract some value from the book. It is especially suited for developers at beginner or intermediate level, but it could also be very useful for an experienced developer (if you skim the parts that you already know well). If you are unsure if this thick book is valuable for you I suggest you read chapter 34, which contains the most important things in the book in a quite well summarized form. Overall, I think the book provides a solid foundation of knowledge for any software developer.