||New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About||
Keywords: Programming, coding, development, software construction
Title: Code Complete, Second Editiion
Author: Steve McConnell
Publisher: Microsoft Press
Verdict: We can't recommend this enough.
This is a book about a sorely neglected part of software development: writing code. It's not a book about the specifics of a particularly language, programming paradigm or development methodology. It's not about UML, design patterns or data structures. It's about coding, about low-level design, about naming conventions, about all those things that we spend so much of our time doing but which are conspicuously absent from most books on development. In that sense Steve McConnell's 'Code Complete' is fairly unique, and the first edition was justly acclaimed as a classic. Now with a new - expanded and extensively re-written - second edition that classic status is confirmed.
Covering every aspect of code construction, this is a mammoth volume that is packed to the hilt with sage advice, sample code, hard facts and figures and sound arguments. Marrying data from countless journal papers and academic studies with war stories and anecdote the book does a great job in persuading the reader rather than simply laying down the law. McConnell wants to help the reader become a better developer but he wants to persuade rather than cajole. It's part of what makes this such a great book.
Organised into seven different sections, the topics range from metaphors for software construction to the use of pseudo-code to variable naming to code formatting and more. The treatment of material is comprehensive, so that even a topic such as variable naming gets a whole chapter that is both useful and interesting. Topics of religious significance, such as code formatting, also get an airing.
We could do a review that just summarises the book section by section but that would do the book little justice. Instead it's better to focus on some of the key themes that dominate the text. The first of these is complexity. Taming complexity is a key goal of the best developers. This means writing code that is well-structured, easy to understand and maintain. It means avoiding writing 'clever' code that is actually a nightmare to maintain. This principle extends everywhere, from how you name routines to how you lay out your code to what you call your variables.
Secondly it's important to remember that code is read more often than it's written. This means making sure that your code is readable. Again this means taking care with program structure, using naming conventions, commenting code and so on.
Another important point is that the best developers and themselves developing and learning along the way. This means striving to improve, being aware of what you are doing, keeping an eye on what's happening in the industry and not allowing yourself to get complacent.
In addition to the technical content the quality of the writing should also be stressed. This is a huge book but it doesn't read like one. The writing is always readable, engaging and clear. There's sample code aplenty, with plenty of Java, C++ and Visual Basic, but really the lessons the book draws are independent of language, tools or methodologies.
There is so much more good solid material in the book that it's difficult to do justice to it in a single review. This is a book that anyone who wants to improve as a developer should read. We can't recommend it enough.