A palliative is a treatment that soothes even if it can’t cure the illness.
By all means, whenever you can, fix the problem, go to the root cause, come up with a better design…
But when you can’t (and that’s most of the time, because the straightforward problems have already been solved), the effort you put into providing a palliative will not go unnoticed or unappreciated.
I’ve been catching up on Seth’s blog (I’m woefully behind on pretty much everything at the moment) and this post in particular caught my attention, largely because it reminded me of the reason why I haven’t really been reading/posting/watching anything much lately: Pokémon Go. I’d still like to do a full breakdown of that game, which isn’t this, but Seth’s words really summed up one of the aspects of the game’s development that has impressed me.
Anyone who has had anything to do with Go by now has probably come up against one of their many bugs. When the game first launched there were dozens; the game would freeze when you caught a Pokémon, when you didn’t, when you span the map too quickly, when you randomly encountered the wrong species or item. It crashed routinely, the servers were completely unstable and core features, such as the Pokédex and tracker, straight up didn’t work. The game was a mess and often very frustrating, but many people saw the gem at the core and decided to stick around anyway (yours truly, clearly, included).
Over a month later and many of these issues persist. However, quite a lot of the bugs have been addressed. Sometimes, as with the now infamous “three footsteps” glitch or the more recent issue where some Pokémon randomly changed upon a successful catch, it seemed like each fix broke something else. Despite this the game is now far more robust than at launch and barely ever force quits for me any more. I can tell several of the bugs still exist, but wonderfully were they couldn’t instantly cure the problem they’ve introduced palliative solutions.
Sometimes, the game hangs when loading. When it first launched, you couldn’t do anything when this occurred except either wait it out and hope or force the app to crash and reload. Now, after a certain time has elapsed, a “Sign Out” button automatically appears. Press it and you’re returned to the initial splash screen where you can reattempt to connect. It’s not a fix – the loading screen can still hang – but it presents a much less frustrating solution than the previous alternative. Same goes for one of the earliest bugs where the “rocking Pokéball” animation would just fail to load, locking you into a useless screen and forcing you to (again) force quit the app. This bug still occurs for me from time to time, but now the app deals with it, forcing the next animation to trigger and ignoring that the previous one never did. These are simple, easy “fixes” that don’t solve the (I imagine) rather complex underlying root causes of these issues, but make the game infinitely more enjoyable to play regularly.
I’ve never seen a games developer or software company really take this approach before, but Niantec seem to be making it work for them and personally, I think I’ve learnt something about how to handle problematic code.