Hacker News new | past | comments | ask | show | jobs | submit login

Software engineering is actually not engineering either.



TIL I need to tell my school to change my degree on diploma

What reasoning are you using to come to conclusion that software is not engineering?

>The creative application of scientific principles to design or develop structures, machines, apparatus, or manufacturing processes, or works utilizing them singly or in combination; or to construct or operate the same with full cognizance of their design; or to forecast their behavior under specific operating conditions; all as respects an intended function, economics of operation and safety to life and property

It is purely software engineering.


Because engineering is a specific discipline that balances physical force, the nature of materials, and costs, to produce a physical thing (a building, a bridge, a sewer system, a reservoir... "Software engineering" is a metaphor for the body of knowledge and ability to design and construct software systems. Unlike engineering, there aren't that many right answers.

Whenever you have to qualify a noun with something else, the result is something narrower than the original noun, and often completely different:

- Software Engineering is not Engineering

- Street Justice is not Justice

- Covert Intelligence is not Intelligence


>Unlike engineering, there aren't that many right answers.

SE is way, way younger than other engs.

>to produce a physical thing

Why physical thing would be a requirement here?


Because that's GP's attempt to differentiate it as it cannot be done any other way ;)


Physical things are obviously subject to physical laws. With software, things may be less clear. Sometimes they are not. The key part of engineering that's highlighted by such cases is that mathematical models are relevant. This is why an engineer sometimes has to say "no, that won't work".


Software is subject to physics and math/cs laws

>This is why an engineer sometimes has to say "no, that won't work".

But similar scenerios can occur in SE world too, so what does it even mean? like some unsound design of distributed system


Then if you see yourself as a professional and if you have a strong character, you say it. If you're a real engineer, you and everyone knows this is part of the job, but if you're a SE, generally speaking you're going to meet resistance. Your resignation letter should be ready in your pocket.

The surprising thing to many of us is that the "software engineer" title has been specifically associated with deprofessionalization of the job and the view that is moving away from true engineering. See the Dijkstra link I posted elsewhere in this thread.


I think your definition of engineering is a curious mix of "No true Scotsman" fallacy and a bit of circular reasoning.

My parents were very respected traffic engineers. One was concerned with traffic inside cities, another with road design. One couldn't give less care about "nature of materials and physical force" while figuring out where to put traffic lights and close roads, while another had a set of standards (say a lorry's turning radius, sign sizes etc) which they've applied without thinking about costs or even producing a pysical thing. That was done by some other contractor in a sense anyway.

A friend of mine is an electrical engineer. He maintains electric motors and I guess he would fit your definition better. At the same time, how much an electrical engineer has in common with traffic engineer? Or say an air traffic engineer? Or a construction engineer? I would say what they mostly have in common is the "engineer" part as they are doing completely different jobs in completely different industries. I might even go further and say when someone calls "Alice is an engineer", it is just a shorthand for "Alice is a mechanical [or some other] engineer".

So those were the differences, but lets see the similarities. When a traffic engineer gets a project to see if they can increase the traffic flow from point A to B it usually follows the common pattern of finding out the current situation, figuring out a solution, testing/simulating it out and then making the project/solution on what should be done. Then when the solution gets implemented, some details can be re-adjusted etc. I did simplify it a bit, and I'm unsure in the exact english phrases, but I think you get my point. Software engineers that I know follow the exact same process. Oh, a database is overloaded, lets see what we can do about it. Can we give it more hardware? No, as thats too expensive? What about if we scale up/down the services/workers/instances/nodes/pods calling that database? Can we simulate that? What do the metrics say? Etc etc. You see where am going with this? In essence, there is no difference.

My point is, if you cannot call Software Engineering only by the word "Engineering", then you cannot call anything else (just) Engineering. You can dance around this whatever you like, and define Engineering either narrowly or widely enough not to include Software Engineering (just like you did), but at the end of the day this isn't a natural science like say Maths or Physics. You cannot say 2+2=5, but you can say Engineering is X. But then, lets be honest here, and I suspect this is the root cause of this: it's about exclusivity and status. Engineers, doctors, lawyers, electricians, plumbers and a myriad of different professions like having guilds (or similar organizations, speaking in general here), and like having artificial scaricity. This brings status, it brings money, it brings power and influence. It cannot work if everyone is allowed in. It's what's simply called gatekeeping. It's what hiding behind a dismissive, elitist sentence I've heard too many times: "Oh, but he's no engineer". So if we're honest here we can call a spade a spade.


I'm old enough, and have been in the profession long enough to recall "software engineering" as a new term attempting to make the profession sound fancier. When I started we were programmers. We wrote programs. Sometimes we were also called "coders" though that wasn't understood outside the profession, where "programmer" was. Then the term "software developer" came along, and we were all "developers." Now, when I'm talking about my team of "engineers" I'm speaking of all my programmers. They create software, with all the design, authoring of code, and wielding of infrastructure that entails. Does that make the actual practice "engineering?"

Let's resort to definitions, with apologies.

Engineering

> Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings.[1]

That certainly doesn't make Software Engineers what are traditionally thought of as "engineers." So... on to Software Engineering:

Software Engineering

> Software engineering [is] the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software and the study of these approaches; that is, the application of engineering and computer science to software. [2]

That description does not fit what most of us do when we write or create software. Perhaps it should. We'd be better off in many cases. But programmers are often closer to gardeners than engineers in that we approach solving problems through empirical processes, testing and verifying as we go. TDD is an admission of the need to do just that. So is Scrum (empirical process control). There absolutely are cases where algorithm optimization using the latest research must be applied just so. There absolutely are cases where applying gradient descent and convolutional neural nets in specific fashions applies. Most of us are gardeners growing our systems, or carpenters building out a feature, though. Programmers. Software engineer makes it sound loftier, just like sanitation engineer makes trash collection sound loftier.

I will absolutely concede that I still use the "engineer" terminology on a day to day basis, my opinion on the internet notwithstanding. But it is a label that is weakly applied for fashion and connotation, rather than for its distinct meaning, and I suppose that is what I tilt at here on HN. Apologies for the pedantry.

[1] https://en.wikipedia.org/wiki/Engineering

[2] https://en.wikipedia.org/wiki/List_of_engineering_branches


Even on the pages you've linked, Software or Computer Engineering is still Engineering. You might say that it just doesn't fit the definition (from the same exact page), but then you can either take the argument with the Wikipedia authors or just think on it on your own.

I'm sure that say a conteporary civil engineer would scoff at calling Nikola Tesla an [electrical] engineer, just like you're virtually scoffing at calling a Software Engineer only by Engineer.

Admittedly that the software field is young, but does it make it "worth" less? To entertain your argument, do you consider a person programming PLCs an electic engineer? What's the fundamental difference between a software programmer and them? I don't see any. So you cannot call one an [Electrical] Engineer and another one "just" Software Programmer.

Gardener is not an engineer. On a ship there are usually at least two departments: Deck, and Engineering. The latter are people in charge to make sure that ship's systems are up and running at all times. There is no theory behind it, or pretty much any maths. It is mostly boring maintenance. And I would be surprised that anyone would call those people non-engineers. So why bring this up? Engineering definitely has a vague connotation with certain terms like electrical power, mechanics, devices, construction, materials etc. As the gardener or a trash collector doesn't deal with any of those, noone is considering a gardener an Engineer.

One can say, oh it's the title inflation, but that actually applies to any profession then. Or to put it differently, what makes a person an engineer? The work that person does, or the title it was given to them by some institution? Is it both? Is someone an engineer but is a career politician? I sure know one, and the guy will always be legally an engineer. This is a classic "what makes an art, Art?" question which is another can of worms I'm not going to open.

So I'm not sure what you're arguing then when all of this is on a very shaky ground. My position is that it is just a matter of a title and social convention. If you're a part of a engineering department, then I'm sure people outside of that department will call you an engineer. Inside of that department you might be a programmer of say a backend service, I could be a platforms guy, Alice could be QA engineer, and Bob could be a hardware engineer. It just doesn't really matter in the end. All of those are just social constructs which change with time. Or if we take it to a institution level: in some countries you have legally recognized Software Engineers (as I found out in other threads), in a country like mine you don't have one, whether we like it or not. So as I said in my previous post, this isn't maths or physics, and it is just a social construct which varies all over the world. So arguing about it is like arguing about the definition of art. I like spending time on engineering more so that's it from me ;)


You can define engineering in many ways, and none of them is equally right in every possible context in which the term is used (so it has this in common with every other word).

However, there are some ideas clustered around that seem to have something to do with it. Engineering on a ship has to do with electrical and mechanical systems, and in a highly constrained set of outcomes, essentially reducible to a single bit at any point in time. (Either the systems are up and running right now, or they aren't.) Within this system of evaluation of outcomes, it's not surprising if the engineers in this context aren't using maths every day but are engaged mainly in more practical actions. However, you can be sure that they know a lot of safety tolerances and operational characteristics of various ship systems that would be characterized as mathematical, even if they are mostly operating well within tolerances that make these operations routine.

One reason why people argue about "software engineering" is that there are authors who define it specifically to include scientistic or bureaucratic rituals that have no mathematical underpinning, while excluding the difficult mathy bits of engineering. The further you get from actual engineering, the more common this definition gets.

EWD1165 "There is still a war going on.":

https://www.cs.utexas.edu/users/EWD/ewd11xx/EWD1165.PDF


You can just read what Dijkstra said about it already 30 years ago, not much has changed, and I would have little to add.


If there isn't a possibility of someone dying if you make a mistake it isn't engineering.


Software used in medical devices, airplanes, and other applications where mistakes can lead to death does exist, and there has been tragic examples of software bugs killing people:

https://en.m.wikipedia.org/wiki/Therac-25


The people that write the software for such things are engineers.


If you have full expectation and support from your superiors that you may shut down software development operations for ethical reasons based on your technical expertise, you might be a real engineer.


Welcome to the real world, where software can get people killed.


Have you ever written such software?


because?


why


The software people who work on embedded systems like medical devices, speakers, sensors, electronics etc. are doing engineering all the time. Although I guess it's mostly EEs or computer engineers who do that kind of work, but many concepts of CS are still relevant there.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: