Users increasingly expect application experiences that take full advantage of their chosen platforms. That means developers and designers have to be as familiar with the devices they target as their users.
This article explains why cross-platform literacy matters, and describes several techniques to make switching between platforms as easy as possible.
Harnessing Platform Capabilities
When applications are created by designers and developers who aren't intimately familiar with their target platforms, it tends to show. I've spent most of my career working with cross-platform technologies, and one of the most important things I've learned is that details matter.
End users might choose their platforms based on things like social trends, financial considerations, and ecosystem investment, but they often come to love the little shortcuts, conveniences, and idiosyncrasies that make up that platform's overall experience.
An application doesn't have to take full advantage of every platform capability—especially early on; but since it's safe to assume your competition will eventually provide the best and most native-feeling user experience possible, your standards should be equally high.
Cross-platform Fluency Matters
Designing and developing for multiple platforms is tricky. It's logistically difficult since it usually requires varying skill sets, and it's expensive since it sometimes requires investment in multiple sets of hardware.
Additionally, designers and developers are every bit as passionate about their chosen platforms as their end users—frequently even more so—which can introduce both biases and blind spots into their work. But I believe that the best user experiences come from designers and developers who are completely fluent in the platforms for which they build, and that being fluent in a platform means going beyond just testing: it means spending time using that platform for real-world tasks, and genuinely learning to appreciate it despite personal preferences.
This article describes several ways in which you can make working with multiple desktop and mobile platforms on a regular basis much easier and much more efficient. While it's true that becoming intimately familiar with all the relevant platforms out there is a significant investment, it's also true that the easier you make it, the more likely you will be to maintain that experience over time—and most importantly, the more you'll learn to think like your users.
The Bad News First
Remaining digitally ambidextrous is not easy (or cheap), and in fact has proven to be a constant struggle for me over the years. That's the bad news. But the good news is that several factors have made moving back and forth between devices and operating systems easier than ever:
- Advances in emulation technology.
- Extremely affordable cloud services.
- Increasingly capable and popular web-based applications.
- And finally, the continued popularity of both iOS and Android—as well as the resurgence of Macs—requiring many software vendors to support multiple platforms in order to reach all their customers.
To maintain technological fluency, it's essential to spend time with the various devices and operating systems. Not only should you use them for testing, but it's also important that you be familiar with the likely applications, tasks, and workflows of your end users.
The rest of this article describes several ways you can organize and configure your digital life to this end. The aim is to incorporate as many different platforms, workflows, and design languages as possible into your applications. If you succeed, all your customers will be well served, regardless of their platform.
The first requirement for engaging with multiple platforms is either the hardware to run them, or software solutions that provide effective emulation. The following section describes several approaches to making both mobile and desktop platforms as accessible as your budget allows.
Let's get this out of the way from the outset: the first thing you need is a Mac. There are plenty of options for accessing Windows (which I'll cover in more detail below), but unless you want to build a Hackintosh, there's really no way around buying an iMac, Mac mini, or a MacBook. Fortunately, as a developer or a designer, there's a very good chance you already own at least one Mac, and if not, Apple has plenty of affordable low-end (but still very capable) Macs available.
Fortunately, accessing a Windows environment is much cheaper and easier. The simplest solution is to use a cloud service like Amazon WorkSpaces, Microsoft Azure RemoteApp, or VMware Horizon Air. But since performance is a critical component of a platform's overall experience, I've never been a big fan of the latency typically seen with remote desktop environments. Therefore, I would recommend running Windows as natively as possible.
It's been about a decade since Steve Jobs announced Apple's plans to migrate from PowerPC processors to Intel's x86 architecture, and not only have Macs gotten significantly faster, but running both OS X and Windows has also gotten much easier. The simplest way to have access to both operating systems is to install Windows on your Mac under emulation using tools like Parallels, VMWare's Fusion, or the freely available VirtualBox. In general, I've found that these tools have gotten easier to use, faster, and much more capable over the years.
For a more native experience, there's always Boot Camp, which enables you to install Windows—along with a set of Windows drivers for Apple hardware—directly on a separate partition of your Mac's hard drive. The advantage of Boot Camp is you typically get excellent performance, since Windows has access to all your Mac's resources (in fact, there was a time when MacBooks were considered by many to be the best Windows laptops). However, the disadvantage is that you have to reboot into Windows, which makes rapidly testing or experimenting across environments much more time consuming.
My personal preference is to use two separate computers. In my opinion, Apple makes the best laptops, and I think the best Windows experiences are on desktop configurations. Therefore, I use a MacBook Pro for OS X, and a custom-built PC for Windows.
Mobile is where things really start getting tricky. I've learned the hard way that the established system of manufacturers, retailers, carriers, and service providers is not optimized for customers who want to own and operate multiple devices simultaneously. But with a little work (and a few good tips) it is possible.
My personal rule is to always buy my phones outright and never sign contracts or accept subsidies. Although it's very tempting to have to come up with less cash upfront, having the flexibility to swap phones or upgrade whenever you want (selling old phones to offset the cost) is critical to having access to the most recent and popular iOS and Android experiences.
Learn PHP for free!
Make the leap into server-side programming with a comprehensive cover of PHP & MySQL.
RRP $11.95 Yours absolutely free
But the problem with having two phones is getting them both working at the same time. The easiest thing to do is to have a single phone plan that you use with one phone, and only use the second phone when Wi-Fi is available (which is almost everywhere now). If you want to make a more permanent switch, all you have to do is transfer the SIM card. Though somewhat inconvenient, it's better than paying for two separate phone plans and trying to manage multiple phone numbers.
If you want both phones active on mobile networks at the same time, I would recommend some type of shared family plan. For example, I have an AT&T plan which allows me to share voice (which I seldom use) and data (which I use a lot) across as many devices as I want. Though I have to pay an additional $15 each month per device, it's much cheaper than having entirely separate mobile phone plans.
The biggest problem with having multiple phones active at the same time is having multiple phone numbers. The best way around this problem that I've found is to use Google Voice (a technology that appears to be one of the underpinnings of Project Fi). Google Voice enables you to have a single phone number which forwards to as many different phone numbers as you want. Additionally, you can use Hangouts on iOS and Android (and in the browser) for texting and instant messaging. However, if you want to use native messaging services like Apple's Messages app, then you're probably better off just swapping SIM cards occasionally.
Having the hardware to support multiple platforms is just the beginning; the next step is getting it configured for use with real-world use cases and workflows. In order to experience platforms as much like your customers as possible, I find it's best to work with real data. And the easiest way to work with real data across multiple devices is to favor applications and services that make synchronizing your digital life seamless.
This section describes some basic software solutions that simplify not only the process of getting real-world data onto multiple platforms, but also keeping that data synchronized across your entire constellation of devices.
In my opinion, email is the original killer app. Every email client is custom-designed for each device's unique capabilities; all the user's data lives on remote servers (now referred to as "the cloud"); and most of the protocols for interacting with that data are open, well understood, and fairly robust. Email is such a paragon of modern, multi-device computing that we take for granted the fact that we can easily read and send mail on just about anything that connects to the Internet.
Whether you use a web-based email solution like Gmail, or an enterprise solution like Exchange, accessing your email from any modern device will probably be the easiest and best supported part of becoming more cross-platform literate. Therefore, let's look at other aspects of multi-device adoption that may not be quite as straightforward.
It used to be that browsers were an impediment to using multiple devices, since data like settings, bookmarks, extensions, and history weren't easily shared. However, most major browsers now handle synchronization seamlessly, which makes it easy to switch between platforms and still access your configuration.
My personal preference is Google Chrome, because it synchronizes so much information, and because it runs well across all the devices I use. You can even see which tabs you have open on your other Chrome instances—regardless of device or OS—which really helps reduce the friction of jumping from device to device. Whether I'm setting up a new Mac, Windows PC, iPhone, or Android device, the first thing I download and/or configure is almost always Chrome.
Like browser synchronization, sharing files across devices has gotten much easier and cheaper over the years. My favorite service is still Dropbox, because I've found it to be the most reliable and versatile, but Google Drive and Microsoft's OneDrive are good alternatives. (In fact, there's nothing stopping you from running more than one and getting a significant amount of combined storage for free.)
Whichever service you choose, get to know both its capabilities and limitations. For instance, I've found that Google Drive doesn't work while I'm connected to my enterprise VPN, which is a serious limitation for me in some contexts, though it seamlessly synchronizes all the photos from my Android devices, which is extremely convenient. Similarly, having the latest version of the Dropbox desktop client installed gives both Mac and Windows enhanced screenshot sharing capabilities, which I frequently find useful when testing and experimenting across platforms.
The one thing you want to be careful of when making extensive use of file synchronization is conflicts. Although Dropbox has some of the best synchronization technologies I've ever used, it's still possible to create conflicts when the same files are open and modified on different devices. Fortunately, Dropbox does a good job of recognizing those conflicts, which means you are very unlikely to ever lose work (I never have), but you still might find yourself with multiple versions of the same file which you then have to manually merge. The trick to avoiding conflicts is to always close documents on one device before switching to another.
Personal Information Management
If you're old enough to have owned a PDA, then you might be familiar with the term PIM, or Personal Information Management. It's not used all that much anymore, but I've decided to revive it here in order to refer to a superset of data encompassing calendars, contacts, notes, and passwords.
For calendars and contacts, I use a combination of Google's tools and, when in an enterprise environment, Exchange. The one service I would avoid is Apple's iCloud. Although I really like Apple's native interfaces for accessing my calendar and contacts from Google and Exchange, I generally avoid relying on Apple's services, since they tend to be much less accessible from competing platforms.
Over the years, I've used a myriad of solutions for taking and synchronizing notes, including Microsoft ActiveSync (way back in the day); text files combined with version control systems like CVS, SVN, and more recently, Git; a combination of Dropbox and editors like TextMate, Notepad++, and Sublime Text; and finally, all kinds of online notebook applications like the now-defunct Google Notebook, Google Docs, and Google Keep. Fortunately, thanks to apps and services like Evernote, OneNote, and Simplenote, cloud-based notes have gotten infinitely easier. Although each has its own sets of capabilities and limitations, most modern note taking solutions are very powerful, either free or reasonably priced, and work reliably across all relevant platforms.
The final piece of PIM data is passwords. Although I love browser synchronization, it's been some time since I've relied on my browser for password management. Instead, I use a dedicated password manager. The three I hear about most frequently are LastPass, 1Password, and Dashlane—all of which allow you to securely access sensitive data like passwords, payment information, and encrypted notes from just about any modern device. If you're still using text files, spreadsheets, browser password management, sticky notes, or the same password everywhere, I highly recommend switching to a dedicated password manager as soon as possible. Not only are they far more secure, but they have the added benefit of making your passwords available to you no matter which operating system or device you're using.
Conclusion: Don't Let Perfect be the Enemy of Good
I've been immersing myself in different ecosystems for several years now, and I've gained a lot of experience in techniques that make switching between platforms and operating systems relatively painless. But it also means that I've discovered plenty of problems.
The primary objective of using multiple devices is to make sure we're able to see the world through the eyes of our users, and to encourage us to build empathy for customers whose tastes and expectations differ from our own. But just as the observer effect in scientific research states that the very act of observation changes the outcome, the process of making it as easy as possible to switch between operating systems and devices might, in some cases, mean missing the very platform-specific experiences we want to have.
For example, using Google Voice and Hangouts to make it easier to switch between iOS and Android phones means entirely avoiding Apple's messaging ecosystem—perhaps one of the most common features and workflows experienced by Apple users. Or by exclusively using Chrome, since it does such a good job of syncing settings across just about all modern devices, we might not be spending enough time in Safari, the browser of choice for many Mac users.
A good way to characterize the danger of a more platform-inclusive digital lifestyle is that of going wide at the expense of going deep. However, I've come to believe that such a risk is not only manageable, as long as we're fully aware of it, but that it's preferable to the alternative of not being platform-literate enough.
As developers and designers, there will always be a temptation to favor experiences, patterns, and workflows that we either enjoy most, or that are most convenient for us. But by remaining broadly familiar with others' tastes and expectations, we can focus more on what's best for our customers. After all, if we don't, it's only a matter of time before the competition will.
Jump Start Git, 2nd Edition
Visual Studio Code: End-to-End Editing and Debugging Tools for Web Developers