Software construction

In my voyage from a simply Software Engineer to a master in Software Engineering I’m reading several books. Thus, I’m posting in this blog whatever thoughts appear in my mind about Software Developing.

I’m several chapters in Code Complete 2nd Ed. of Steve McConnel and I’m amazed by the knowledge that it contains. As time goes by I will update this blog with more information about my findings.

Specially I’ve been struck by one basic principle: Software construction is the only activity that is warrantied to be made in a software development project.

I love this phrase because in the software development world it seems that there are two groups in state of permanent disagreement. I’ve given them the following names:

  • Crafters: people that disregard Software Development as an engineering discipline and see this activity as a skill similar to cooking, woodcrafting, plumbing, etc.
  • Engineers: they think that software development is an empirical engineering, as was Civil Engineering until XX century.

I consider the later approach right but I don’t want to be lost in the “engineering” and “management” part of software development1 and forget that software developing is not producing tons of diagrams, documents, issues and many other software project sub-products.

We should not forget that what we give to our client is basically software. Our client usually disregard manuals or other kind of folderol given to him/her. Our client knows what he/she wants: a software that works.

This is a double-edged sword, I’ve found many clients with legacy software systems without any kind of documentation, of course, needing desperately a new feature, or even worse a, fix in their system.

Therefore, this latter case is when you, as a software engineer must to read and refactor foreign code, not produced by high-standards guided programmers like you (or your team do). And increase que quality of the code as much as possible2.

These kind of scenarios occur every day, so we must not forget that at the end of the refactoring or fixing code, only the code tells the truth, only the code contains the functionality3.

So, thou shall not forget what we, software engineers, are bound to produce correct code.


  1. In Spain, programming is usually considered the least important task in a software project, usually done by self-taught programmers. ↩︎

  2. Depending of how much our client wants to expend in the refactoring. ↩︎

  3. To make a good software it is needed a high knowledge of many disciplines that need to be acquired by studying in university. I will return to this topic in other post. ↩︎