Backwards Compatible Cars
Comparing compuer and car manufacturers has always been entertaining. These days I've been wondering about usability and backwards compatibility. What happened was that I got myself a new car; my previous car was manufactured in 1982, so the jump to a current model is interesting.
First up, cars these days are physically much easier to operate (which was also true for 1980-era cars with respect to older models). You have power steering and breaking assistance, these two account for a lot of driving confort. Then there's stuff like electronically-controlled fuel injection, ABS, stability control and automatic gearboxes – these decrease the skills needed to drive a car smoothly. So you have cars that are friendlier and easier to drive, no surprise there, just the progress of technology, right?
Well, the thing that strikes me is that we're still using the same basic components: wheels, breaks, gearbox, engine, steering column. Practically all production cars have these elements. The user interface is also the same: steering wheel, pedals, gear stick, controls for lights and wipers. The changes are in the details and they all improve on existing idioms, working with people's existing knowledge and expectations.
Let's look at some examples. The steering wheel is essentially unchanged mechanically; an electric motor is added to help the driver when turning the wheel, and the system is smart enough to figure out what the driver is doing, and help him. Breaking assist simply makes the break pedal easier to press; it still does the same thing, breaking harder the deeper you move the pedal. The electronics that control the engine make sure that it's fed with an optimal mix of fuel; the gas pedal communicates your intention to the computer which acts accordingly. By contrast, with carburetor engines you can jerk or choke the engine more easily. And my personal favorite: a system in some traction-control-equipped cars that helps you start up a hill by holding the breaks so you can move your foot from the break pedal to the acceleration pedal. After two seconds, if you haven't started, it gradually releases the breaks. No sudden movements, nothing really unexpected for the driver, yet a complex system is working to help him behind the scenes.
So my point here is that cars have benefitted a great deal from technology, yet their interface has remained backwards compatible and relatively simple. Controls that used to directly command car systems have changed their role – nowadays they convey the driver's intention to the system. We programmers have something to learn here.