|Roses are red;
Violets are blue;
And so am I.
This week we’re debating two sides of the topic, “Are automatic software updates a good thing or a bad thing?” But since my learned colleagues aren’t available – or were wise enough to avoid returning my calls – I’ll be handling both sides of the argument myself. Fortunately, I’m of two minds on this subject, so I’ve got no problem straddling the barbed-wire fence.
Ever since we started connecting our embedded devices to this thing called the Internet, we’ve had the alluring prospect of being able to fix our software bugs remotely. Everything from iPhones to PCs to the Tesla Model S sedan gets software updates over the air, whenever and wherever their creator decides it’s time. Remote software updates allow us to fix bugs in the field, and they let us upload new features to our customers’ devices. But are these after-the-fact updates a good thing, or do they, in fact, promote sloppy programming and a kind of customer contempt? First, let’s hear the argument against.
The Argument Against
I hate random software updates. Just hate ’em. It seems like every time I turn on my PC, some product from Adobe wants to update itself. Or if it’s not them, it’s Apple. I’ve got news for you, guys: You don’t own my PC. I don’t $*@!ing want to update your crappy apps right now. This is my machine, not yours, and I don’t spend my days gazing adoringly at your software, hoping to get a new love letter from the programming labs. I wish Apple would acquire Adobe; then we’d combine the world’s two worst offenders and have one less company to hate.
Okay, so Microsoft belongs on that list too, because updates to Windows are as predictable as a tornado in a trailer park or a Jägermeister hangover. I know the company gets a lot of stick, but they’re updating an entire operating system, not just a single product, so give them some slack. If you had to keep that aging hairball of an OS current, you’d push a lot of updates, too.
So that’s the annoyance factor. Then there’s the consumer-confusion factor. Remember when Apple ditched Google Maps and replaced it with its own half-baked alternative? Nobody asked for that, yet millions of happy doe-eyed iGadget users suddenly had their mapping app taken away. An app they’d paid for, I might add. It’s possible (unlikely, granted, but possible) that some people actually bought their iPhone or iPad precisely because they liked the mapping app. But now that’s gone. Taken away by an all-seeing, all-knowing Apple that gets to retroactively decide what apps are running on your iGadget.
Amazon has been known to do similar things with books people have bought – excuse me, licensed – for their Kindle. Content unilaterally disappears, with no warning and only a feeble legal fig leaf for cover. Adobe (them again!) changes user interfaces, moves menus, and tweaks import/export options, all without any say-so from their paying customers – customers who soon will have the privilege of renting software from the company because it can’t be bothered to have real product releases anymore.
On Christmas Eve, my new PlayStation 3 took more than two hours to download updates to itself the first time it was turned on. Talk about a miserable out-of-box experience. Sony must’ve sent thousands of disappointed little kids to bed crying that night. Nice going. Maybe next year Santa will bring you something that works.
Third, constant updates promote sloppy programming. When you know you can patch the code later, you will. Oh, c’mon – you know you will. Even if you try to be a stand-up programmer and refuse, your boss will make you ship crappy code anyway because he knows it can be patched later and you need to ship this fiscal quarter.
Fourth, there’s the catastrophic-oops factor. What happens when your patch introduces new bugs? The cure might be worse than the disease. Some car owners are already nervous about automakers downloading updates mid-trip. What happens when the update leaves them stranded by the side of the highway? A free patch to the patch won’t make them feel any better.
Finally: hackers. If you can update your device in the field, so can anyone else. Oh, don’t make that face. You’re not special. The only reason no one’s hacked your device yet is because you’re small potatoes and nobody’s tried. You’re vulnerable right now, and your customers will be the losers, not you.
The Argument For
Software updates are awesome. They allow us to repair bugs that we couldn’t otherwise have fixed, with no need for a recall or an awkward EPROM replacement or memory re-flash. We can even add new features over time! The customers will love us because we keep upgrading and improving the product they’ve already bought. Yes, we’re just that nice.
First of all, bugs are a reality in all embedded systems. Try as we might, we’re never going to ship perfect code – at least, not on any kind of schedule. Given that grim reality, we might as well make provision for updating said code if we have to. Avoiding field updates doesn’t help anyone, and it prevents us from fixing important bugs. It’s all upside.
Second, we can add new features, as long as the marketing guys say it’s okay. Every now and then we can throw the customer a bone, hoping to keep them happy until the next major hardware-upgrade cycle. That keeps us in the customer’s mind, and it helps avoid some of the “Osborne Effect” when new products are on the horizon.
Third, remote updates could even be a revenue opportunity. Want to upgrade your car’s horsepower before that big road trip? Just download an ECU upgrade that adds a few HP. Want to modify photos while they’re still on your camera? Grab that Instagram applet for your Canon DSLR. In a world full of software-defined products, we’d be nuts to leave that opportunity on the table.
Permanent connectivity also works both ways. Kindle and Nook e-books both allow annotations to be uploaded to other readers, so they can all compare notes. It’s like a virtual book club, minus the cocktail peanuts. You can glean interesting usage data from your customer base too, including how they’re interacting with the GUI, what features are used most often, and how long it takes users to complete a task. That kind of silent (not to say creepy) feedback is invaluable.
Always-available updates turn hardware products into a kind of generic platform for continual software upgrades. Customers could “subscribe” to their products, allowing us (with permission, of course) to stream new content, new features, and new concepts their way. We could even cherry-pick a subset of the customer base to act as beta testers for new product ideas. Want to see what we’ve got up our corporate sleeves? Just sign here for the sneak peek preview program (just don’t store anything personal or important on your device).
The Obvious Conclusion
Now that we’ve clearly and cogently argued both sides of the case, what’s the conclusion? I think it’s clear. If I’m a developer, I want remote software updates. If I’m a user, I don’t want them. So there you have it. The decision comes down to a simple question: Are you making products for your customers, or for yourselves?
I’m sure there are other ignorant, hare-brained, ill-conceived ideas out there, so start uploading those comments, below.