To explain, Toyota has just about become synonymous with the word "quality" for many years. At least in a mechanical sense that still holds true - their stuff is close to perfection. But it seems that software has now made its way not just into engine management, but into all the innards of a vehicle dashboards and instrumentation - and guess what? As we know software is anything but reliable. I recall my first Audi which had a lot of problems that were finally traced to a poor data exchange between the electronic key and the keylock. The keylock was replaced and all was well - but it took months to figure out why the engine just kept cutting out from time to time. And lots of software may never become reliable unless it is endlessly tested - and who can really afford to track down all the possible failure paths of software unless it is life threatening? There are some ways to do this but none are certain: (ref http://en.wikipedia.org/wiki/Formal_methods ).
So, here's the thing: most convenience appliances (radios, cameras, phones, cars) are now moving to incorporate firmware to make them work (software in other words). As a case in point, at a company event just last week I took my Sony digital camera to ensure we got some good shots. But the lady using it complained that the flash mostly didn't work - I thought it was just user error. But guess what? Turns out I couldn't force on flash fill anymore - it would cycle through flash off and auto flash but there was no getting the flash fill option to come up. It just wouldn't work. I did a search on Google and found that this error happens from time to time and the solution is to restore the firmware back to factory settings. I did this and all was well. But crikey! Rebooting a camera to get it working properly??? That's far from being a reliable mechanical appliance. And in the past year I've done factory firmware resets or restores to my:
1. Denon receiver (reboot to factory firmware - fixed multisound mode)
2. Internet radio
3. Sony Camera
4. PC (well that's expected so I hardly count it)
5. Another Denon receiver (a pattern of poor firmware maybe?)
6. Blackberry (eventually I chucked it and went with iPhone - so far so good, except for the two complete firmware updates it's forced on me)
7. Apple TV (not really a full restore but it did get a bad update that I had to restore) - no music was lost however
Now I tend to move at the cutting edge of lots of technology, and that may mean I am seeing this perhaps a little earlier than it's going to hit most of us: if our world is moving to become software controlled in the home, then we are going to be getting more and more unreliable appliances - in other words appliances with unreliability "built-in". The compensation is functionality - they become (potentially) hugely more functional of course. So I see a trade-off we will all be making: how much functionality do I want/expect for the curse of the cycle of unreliability (and endless patches/updates/reboots) that I see as inevitable.
Perhaps there is then a business opportunity for simple appliances with very basic firmware (or none) that simply does one or two simple things very well and doesn't fail. (Kodak Brownies or Polaroids anyone?)
There's no right answer: we certainly like the enhanced functionality, and we like the fact that suppliers can flash us more features on the fly and fix faults that arise so I guess we'll have to live with the uncertainty of unreliability if we also want to buy them cheaply (meaning minimal testing of the firmware is possible.)
Now add home digital multimedia to the equation and overlay home automation and security systems over all of THAT. How will we ever have reliable home or work environments in the next decade? That's a challenge for us all to ponder...
Cheers, and onwards into the Brave New World..
Sorry but there is no such thing as unreliable software. As a former software engineer and application developer of many years I have grown tired of the suggestion of such a concept. Put quite simply, software does not break. It doesn't even wear out. It's probably one of the few things in the world of which the former two statements are innately true.
ReplyDeleteIf a bug exists in a piece of software then it was there from the day it was written and implemented.
What is unreliable is the environment in which software operates, the processes which it supports, and more importantly the people who specify, design, develop, maintain and operate it.
Cheers.