Re: Bloody software...
The hardware doesn't always work perfectly even if it's designed properly. It's up to the software to handle what's thrown at it in a predictable way.
Motto for software engineers: If it can go wrong it will go wrong. If it can't go wrong it will go wrong on the first live run (some projects only have one live run !!).
No they don't train software engineers properly, very few universities have courses that cover the software / hardware boundary. Around 1990 there was a move by the UK MoD towards getting all engineering designs signed off by a Chartered Engineer. (At the time a CEng involved getting a decent first degree, 7 years of practical and formal training, an existing CEng to back you with their reputation. Then you could start the application process). The intention was to spread this to other government departments. Of course it was easier just to employ anyone who can work out which way up the keyboard goes - they don't ask awkward questions that could delay the project, or delay the parachute release.
We're still at the snake-oil stage of software development where anyone can walk in as an expert. Let's make it a proper profession and get some respect even if we would be liked as much as lawyers.
Comments suggesting more training always get downvotes. To ease anybody's conscience I will point out that I have a Computing Science degree, am a CEng, and worst of all have an MBA.