Code Complete, Second Edition
Aspects of software construction, deconstructed
Code Complete is like the reference manual of software development, regardless of the technology, industry or language you’re working in. And there are really good reasons for that. Let me tell you what I thought of this book.
I just finished reading the second edition of Code Complete, and I couldn’t be more in agreement with the chosen title. Code Complete is a really complete description of several aspects of code craftsmanship. Furthermore, it has really distilled the seriousness of some aspects and the relativity of some others.
The book is well organized over its 2000+ pages and 35 chapters. It covers everything from architecture, design, planning and all the way up to code performance-tunning, layouts and indentation and everything in between. The text-to-information ratio of the book is really balanced, so nothing is covered way too quickly, and nothing is given more importance than it actually deserves.
Even better, Steve McConnell does a wonderful job into separating what has become a personal opinion and anecdotal evidence for him from what can be backed up by evidence, providing sources of all of his claims. He properly recognizes matters that don’t contain studies showing which is the correct way and he also mentions which matters have become just a matter of opinion, and of dogmatic debate.
He wonderfully describes the intellectual relationship between a programmer and their code, and between members of a software team, from the manager to the data-entry level programmer.
This book focuses on the aspects of software construction and deliberately leaves some aspects aside, but not without providing good references for the reader to follow along, depending on the desired course of action.
I would say that the contents here are concepts and lessons that are definitely gained from experience, but for a developer that either just starting or that does not understand why there are so many opinionated approaches to development, this is the definite answer and a good guidance to choosing a correct approach (whichever that is). If you haven’t read this book yet and are interested in developing, no matter your level, you can gain something from reading it.
Most of the examples are C and Java, a few in Visual Basic. Most of the examples apply everywhere but some can be smelled to be around C, because of its concept of pointers, that some memory-managed languages won’t even present. Still, all the concepts prevail and the point is made, without the examples driving away from it.
Again, I fully recommend this book to anyone interested in the methodological, pure-low level aspects of software development as a serious discipline.