4 ms·
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
by slowmovintarget 4y ago
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
- tester756 4y ago>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?
- jq-r 4y agoBecause that's GP's attempt to differentiate it as it cannot be done any other way ;)
- inimino 4y agoPhysical 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".
- tester756 4y agoSoftware 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
- inimino 4y agoThen 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.
- jq-r 4y agoI 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.