Software Developer vs Software Engineer

Next to my building is a construction site for a large building. Many people are involved in this construction, and not all of them are engineers. Different people have different kinds of responsibility. I'm particularly impressed by the drivers of the tower cranes. They have a significant amount of training, have developed a great deal of skill in a demanding occupation, and have an important responsibility — if they get something wrong really bad things can happen. That said, their job description is very narrow and their actions on a work site very restricted. Does that mean they are not so important to the construction? No of course not. But nor can they be considered engineers.

The term "software developer" is used generically to refer to those involved in the development of software systems. I prefer that term to "programmer", as it conveys a sense of having more responsibility than just producing lines of code on demand. Which isn't to say one is "good" and the other is "less good". Everyone has a part to play. It isn't even that those producing lines of code on demand don't have some responsibility, it's just not the same as whose managing more complex parts of the construction, any more than the crane drivers.

"Software engineer" is "just" a job title in many organisations. But in some countries (or parts of countries) you can't just call yourself an engineer of any kind without having met certain criteria. Typically, at minimum, you need to have an accredited qualification, that is, a Bachelors degree that meets the international standard for an engineering degree. Usually there is a requirement to have a certain amount of relevant work experience, and membership of a professional engineers organisation (IPENZ in the case of New Zealand). Also there is an expectation of maintaining professional development.

New Zealand has no requirements regarding the use of the term "software engineer" - anyone, with any qualification (or not), doing any job, can claim to be such. Given the current state of software engineering (in a previous blog I suggested it is only slightly more advanced to engineering in the time of the pyramid builders) I'm not sure that having rules as to who can call themselves software engineers is particularly useful. I know plenty of people who are extremely talented engineers of large complex software systems that do not have accredited engineering qualifications, or even university degrees. I see no value in denying them the 'engineer' title any more than there is denying software engineering is really engineering. That said, the title of software engineer should not be an entry level position. The 'engineer' title should not be used as a marketing tool to attract new staff. We in the software engineering profession are devaluing the title by doing such things.

Just as there is value in distinguishing between computer science and software engineering, maybe there is value discussing the distinction between software engineers and others who are involved in software systems. What might the distinction be? I think a good starting point is those who are prepared to sign off on a system, to put their professional reputation on the line. Such people deserve the recognition that comes with the title of engineer for such commitment.

History

Early 2015
First conceived and drafts written.
2015-08-07
Made public