|People toss about the term 'software engineering' as if programming were just another engineering discipline. |
Programming is 100 percent design. And that design is vastly more complex than the typical true engineering effort of comparable cost. Said another way, an engineering project of similar logical complexity to a software program is far more expensive.
Much of the reason for that low cost is that programming has no comparable build phase that, in some other field, might consume the vast majority of the total cost.
Programming is dramatically cheaper than a similarly complex physical project.
Programming doesn't fail in the same sense that an engineering project can fail. Programs never fail because of faulty materials or shoddy workmanship -- except in the compilation phase, perhaps, but in that case the program doesn't even exist. Programs don't fail because of use beyond their rated capacities, although they may fail because they foolishly accept input or a load beyond their capacities.
Programs only fail due to design flaws.
Ignoring terminology for the moment, the reason that software quality is so much lower than one might expect is fundamentally economic. The 'engineering' phase, the design, represents nearly the entire cost of the actual development. The only place where costs can be shaved is design. The building blocks of the actual construction, opcodes, are essentially free.
Software doesn't meet engineering standards, largely for economic reasons.
And, lastly, an engineer is one so designated by government. With that title comes certain legal responsibilities. 'Software engineers' are neither designated as such nor are they held to engineering standards.
Engineer is a title conferred by the state and it may not even be legal to call yourself a 'software engineer'.
On the other hand, the best programmers I've met don't call themselves engineers at all. They call themselves programmers, coders, and hackers. Evidently, there is no shame in that. Let's leave the engineering title to those who have earned it and accept the responsibilities that come with it.
We should be thankful that we aren't held legally responsible for the performance of our designs.