When I was at university, I was told other engineering disciplines were much better at engineering. I believed my professors.
What I discovered, working with Electronic and Mechanical engineers over 15 years,
is that other disciplines mostly don't do something nobody's ever done before.
If you asked a Civil engineer to do something nobody has ever done before: their reaction would be to tell you it was going to cost enormous amounts of money and would have an uncertain schedule.
And nobody would tell a civil engineer what kind of tools or parts to use.
Bridges, Engines, Cars, Telescopes....
As things get more and more complicated, and more and more novel, "traditional" engineering disciplines start looking more like software engineering.
One place I worked invented the dishwasher that looks like a filing cabinet. The mechanical design had bugs just like software. They fixed it eventually ( well enough to sell.)
The contradiction is that beyond simple things, the engineering approach to most things these days is to have software in the middle making it all work.
A car company ran an advertisement when I was a youngster about spending 6 million developing their new car. (Toyota Camry IIRC) Toyota had made a car that was different to their other cars. It cost them millions.
I think that if you measure the complexity of an electronic circuit, or mechanical system it is not anywhere near the complexity of "simple" software. Complexity in the mathematical state space/chaos theory sense of the word.
Consider a standard suspension bridge: no moving parts. Some pivots, some vibration dampers. Copy the bridge for your next project.
A software equivalent would be what ?
We don't (on the whole) do critical and simple in software.
Lets look at manufacturing:
Software: Design software, Write program, hit compile. Copy onto a CD.
The manufacturing bit was at the end. The copying of the data.
Mechanical Engineering: Design system: design assembly, design parts.
Repeat for every one you want (Get parts made, assemble parts. Test, align)
The manufacturing bit was on another line and had to be repeated for every instance.
WARNING: Car Analogy.
We design a new thing every time we write software. Every program is not an Aston Martin, but a custom built car. Some will be from Monster Garage and some will be supercars from a guy in Italy with price tags in the tens of millions.
The funny part it that we can duplicate the "supercar from Italy" in 3 seconds and sell it to everyone in the world. So the cost drops to "shrinkwrap" software prices.
Software is different to other disciplines : because it is uncommon to design things that are not software from scratch.
Software not designed from scratch is really common. But still very complex. So, unreliable.
After all, we're only selling it for $20.
END Car Analogy.
If a company said that the CEO was getting a car designed for him that the company was going to pay for, the shareholders would geek.
If the same company gets software written to their "business processes", nobody blinks.
(I lied about the car analogy ending :-) )