Hacker News new | ask | show | jobs
by alberich 4774 days ago
I'm a bit curious, why do most programmers like to call themselves engineers even though programming is not engineering?
5 comments

No, you're not curious, you're just passive-aggressively pointing out that you don't think programming is engineering, but phrasing it in such a way as to make it sound like this is some universal truth that everyone accepts.

Anyway, the answer is because it is engineering. Not in the capital "E" sense of engineering where you have some sort of official certification from some governmental or professional body that states that You Are An Engineer, By Golly. But it certainly is lowercase "e" engineering in the sense that it is a highly technical discipline that lies squarely in the middle of the spectrum between an art and a science.

Plus, it's just common terminology in the field, so there you have it.

But there is an insanely huge difference.

When a credentialed engineer puts their signature to the statement that a particular design is sound, the engineer is liable. Not the company. The engineer. If that bridge collapses, the engineer can be sued. And if the company cannot find an engineer who is willing to sign, that bridge cannot be built.

This is very important. Before we instituted this system, the USA had an average of one bridge collapse per week. And it wasn't nearly as large a country as it is today.

As long as I do not have this kind of liability, and likewise lack the power to tell a company that they are not allowed to release a website with the defects that I can identify, I do not consider myself an engineer. I may be forced to accept that my job title says "engineer", but I am firmly of the opinion that I am not one, and anyone who thinks that I am is uninformed on what it means.

Programming CAN be a system of Engineering (and often is wrt medical and weapon systems). Most programming is done as a craft in businesses, with business needs that reward turn around time and coming in under budget more than ruggedness, or real maintainability.

In a more corporate environment, it tends to favor the use of "Architecture" roles, and the use of many different design patterns even when they are not necessary and only add complexity in the name of "consistency" with other "enterprise" implementations.

Just the same, most software development is a model of crafting, not engineering. The exceptions to this tend to be with designing software that works with physical devices for a given role, not generic computing devices that are virtual representations of business logic.

ABET's predecessor described engineering like this:

    The creative application of scientific principles...
Programming primarily applies logic and mathematics, which is why I have always considered programming/computer science to be more of an "applied mathematics" field, than engineering.

Christ, computer science and mathematics are the only two fields I know of that care about graph theory. To my understanding, graph theory is a post-graduate discipline in mathematics, and a computer scientist's bread-and-butter. What does that tell you?

Anyway, this all kind of hinges on whether mathematics is a science. Personally, it never seemed like a science to me- and I don't mean to denigrate mathematics. Rather, it seems completely apart.

You can learn a lot of graph theory in your early undergraduate years. Only the most difficult problems are really graduate/post-graduate fodder.
I think probably because in the real world, programming and software engineering are the same thing. You can't write a program without engineering at least some of it, even if the overall design was not yours.
Because most of them are software/computer engineers who also program as one of their skills.
Because not all cultures have strict rules about who gets to call them selves an "engineer"

And if you are a technical programmer you are doing engineering eg writing weather simulations for the met office or modeling a nuclear rector.

why the downvote? Donald Knuth himself describes programming as an Art.
Probably because it's off-topic and people are sick of hearing about it.

It's simply a discussion people aren't interested in having, and at the end of the day it's the participants who decide what gets up or downvoted.

It was when Donald Knuth wrote that, 50 years ago. Nowadays it is engineering. It is desirable for a programmer to build software, within a specific time, specific cost and certain specs. 100% Engineering. Now this is valid for 99% of software jobs out there. You will always find some company that does software research, but it's the 1%.
I do agree that software development is many parts engineering, but I believe that farming is engineering to the same extent (I do both, so I have an intimate knowledge of how they compare). Imagine a farmer calling himself an agricultural engineer.

It is part of the nomenclature now, so it is what it is, but I don't see what was wrong with the previous "programmer" or "software developer" titles. The engineering part was already implied.

Indeed, in some countries (like mine) calling yourself an engineer while not having the real degree it's illegal, even if it's your job description.

Incidentally, here (Argentina) we have the equivalent of farming engineer, called "Ingeniero Agrónomo". It's a very common career choice, and well paid.