Writing good apps is hard. Writing good mobile apps is even harder.
Why? Because mobile applications place special burdens on everyone who plays a role in software delivery - from developers to software testers to IT Ops.
To understand exactly what makes mobile development so challenging, let's take a look at the special difficulties that arise when you are building a mobile app.
An App is an App...
In many ways, of course, the differences between a mobile app and other types of apps are not so stark. Your mobile app may well be written in the same language that you use to write other types of apps. In fact, from a code perspective, it may look very similar to other apps, especially if you build a mobile version of your app as part of the same software delivery chain that is also used to create versions of the same app for other platforms.
It's worth noting, too, that the barriers separating mobile environments from other environments are not as pronounced as they once were. Devices such as convertible laptops, which merge the functionality of mobile devices with those of a traditional laptop, have blurred the lines between mobile and PCs.
At the same time, the rise of devices like wearables has created some ambiguity regarding what actually counts as a mobile device. Is your smart watch basically just a mobile phone with a smaller screen, or does it represent a different category of device altogether?
Faced with questions like these, it may be tempting to stop thinking of mobile apps as a distinct category, and instead approach application delivery as a world without borders, where software delivery teams face the same core challenges, regardless of which device their software ultimately runs on.
...Or Is It?
While there is some merit to that logic, it oversimplifies the reality. True, the lines separating mobile apps from other types of apps are blurrier than they used to be. But they still exist. Your smartphone, smart watch or other type of mobile device remains very different in key respects from your desktop or your laptop - even if your laptop comes with a convertible display that can turn it into a tablet.
Those differences create special challenges when it comes to mobile app delivery. Following are the main ones.
Probably the most obvious major difference between mobile devices and other devices is that mobile devices tend to have much smaller displays. The typical mobile viewport is a mere 360x640 virtual pixels, as compared to 1366x768 on desktops.
What this means for mobile software delivery teams is that mobile apps have much less screen space to work with. As a result, not only do mobile app designers and developers need to be pickier in choosing which information to show, but UI/UX testers must also carefully assess whether a mobile app’s limited on-screen information meets user needs.
These challenges are amplified, by the way, when you factor accessibility considerations into the mix (and you always should if you want to support all of your users and stay ahead of regulatory standards). How, for example, will visually impaired users magnify objects in your app's display without disrupting access to other important data on a small mobile screen? Will your mobile app rely on external accessibility tools, or will you have to build them into the app itself?
Another pretty obvious difference between mobile devices and other hardware platforms is input devices. It's rare to work with a mouse or physical keyboard when using a mobile device. Instead, users typically interact with their devices using touch input, or sometimes, voice commands.
This does not mean, however, that users never use physical keyboards or mice in conjunction with a mobile app - it’s certainly not unheard of for someone to connect a Bluetooth keyboard to a mobile phone, for example. Nor can you be sure whether a given user will prefer touch input over voice input.
As a result, mobile application delivery teams must be prepared to accommodate and test for a wider range of input methods than with traditional apps. They need to be sure that input functionality works as expected, and that backup input methods are available in case the primary input method fails. You don't want your users to be locked out of your app because their microphone stops working and they can't issue voice commands, for example.
Mobile devices support an increasing range of biometric data collectors, from fingerprint sensors to iris recognition devices and beyond. Biometric features are a powerful way to help increase security and add personalization to the mobile user experience. At the same time, however, they create another variable that mobile app delivery teams need to address.
Which biometric data points will your app support, if any? What will it do if a particular type of biometric sensor is available on one type of mobile device but not on another? What if biometric data sensors fail or give false-positive results?
These are all questions that most desktop programmers would not have to worry about, but which are increasingly crucial for mobile app delivery teams.
Mobile App Distribution Channels
A final key difference between mobile apps and other apps is the way mobile apps are distributed.
On a desktop system, users tend to download applications directly from the websites of the vendors that sell them. Or, if they are old-school, they install software from CDs. They also commonly access web-based desktop apps directly through their browsers, without having to install anything locally.
In contrast, most mobile software is distributed through centralized distribution channels - namely, Google's Play Store and Apple's App store. This is often true even in the case of mobile apps that are essentially web apps written in HTML, but are nonetheless distributed via an app store.
What does the app store phenomenon mean for the teams that create mobile software? Well, a few things:
- Mobile apps need to meet quality standards in order to be accepted into app stores.
- It's easier for users who've had negative experiences with mobile apps to tell other people about those experiences via app store comment features. Whether these reviews are fair or not, they can significantly impact the uptake of your mobile app.
- The ease with which new mobile apps can be downloaded means that users can quickly replace your app with another one if they don't like it. This is probably part of the reason why one in four mobile apps are used only once after they are downloaded.
Fortunately, all of the challenges discussed above have solutions. The solutions center on careful mobile app design and testing. Yes, that may mean that you have to spend even more time architecting and testing your mobile app compared to a different type of application. But that's just the reality of the mobile ecosystem.
Chris Tozzi has worked as a journalist and Linux systems administrator. He has particular interests in open source, agile infrastructure and networking. He is Senior Editor of content and a DevOps Analyst at Fixate IO. His latest book, For Fun and Profit: A History of the Free and Open Source Software Revolution, was published in 2017.