The breakout launch of the Apple iPhone heralded a new era of popular mobile computing. With the launch of Android, mobile phones came to be dominated by software platforms, and the pervasion of networked smart phones and tablets in our society is now almost complete. Apple, Google and Microsoft vie for our imaginations with diminishing innovation to differentiate them, so that the choice of mobile platform is now as electable as one’s politics or football team.
So how do you choose the right platform for your business when much of the complexity is hidden from view? For those embarking on a mobile development, I’ll explore the immediate question of which (if not all) to target, and what might be the most effective way to do so.
Mobility aside, competing software is nothing new. From desktop operating systems to databases, the question of which software to adopt or support is open and ongoing for software buyers and sellers. With the high cost of technology, it is desirable to have software that can be interchanged, as the commercial environment changes over time. We feel this when switching to the latest iPhone or Galaxy, and expecting our applications to just work, and work as seamlessly as the device allows.
But portability comes at a cost, since each platform supports a unique development ecosystem. Developing a portable application at its simplest means duplicating the same functionality in distinct codebases for each platform. Third-party mobile application development platforms aim to reduce the effort of maintaining distinct codebases for each platform, by introducing a common abstraction or container, over or into which a single application can be placed.
Each approach introduces an incremental trade-off in user experience and performance, since abstractions add complexity, feature lag and often additional software licensing costs. The following table outlines the key benefits and costs of alternative mobile development options, which should be considered according to:
- the immediacy and fluency of user experience required,
- the number of platforms required for deployment, and
- the amount of development budget available.
On abstraction and complexity
Software problems are often essentially complex, and though abstraction can be useful for simplifying code to more easily solve those problems, that essential complexity remains. Each mobile development approach will have merits and drawbacks, depending on the context and the problem your software aims to solve.