I have been preparing training plans for developers. In this process, we were identifying suggested reading. Of course, I suggested Code Complete by Steve McConnell. As I was going through the list, I thought it would benefit me, and the rest of us to review this classic. So let’s jump in!
Although this book covers so much of the software engineering world, it is focused on coding and debugging. This is the "construction" of software engineering. Some reasons for this focus include
- Construction is a large part of development time and efforts
- Construction’s product, source code, can be the only reliable description of the system
- Construction is the only activity that is guaranteed to be done
Laying the Foundation The first section in the book is dedicated to understanding requirements, and how they can constrain, focus, and support construction moving forward.
- Metaphors in Software Development
- The key metaphor this chapter moves toward is software "construction"
- Upstream Prerequisites
- Importance of Prerequisites – This section looks back to the idea of "Software Construction" and compares requirements and design to the foundation for a building.
- Determine the kind of software you are working on – Software projects are very unique. They may run from a one-time report, to code that runs in a pacemaker. Different approaches are required.
- Problem Definition Prerequisite – This is a definition of the problem in the users’ language. It should say, "We need to handle more policy documents.", not "We need a workflow system for our Oracle portal to accelerate policy review". This provides the foundation for collecting requirements and identifying what is in or out of scope.
- Requirements Prerequisite
- Architecture Prerequisite
- Architecture Checklist
- Amount of Time to spend on Upstream Prerequisites – Generally 10-20% of effort and 20-30% of the schedule
- Key Construction Decisions
- Choice of Programming Language – On many projects, we as developers will not get a choice in the matter of language because of existing standards or client demands
- Programming Conventions – Programming conventions are very malleable between projects and developers. This is a matter we should all focus on, since we cannot quickly change languages, but we can change programming conventions. This allows us to take desirable techniques from other programming languages.
- Location on the Technology Wave – Programming in a language vs Programming into a language
- Selection of Major Construction Practices
- Checklist of Construction Practices
This material is copied and/or adapted from the Code Complete 2 Website at cc2e.com. This material is Copyright © 1993-2007 Steven C. McConnell. Permission is hereby given to copy, adapt, and distribute this material as long as this notice is included on all such materials and the materials are not sold, licensed, or otherwise distributed for commercial gain.