Code Complete – Steve McConnell
In this short review, I’ll try to distill key features of this over 900 pages book.
Simply speaking, if the Clean Code by G. Martin is the “what”, this book is the “how” of programming practices. It covers key areas of daily programming tasks from problem definition, through planning, software architecture, debugging, unit testing, naming to integration and maintenance.
Code Complete is enriched with many substantial examples mainly written in Visual Basic, C++, and C# and the author is always able to clearly explain the problem and provide a solution.
In general, this is a cookbook, to which you’ll want to refer every now and then. It goes over almost every aspect of modern programming and I guess the more you can refer to it the more experience you have. After all, most programming books are best suited for those, who already know how to develop software.
One thing though, I find Code Complete rather too verbose. The examples could be shortened and the whole chapters could be more on point, which is why I really appreciate the book and definitely would recommend it, I feel slight aversion while thinking about reading it again… I think I’ll just print the included checklists and keep it handy at my desk.
Key takeaway? For me it was the idea that bugs in software are introduced because of code complexity. So it’s always worthy to test the complex part and write as simple and transparent code as possible.
Finally, in the last part, we can find a list of books recommended by the author for further reading, divided into three experience groups:
- Adams, James L. Conceptual Blockbusting: A Guide to Better Ideas, 4th ed. Cambridge MA: Perseus Publishing, 2001.
- Bentley, Jon. Programming Pearls, 2d ed. Reading, MA: Addison-Wesley, 2000.
- Glass, Robert L. Facts and Fallacies of Software Engineering. Boston, MA: AddisonWesley, 2003.
- McConnell, Steve. Software Project Survival Guide. Redmond, WA: Microsoft Press, 1998.
- McConnell, Steve. Code Complete, 2d ed. Redmond, WA: Microsoft Press, 2004.
- Berczuk, Stephen P. and Brad Appleton. Software Configuration Management Patterns: Effective Teamwork, Practical Integration. Boston, MA: Addison-Wesley, 2003.
- Fowler, Martin. UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3d ed. Boston, MA: Addison-Wesley, 2003.
- Glass, Robert L. Software Creativity. Reading, MA: Addison-Wesley, 1995.
- Kaner, Cem, Jack Falk, Hung Q. Nguyen. Testing Computer Software, 2d ed. New York
- Larman, Craig. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process, 2d ed. Englewood Cliffs, NJ: Prentice Hall, 2001.
- McConnell, Steve. Rapid Development. Redmond, WA: Microsoft Press, 1996.
- Wiegers, Karl. Software Requirements, 2d ed. Redmond, WA: Microsoft Press, 2003.
- “Manager’s Handbook for Software Development,” NASA Goddard Space Flight Center. Downloadable from sel.gsfc.nasa.gov/website/documents/online-doc.htm.
- Bass, Len, Paul Clements, and Rick Kazman. Software Architecture in Practice, 2d ed. Boston, MA: Addison-Wesley, 2003.
- Fowler, Martin. Refactoring: Improving the Design of Existing Code. Reading, MA: Addison-Wesley, 1999.
- Gamma, Erich, et al. Design Patterns. Reading, MA: Addison-Wesley, 1995.
- Gilb, Tom. Principles of Software Engineering Management. Wokingham, England: Addison-Wesley, 1988.
- Maguire, Steve. Writing Solid Code. Redmond, WA: Microsoft Press, 1993.
- Meyer, Bertrand. Object-Oriented Software Construction, 2d ed. New York, NY: Prentice Hall PTR, 1997.
- “Software Measurement Guidebook,” NASA Goddard Space Flight Center. Available from sel.gsfc.nasa.gov/website/documents/online-doc.htm.