Obligatory link to Hillel Wayne's Crossover Project [0]. The short version is that of 17 "real" engineers he interviewed who switched to software engineering, 15 said they consider software engineering to be an engineering discipline. Over the three blog posts he reviews the supposed differences between fields and finds that the crossovers don't agree with most of the stereotypical differences software people believe are there.
There are real differences that they identify, but they're not any more significant than the differences between traditional engineering fields, which are vast. But yes, one of the differences that they do point out is that software is not constrained by the physical world in any meaningful way.
What you certainly cannot do is sample people who have only experienced one field.
But yes, it's not meant to be a quantitative study, but there are a lot of very valuable insights in the blog posts.
And the jump from building academic programs in C/Matlab to building commercial software products is much smaller than the jump from having never used Fusion 360 to designing a commercial product.
Plus, there are many more resources out there for switching careers into software engineering. With CAD, you're kind of stuck with YouTube videos and the odd online course for foundational material.
Coding is 100% an engineering endeavor. And just like any other one, a particular project may not be following engineering best practices and that project may be producing some dangerous garbage as a result, but I'm actually fairly satisfied with my engineering practices, as engineering practices, what with my automated testing, automated acceptance criteria, automated security checking, automated style checking, integrated peer-review practices, performance testing practices, engineering for redundancy and resiliance. If $YOU're thinking the coding world is awfully cowboy maybe that's a sign that $YOU need to up your game with the already-existing and well-documented best practices in our industry. To be honest most other "real engineers" would be green with envy at what we have available to us!
Latency is the first to come to mind. The realities of how systems are designed and how permanent the storage in question is translate to latency and thus frequently performance bottlenecks.
Data durability is another thing to consider. Though frequently that's mostly abstracted away in the lower layers of hardware, system composition, and operating system / file system / libraries generally.
Limitations also exist in raw hardware performance (state machine speed, how parallel the computation can be, how parallel the desired process can be made) and capacity, for processing, temporary memory (RAM), and long term storage. Thermal considerations might also be a factor, but those are usually managed by lower layers and present as capacity limitations to typical software.
Software as a domain for achieving goals does offer an unusually wide degree of flexibility in approach. Today we also stand on the shoulders of many giants, with relatively easy access to extremely powerful systems that can obscure many sins for 'reasonable' workloads.
I’m not asking to criticize. I’m genuinely curious.
Not even all electronic products always feel the same in one’s hands like iPhones of the same model do. For example I remember back in the day my Xbox controllers would feel different from my friend’s Xbox controllers even though they were the same model and supposedly manufactured the same.
Apple is willing to pay the cost to minimize the margin-of-error at every step.
Another approach to keeping yield high (at the possible risk of hurting your brand) is to do what Intel did with their Celeron line. The equivalent for Apple would be a "value iPhone" which would not come with the same set of expectations from customers.
It is also easy to make thousands of identical items when your build material is solid and can’t be stretched
As for the Xbox controllers, it could be a lot of differences. Microsoft does not feel the need to keep different runs exactly the same. They may be more willing to buy different types of plastic depending on what's cheapest this quarter.
Or it could be much simpler, maybe iPhones do feel different. How much time do you actually spend interacting with someone else's phone (Have you ever even actually touched another person's phone, or just their case?), vs how much time did you spend with your buddy's Xbox controllers?
It probably wouldn't be if human beings had to drill holes in the PCB by hand, place and solder components by hand, and hand-machine the case.
different from my friend’s Xbox controllers even though they were the same model and supposedly manufactured the same.
This could be things like slight changes in the sourcing of, say, springs for an analog stick, composition of rubber used under other buttons, and actual wear on components of the assembly line, like the molds used for injection molding of something with a pebble texture. Not to mention, obviously, that each controller will break down differently over time depending on use.
Hard materials are easier than soft materials in some ways. If you lay a soft fabric out before cutting, is it slightly folded, perfectly flat, taut? It will all make a difference.
Moulding plastic or cutting a hard material like aluminium is more amenable to tight tolerances since you can use the same mould over and over, use the same cutter and the material doesn't flex, stretch or change in any significant way.