I was visiting a friend of mine who leads a software team at Tesla. He casually mentioned that, in their industry, manual QA is one of the most important roles they have, seeing that the software they produce runs a precision machine that goes at 100mph on common roads. If hardware is considered hard, then cars are near the highest levels of difficulty.
It was a stark reminder that most methodologies developed around software are suitable to virtual, digital-only products, or products whose failure is considered low risk. The procedures and processes that run cars and space shuttles are necessarily more rigorous, more thorough, and in doing so much slower to complete.
This is one of the main reasons why the Internet of Things seems to be coming along so slowly, and doesn’t seem to even work half the time. Real-world environments, with so many more variables and failure possibilities (and competing standards, though that’s familiar ground for any application of software) translate to much slower progress than what we envisioned 4-5 years ago as the natural extension of the smartphone.
All that said, I’ve been absolutely amazed at the progress towards self-driving smart cars in just a matter of years. It may be that driving i is an easier problem domain, or maybe there’s such a potential for disruption that anybody with any amount of expertise is racing to be the first autonomous vehicle.