The book is about, well … code. But not only. It is about code quality as well as development process, best practices, requirements, refactoring, testing and many more.
About the book
I’d previously read McConnell’s book about estimation – “Software Estimation: Demystifying the Black Art” and in my opinion it lacked more reasonable arrangement of knowledge. In this case it wasn’t an issue; the book was logically arranged and transition between topics was very natural.
I can’t say that I’ve read it from cover to cover, as it is packed with information, which can be usefull at the beginning of programmers’ career. Fortunately, it can be easly browsed, as many paragraphs starts with bolded sentences, which are a summary of the rest. Having read only those sentences you can asses whether you want to read in details or skip to another paragraph.
To whom I would recommend this book?
The book presents code itself in a quite comprehensive way, so every programmer will benefit from it in a way. No matter if he/she is a beginner or not, the book is a true treasure trove of information, and I think that everyone can draw something for themselves.
The examples are given in many different languages, and topics are practically independent of what we work with. Despite the book is from Microsoft Press, Java, C++, Python and other developers shouldn’t be afraid of it. Generally, the topics are very versatile, and almost never refer to a specific platform.
What was valuable to me?
I spotted out a few things from this book.
- Main practices in a project (Life Cycle Model, Planning and Management, Requirements, Design, Construction, Testing and QA, Deployment):
- simply listing these things out is very useful for me as we launch a new project. Browsing this list I can answer myself whether we have this areas defined in our process
- Hard Data – a lot of references to research dealing with different topics. I’m planning to prepare a list of them. In my opinion it might be helpful as arguments for a client for maintaining a high quality of code and processes
- McConnell’s checklists – a great summary of all this knowledge, in particular:
- Requirements checklist – how well requirments are specified
- Major Construction Practices checklist – what kind of practices we use in a project
- Collaborative Construction checklist – about pair programming practices and reviewing code
Definitely „Clean Code” by Uncle Bob is a similar book, however I have an impression that McConnell’s checklists are easy to implement, whereas Clean Code is generally hard to use after reading.
On the other hand, „Clean Coder” (as well by Uncle Bob) is a good supplement to topics we won’t find in „Code Complete” (or we’ll find very little) i.e. professionalism in developer’s work (knowledge of practices is not enough).
At the end two quotations I spotted out
Programmers sometimes favor languages structures that increase convenience, but programming seems to have advanced largely by restricting what we are allowed to do with our programming language.
The competent programmer is fully aware of the strictly limited size of his own skull; therefore, he approaches the programming task in full humility.
Dijkstra’s quotation is taken from the article “The Humble Programmer”, 1972: http://www.cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD340.html