comment 0

Programmers aren’t engineers, they’re architects

Every once in a while, I think about a friend’s critique that programmers shouldn’t be called engineers because engineers need a strong knowledge of nature’s physical laws in order to do their job. I agreed in principle, but I wasn’t able to find a word that conveys the mastery of strategy and logical/mathematical laws involved–until now.

It might sound incredibly pretentious, but truly, isn’t the term “architect” much better suited than “engineer”?

“Architect” doesn’t have to be a pretentious title, at least intellectually speaking. Keep in mind that the Romans were some of the greatest architects of all time despite having no comparable scientific knowledge about materials the way we do today.

Not all programs need an architect. Some are very simple scripts that can be written by a mere draftsperson, an apprentice or an intern–who can also be trained as a structural engineer, but it’s not necessary.

We should also keep in mind that programming is still a young profession. Having a knowledge of a computer’s physical properties isn’t usually seen as necessary for programming, but I would argue this is ultimately a function of three factors:

  1. For the typical programmer, there are much more pressing logical and human laws that have a higher chance of affecting program performance.
  2. We have developed a successful division of labor between programmers and hardware engineers (this was not always the case).
  3. The bar for software reliability expectations is set very, very low.

I would argue (or rather, I would do something between arguing and speculating) that point 1 follows from point 2 and point 2 follows from point 3. If we suddenly started mandating–ahem, legislating?–that electronics perform as well and as reliably as, say, cars, then I think we would could see a fusion between software and hardware developers emerge. It might force a fundamental rethink about how we design electronic products. Perhaps the only way to develop profitably would be to aggressively optimize physical and logical properties for maximum reliability in an integrated manner that doesn’t exist today. (Alright, I’m full-on speculating now.)

Until that day, if it ever arrives, perhaps we should refer to programmers as architects and draftspeople. Or maybe we should go back to calling ourselves “computers.” No one seemed to object when it was “women’s work.”

Leave a Reply