Source: http://thediscoblog.com/blog/2012/12/02/comprehending-the-mobile-development-landscape/
There’s
no shortage of
mobile growth statistics, but here’s a few specific ones paint an overall picture of mobility:
These three facts clearly point out that mobility is a growing,
global phenomenon, and that it’s drastically changing how people use the
Internet. What’s more, from a technology standpoint, mobile is where
the growth is!
But the mobile landscape is as varied as it is big. Unlike a few
short years ago, when doing mobile work implied J2ME on a Blackberry,
mobile development now encompasses
Android,
iOS,
HTML5, and even
Windows Phone. That’s 4 distinct platforms with different development platforms and languages – and I haven’t even mentioned the
myriad hybrid options available!
The key to understanding the mobile landscape is an appreciation for
the various developmental platforms – their strengths & weaknesses,
speed of development, distribution, and, if you are looking at the
consumer market, their payout.
Android
Android device distribution, as I pointed out earlier, is growing
faster than other platforms, and the Android ecosystem has more than one
app store:
Google Play and
Amazon’s store, just to name the two most popular ones. And by most accounts,
Google Play has as many or
more apps than Apple’s App Store (careful with this statistic though, see details below regarding
payouts).
The massive adoption of Android, however, has lead to
fragmentation,
which does present some significant challenges with respect to testing.
In fact, the reality for most developers is that it is almost
impossible to test an app on all combinations of device-OS version
profiles in a cost effective manner (this is a growing service industry,
by the way).
On a positive note, Java, the native language of Android apps, is a fairly ubiquitous language – some estimates
peg as many as 10 million active developers so there’s no shortage of able-bodied Java developers and their associated tools out there.
Thus, with Android, you have a wide audience (both people with
Android devices and developers to build apps) and multiple distribution
channels. Yet, this large distribution of disparate devices does present
some testing challenges; what’s more, it can be more difficult to make
money on the Android platform compared to iOS, as you’ll see next.
iOS
iOS, the OS for iPhones and iPads, has a
tight ecosystem and an avid user base,
willing to spend money, ultimately translating into
more money for developers.
That is, even though there are far more Android devices globally than
iOS ones, the iTunes App Store generates more money than Google Play,
which means more money for developers of popular apps. In many respects,
users of iOS devices are also more willing to pay a fee for an app as
opposed to Android ones.
The development ecosystem for iOS has a higher barrier to entry when
compared to something like Java or JavaScript. OSX is a requirement and
the
cost alone
here can be a barrier for a lot of developers; moreover, Objective-C
can present some challenges for the faint of heart (manual memory
management!). Yet, the tooling provided by Apple is almost universally
lauded by the community at large (much like Microsoft’s VisualStudio) –
XCode is a slick development tool.
While there isn’t a lot of device
fragmentation on iOS,
developers do have to deal with OS fragmentation. That is, there are
only a handful of Apple devices but quite a lot of different versions
living in the field at any given time due to a lagging factor of user
upgrades.
The iOS platform certainly offers a direct path to revenue, provided
you can build a stellar app; however, compared to Android, this is a
closed community, which has the tendency to rub some portion of
developmental community wrong. Given you can quickly embrace Objective-C
and afford the requisite software, iOS is almost always the first
platform app developers target.
HTML5
HTML5 is truly universal and its apps are available on all platforms
without any need to port them – JavaScript is as ubiquitous as Java;
what’s more, HTML itself has almost no barrier to entry, making HTML5
and JavaScript a force to content with when it comes to finding talented
developers and mass distribution. Cost isn’t even really part of the
HTML5 equation too – tools and frameworks are free.
Yet, HTML5 apps suffer from a
distribution challenge
– the major app stores do not carry these apps! Thus, in large part, as
an HTML5 app developer, you are relying on a user to type in your URL
into a browser. I for one, almost never type in a URL on my iPhone
(while I will on my iPad). Lastly,
HTML5 is no where near parity with respect to UX compared to native apps (and may
never be).
This, however, is only a disadvantage if you are building an app that
requires a strong UX. There are plenty of great HTML5 apps out there!
HTML5 offers an extremely low developmental barrier to entry and the
widest support available – all smart devices have browsers (note,
they aren’t all created equal!); however, because there isn’t a viable distribution channel, these apps have limited opportunity to make money.
Windows Phone
Windows is
still unproven
but could be an opportunity to get in early – first movers in Apple’s
App Store without a doubt made far more money than if they had submitted
the same apps today. In this case, you if want a truly native
experience you’ll build apps on the .NET platform (presumably C#).
Windows machines are far cheaper than OSX ones, so there is little
financial barrier other than license fees for VisualStudio and a
developer fee for the Windows Phone Marketplace.
Indeed, it appears that Microsoft is
modeling their app store and corresponding policies off of Apple’s – thus there is a
tightly managed distribution channel,
presenting an opportunity to reach a wide audience and earn their
money. But, at this point, the wide audience has yet to develop.
That’s 4, but there’s still more!
As I alluded to in the beginning of this post, there are 4
primary platforms and myriad hybrid options, such as
PhoneGap and
Appcelerator,
for example. These hybrid options have various advantages and
disadvantages; however, the primary concerns one needs to think through
are still speed of development, distribution, and payout.
Before you embark on a mobile development effort, it pays to have the
end in mind – that is, before you code, have tangible answers for app
distribution, development effort, and potential payout as these points
will help guide you through the mobile landscape.