Code complete 2 summary Part I— A Steve McConnel Book
Code complete 2 is a practical handbook for software construction. It goes from the big picture of software development down to specific code examples, providing hard data, checklists and links to other sources of information. The breadth and depth of the topics thus serves not only beginners and self-taught programmers, but also experienced ones and technical leads.
This summary series aims to lay out the bigger picture and basic but important principles mentioned in the book.
Some word to myself: I am a DevOps Engineer with Ops focus. With my degree in applied computer science I have plenty of theoretical knowledge about software developing. My daily work teaches me a lot about the software life cycle, scripting and workflow automation. The book gave me a deeper insight into software development and improved my scripting skills. Here I want to share what I learned or at least found interesting.
Part I: Laying the foundation
What is software construction? Common terms are known as “coding” or “programming”. But beside that the detailed design, planning, testing, debugging and integration are also part of software construction.

The IT uses a lot of metaphors for richer understanding. Here we find our self talking about worms, Trojan horses, bugs, crashes, firewalls, server farms and other colorful examples to make the given topic more comprehensive. The best metaphor to describe software development is actual construction work. Depending on whether you have to build a small doghouse or a skyscraper, the distribution of effort going into design, planning, validating and building are somewhat comparable. Accordingly, the amount of planning and designing a secure and critical medical software system way higher than just a little web application. The construction metaphor also allows us to use Toolbox metaphor. Just like you wouldn’t use a hammer to insert a screw, IT tools also have specific purposes which must be considered.
Measure twice, cut once! Before beginning with any kind of construction, we must prepare for it. Do we have enough material, workers and equipment? Have we met given regulations? Have our plan and blueprints been reviewed and approved? The kind of preparation needs to be done various from project to project, yet they all should have the goal to reduce risk. Having a clear problem definition, official requirement and a focus on high-quality in the beginning has a greater influence on the quality of the software, than doing so in the end. Otherwise, the project might be wasting time and efforts to solve the wrong problem, miss specific details and creating the wrong solution.

The preparation for software development can be broken down to specific areas: functional requirements, non-functional requirements, architectural topics, the quality and completeness of the requirements itself and other points. Depending on your project you must think about the program organization, major classes, data and user interface design, business rules, resource management, security, performance, scalability, operability, fault tolerance and so on. Each topic is a huge area by itself, so I will limit myself to pointing out the importance of the topics, as the quality of each topic determines the quality of the end-product.
Part I is meant just to lay the groundwork for understanding what software construction is. Next part will be about the creation of high quality code.