Some Painful Truths About Mobile App Development

Frank Zinghini

Founder & CEO
The Painful Truth about Mobile Application Development

The general mindset around developing a mobile app seems to be that it is different, and inherently easier, than developing any other type of software. For some reason, people think, “Come on, it’s an app! I’ve got a nephew who wrote one over his spring break and sold a hundred copies. How hard can it be?”Pretty hard, actually. In fact, mobile app development is different in many ways – but not in ways that make them easier to build. Just the platform and form factor alone pose unique constraints. Here are some of the real truths about developing a mobile application.  

Truth #1 – Small device size does not equate to easy development

There is some sense in the industry that the size of the device influences the difficulty of developing software. Because of this, there is a belief that mobile apps do not have to be built by software engineers. To the contrary, the need to “look pretty” seems to drive many companies to hire a web designer to build their mobile applications. That rarely ends well.

A mobile operating system is a remarkably complex piece of software. It manages an array of clever devices (accelerometers, GPS, cameras, radios and so much more) all at once, and does so in a seamless and pleasing fashion.

Your app must be an extension of that pleasant experience, and so must be as robust, reliable, performant and user-focused as the rest of the device. Understanding how that works, and how to work with it, is a solid engineering task. Your nephew may have achieved a small slice of this through persistence and guile, but to create a product that you can comfortably distribute to hundreds or thousands of customers requires engineering rigor.

Truth #2 – A mobile app alone is not enough

The industry is moving in the direction of a “mobile first” mentality, where the mobile application is initially developed and other platforms follow. For many, this is taken as “mobile only,” where there’s no way to do anything useful on a desktop. Often, the only thing the web site associated with that app does is show you where and how to download the app.

In some cases this is fine – there are good reasons for choosing to only use a mobile platform – but often this forces your users to do complex things on a phone that can be done much more easily from a desktop browser. Some tasks are just easier with a real keyboard.

Think it through carefully. If you can’t thoroughly convince yourself that a mobile app alone is good enough, then your initial plans should include a web application. Usability and user experience should always be a priority when developing any application, including mobile apps, and if usability suggests that desktop access to your product or service is a good thing, then do it..

It may help to look at things a little differently: you’re most likely not developing a mobile app, you’re developing a cloud app with a mobile interface. With the exception of very simple or tightly-contained apps – games, utilities, things like that – chances are that your app does a significant part of its work in the cloud. If you’re a mobile-first business then, by all means, the primary port of entry into your cloud app is the mobile device.

But that doesn’t prevent you from offering an alternative port of entry through a desktop browser. As long as you don’t force your users to switch to the desktop for some functions, it’s very nice of you to offer that as a choice.

Truth #3 – One platform is probably not enough

There’s a broad array of mobile devices in the marketplace, and you have to decide what subset of those devices you are willing to support. That is a significant decision that has a big impact on the time and cost of your development effort. The sheer volume of mobile devices that need to be supported is reason enough to require a software development team rather than just a developer or two.

For example, in the Android world there are many different flavors of the operating system, and each vendor’s device (Samsung Asus, Motorola, and many more) can behave a little differently. And keeping up with different Android versions is complex. Updating operating system software to the latest version is somewhat of a free for all, dependent upon each device manufacture getting “their” version updated and out.

This makes developing a mobile application on the Android platform very complex. Just defining which brands, devices, and versions of software to support is a substantial effort. It takes an enormous amount of coding, testing, and tweaking to be a good citizen in the Android market. And you have to buy a ton of devices.

Apple, on the other hand, being a more captive market, has a relatively few number of platform variations (basically screen size is the only differentiator), and very high success rate of users upgrading to the latest version of iOS. This makes developing an app for the iOS platform less complicated than the others. But is supporting only the iOS platform enough? Again, think carefully about your initial decisions to avoid future complications. Life will get even more complicated if you later discover the need to add support for another platform.

Also, be aware of different mobile form factors. Think through whether your app will be for a phone only, or if it will also run on a tablet. If both, will it look as good and be as efficient on a tablet as a phone? Or will you take the time and do the work to design and build different versions for phone and tablet? (Yes, you should do that.)

All of this takes a lot of thought up front. You don’t necessarily need to build it all at the outset. There’s nothing wrong with releasing the phone version first, and supporting tablets later. But if you don’t know ahead of time that you will be doing that, you might find yourself thoroughly painted into a corner when the time comes to do it.

The simple truth

All of these things boil down to the need for careful planning and execution. The task of developing a mobile application is no less serious, no less important, and in no way any easier than writing a mission-critical piece of software on any other platform.