Nothing says electronics like consumer electronics. Next to personal computers, living-room gadgetry is the gotta-have-it, can't-live-without-it showcase that most people associate with electronics.
Yet the design of PC hardware and software couldn't be more different from consumer electronics. PCs are unreliable, cantankerous, unpredictable machines that contract viruses, lose important files, and bring all manner of woe upon their users. In contrast, the average DVD player is dead reliable; few owners even read the manual. It does what it's supposed to do, day in and day out, without complaint. That dependability doesn't happen by accident. It's because consumer-electronics developers are just plain better than the average PC programmer. You just can't get away with sloppy programming or hardware design in consumer items.
Another thing that differentiates consumer devices from PCs is their differing philosophies behind user interfaces. PCs work when they get around to it; consumer devices work now. As user-interface expert Niall Murphy points out in this issue, the timing and responsiveness of a user interface make a big difference in how customers perceive the usefulness and value of a product. Something as simple as beeping when the keys are pressed can go a long way toward avoiding frustration and fostering customer happiness. For many users, the interface is the product.
One of the reasons I get aggravated with my PC (as if another was required) is that it's very cavalier about user input. Personally, I don't care how busy my PC is or what it's doing; it should never, ever ignore key presses, mouse movement, touch-screen input, soft reset switches, or thwacks to the side of the cabinet.
Go ahead and drop network packets. Tolerate disk read errors. Feel free to abandon extraneous calculations. There are few cases I can think of where some internal operation is more important than the owner of the box saying, “do this!” Granted, it's more important for an antilock brake system to prevent the wheels from skidding than it is to light the little LED on the dashboard. But in the PC world those safety-critical cases are pretty much nonexistent.
As an example, Windows XP prepares helpful information every time you click on a file icon. Things like the size of the file, its creation date, and other trivia are all collected in the background. In the case of a video file, it calculates the video's run time and identifies its encoding method. The trouble is, that information is stored at the tail end of the file, so for full-length movies that's a long search. Nevertheless, Windows blithely hunts down that information–which I never asked for–no matter how long it takes. The net effect is that if I even “touch” a video file with my mouse, it effectively hangs my computer for almost half an hour.
I'm sure this was initially seen as a convenient feature, but didn't anyone extrapolate the time required for large files? More to the point, simply responding to user input would have solved the problem. If I cancel the operation or simply click on a different file, the trivia-collection process should stop. Problem solved.
The user is king. Good user-interface design respects that, and good consumer-electronics designs have demonstrated that philosophy proudly. Keep up the good work.
Jim Turley wrote: “That dependability doesn't happen by accident. It's because consumer-electronics developers are just plain better than the average PC programmer.”
As an embedded developer I suppose I should be happy to agree with the above statement and who knows, maybe there's an element of truth behind it.
Let's not lose sight of the fact however that consumer electronic devices typically provide a relatively limited amount of functionality. The hardware, OS (if applicable) & application software are largely identical from unit to unit for a particular product. This limited functionality coupled with a relatively closed system gives the vendor the ability to test the product to a very high standard.
PC's by their nature are multipurpose devices with highly reconfigurable components (both hardware and software) that must be capable of performing a dizzying array of tasks. Flexibility comes at a cost in terms of complexity, and complexity makes any product more difficult to test & validate.It's easy to simply blame the PC developers but we are not exactly comparing apples with apples…
– Liam Power
Software Team LeaderEmbedded Labs Ltd.Ireland