As cars get loaded with more software, there's a big temptation to upgrade the system in the field.
Last week I spent an entire day resurrecting a PC that had fallen victim to a mandatory software upgrade. It took all the hacking, begging, formatting, downloading, and reinstalling skills I could muster just to get the PC back to its pre-update condition. All this for a routine software patch that I never even asked for.
I point this out because PCs aren't the only boxes that get routine software upgrades. With all the firmware in modern cars, it's inevitable that they'll need upgrades as well. But for heaven's sake, don't do it the way computer companies do it.
I firmly believe that we no longer buy our cars; we subscribe to them. Updates to the car's navigation system, safety systems, or drivetrain firmware are almost expected.
Apparently it's no longer the manufacturer's responsibility to build a product that works. We're supposed to maintain and upgrade everything we own now. Open the box, unpack, and download the latest updates. Repeat as necessary.
I blame the twin scourges of flash memory and Internet connectivity. This evil axis makes it too easy to download firmware changes, bug fixes, and feature upgrades. If it was a bit harder to patch products in the field, maybe manufacturers wouldn't be tempted to do it quite so often. In the worst cases, products ship before they're truly ready, making all of us unwitting beta testers.
We can't really blame the technology, of course. Technology itself is amoral; it is neither right nor wrong. It's the business managers in charge of the engineers in charge of the technology who are to blame. They – and we – need to resist the urge to "fix it in the next release." No, the firmware should all work when the customer drives the car off the lot, folks. That's what they paid you for. And they've got every right to return it if it doesn't work as advertised from the beginning.
Bug fixes are as old as engineering. I realize it's naive to say, "make it right the first time." We're going to buy – and possibly make – products with flaws. But repairing these flaws should never be mandatory, never be secretive, and never be irreversible.
In other words, don't sneak bug fixes onto your customers. Make it clear what you're doing, own up to the mistake, and offer users the choice to patch their software or not. If they choose not to, don't make subsequent upgrades or patches contingent upon today's fix. Yes, that makes software development tougher. Suck it up, soldier. It was your fault to begin with. Voluntary upgrades will make your customers a lot happier, and they're the ones paying the bills.