Technical Book Club: Code Complete – Software Construction: Building Software

Code Complete is all about Software Construction.  What? You probably never faced a course on software construction in school … or did you.  Some key points from this chapter:

  • Software Construction includes detailed design, coding, debugging, integration, unit, and integration testing. 
  • Construction is also known as implementation and programming.

These topics are likely a cross-section of the courses you’ve taken or the tasks you’ve completed while on the job.  Construction is a core piece of software engineering.  If you’ve worked on a project that started out as “just a small app to do foo” then it’s likely you started with this phase of development.  If you’ve worked on a more mature product, concept, or idea, then you might have worked your way to construction through specifications and business requirements.  In class, this might be a set of information provided to you before you begin a lab or homework.  Steve discuss many great points for why construction is an important topic including:

  • Construction is the only activity that’s guaranteed to be done.
  • Construction’s product, the source code, is often the only accurate description of the software. 

I love the articulation of this first point.  Whether it’s a project or a product that’s running late, many corners can be cut but this isn’t one of them.

Questions for discussion:

  • In projects you’ve worked on how much time has been spent in the construction phase?
  • Steve’s motivation for this book was to provide a quicker dissemination of best practices among practitioners and between academia and industry.  How do you learn about or share best practices to improve your skills?

I find the way I learn best is to chat with other developers, although I also like books and newsletters.  I find that when I try to explain my code to someone else, I see a lot of nuances that I missed when I was looking at it on my own.  When I was at IBM, I developed libraries in C.  Memory debugging was quickly one of my frequent tasks and I learned how to use Valgrind and Electric Fence from my colleague Folu.  This lead me use to use as a resource more generally.  I read a lot of MSDN and DeveloperWorks articles.

Since working at Microsoft, I’ve learned about Channel9 which has a lot of great developer content.  Microsoft has a number of great resources for students such as the MSDN Flash Newsletter “News for Students” column and our Facebook discussion at Microphone.

Comments (6)

  1. DmitroLipaj says:

    I am very interesting in reading books. If I had much time and money, I should buy and read all possible computer science books 🙂 Also I enjoy watching videos about different new technologies, languages etc. But it’s more for interest, not for real study.

    Last weeks I have spared more time for the construction of my programs (labs at discrete mathematics) and it’s really effective. I think that results become better. Good luck!

  2. Noel Bundick says:

    Code Complete is great! I recently read and also recommend for anyone interested in designing enterprise applications

    (comment from Facebook)

  3. Henrik Bierbum Bacher says:

    It sounds like a great idea, gonna try and catch up over the next week. But on top of your blog posts, how about a weekly IRC(or something similar) meetup for some real time discussion?

  4. In answer to the question from last week’s section , according to Code Complete, software construction

  5. The next sections are fairly straight-forward.  Here’s a summary of some of the keypoints: Without