1. Code that looks right should be right, code that looks wrong should be wrong. (I know this sounds trite, but there are many examples.)
2. When a program self-detects a fault in its logic, it must stop immediately, as it no longer will be in a known state. (It's still common practice to imagine one can recover from an assertion failure. I've spent many, many hours trying to convince other programmers of this.)
3. Better education will not prevent programming bugs. Better process and mechanical checking will. (This notion has been gaining a lot of momentum.)
4. Reliable systems can be built from unreliable components. https://www.digitalmars.com/articles/b39.html
> Do you think these advantages are common among those who have (mech/electrical/chem/etc.) engineering education and training who move into software development?
Heck, they haven't even trickled into the nuclear power industry (Fukushima), the oil business (Deepwater Horizon), or the automobile industry (Toyota surging problem). Those disasters taught lessons learned by the aviation industry decades earlier.
See also:
https://www.slideshare.net/dcacm/patterns-of-human-error
Perhaps I should amend my earlier statement that it's experience in the aviation business that I've taken over to software. My engineering training was mostly about math, not cutting metal and the nut behind the wheel.