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 linux.die.net 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.