We’ve all been there – swearing at our phones when our pithy Instagram pics won’t upload, cursing the data roaming charge as Dropbox decides to sync when we’re on holiday, cussing when the ‘next’ button is off the edge of the screen and we can’t get to it.
It seems more and more sites, mobile apps and even operating systems fail some of these most basic conditions. Users’ screens aren’t always 27″ behemoths (or retina beauties). Users aren’t always on WiFi or even a solid 4G connection. Sometimes GPRS (a measly 114 Kbps down and 20Kbps up) is as good as it gets and even then only at one lousy, intermittent, bar.
I really don’t need iCloud backups to run when I’m paying $24/MB
Recent personal frustrations include iOS which takes dozens of clicks to configure when traveling to ensure only the data I really want (those ever important check-ins, Instagram updates and Twitter statuses) is what gets used when I’m roaming. I really don’t need iCloud backups to run when I’m paying $24/MB thanks.
Even Instagram, which I normally laud for the way it’s designed for mobile (for example its starts uploading the photo while you’re entering the metadata so it seems like the photo uploader is really fast), gets this wrong. When you’re on a crappy connection failed uploads can crash the app and even if they don’t you have to restart the upload from scratch. Come on, even the most basic FTP program can resume an aborted upload these days. Don’t believe me? Next time you’re in the middle of an FTP upload yank out your ethernet cable (or turn off your WiFi) – your FTP program won’t even skip a beat once you reconnect and will calmly continue right where it left off.
Even on desktops this goes awry. Photoshop, for example, can’t handle small screens. On my 1366×768 MacBook Air 11″ the Save button on some dialogs is off the screen. And trust me, there is nothing more frustrating than not being able to save your work.
In the nineties we cared deeply about these things. We had colour calibrated monitors (a leftover from the print design days), but still knew that wasn’t the experience our users were getting. We used the web safe palette in the knowledge that it would be consistent on most browsers and computers. And we tested our websites on as many computers and monitors as possible before releasing anything.
What’s changed? Is it the proliferation of screens and devices? I know I use computers with resolutions varying from 1366×768 to 2560×1440, as well as two different iPhones, a handful of tablets and occasionally a computer hooked up to my TV.
And on mobile the story gets worse. There are around seven major mobile operating systems, with dozens and dozens of versions with varying capabilities to take into account. Screen sizes on mobile devices vary even more widely with hundreds of viewports ranging in size from 234 to 1080 pixels wide.
That’s no excuse though – it just makes our jobs harder. I know, I know, they’re hard enough already, but it’s about the users remember?
Test, test, test and then test some more.
Lessons for Product People:
- Test, test, test and then test some more. If you don’t have a plethora of devices yourself, your colleagues and friends do. And don’t just check the homepage – go through your key user flows to make sure everything works and is usable and as clear as it can be. And then test some more.
- Responsive design isn’t a silver bullet. In the right context it’s a great solution, but don’t just make something responsive and assume it will now work everywhere.
- You know that corner of your office where you can’t get any reception? Where you go to avoid calls from Mom? THAT’s where you test your mobile app. Make sure key interactions work, that updates don’t take forever or use up more data than necessary, and that uploads/downloads don’t fall over and crash the app.
- Take a trip abroad every once in a while. See what happens when you’re roaming and counting every KB used. Maybe background updates the user didn’t request aren’t so great anymore.
- Think about context. Do your users always want updates to run automatically in the background? Should your app act differently between WiFi and 3G/4G? Should it act differently when roaming?
- Understand your users. Yes we all hate IE6, but if the 0.5% of your users on IE6 are in fact 30% of your paying customers, you still have to support it. The same goes for devices, operating systems and screen sizes.
- Plan for the worst case scenario. How does your app behave when the data connection is spotty or non-existent? Fail gracefully, give the option to resume uploading when the connection improves or maybe even have a backup method that’s more stable and does that upload packet by packet to ensure it gets through. Consider a message bus or queue to mitigate an intermittent connection.
These are really high-level and hopefully just seem like common sense. How do you ensure your product works in every context? Share your lessons in the comments.