Matthew Setter is a professional technical writer and passionate web application developer. He’s also the founder of Malt Blue, the community for PHP web application development professionals and PHP Cloud Development Casts — learn Cloud Development through the lens of PHP. You can connect with him on Twitter, Facebook, LinkedIn or Google+ anytime.
Mobile development — it’s an amazing area to be involved in right now. For years, the desktop was the only exciting development arena in town. While there were attempts to move away from it (think Windows CE), they never really took off.
Then along came Palm and BlackBerry, which started to change things. They were soon followed by the iPhone — which revolutionized everything and delivered the promise of the smartphone and mobile development potential.
But like most everything in human society, life is never stagnant or stale. So a short time after the iPhone started to take hold and mobile apps became part of the mainstream consciousness, Android came along and showed that Apple didn’t own the platform. (Despite how much their devoted followers have attested otherwise.) Then even more recently, Windows Phone has come along, seeking to shake things up again (although how much effect its having is still unclear).
We’ve moved from feature phones to ‘smart’ phones and tablet computing. And we have devices of all shapes, sizes and brands. They range from the ultra-low cost beginner to the high-end ‘must have’ gadget for those in the know. There’s an app for just about everything, from taking voice notes in Evernote to making mobile payments with Square.
All this capability brings with it a couple of challenges. So before you set off down the yellow brick road laced with good intentions, let me tell you about three of the top challenges facing mobile development you should look out for.
1. Vendor / Platform Fragmentation
First, there’s vendor fragmentation. As covered briefly before, there are two or three main mobile platforms: iOS (Apple), Android (Google and partners) and Windows Phone (Microsoft). Not so long ago, Blackberry would have been on top of this list. But in recent times, the company continues to have a cloud of doubt hanging over it.
So here’s the first issue you’ll face. Let’s assume, for the purpose of this article, that you’re not a multi-million dollar company. Most likely, you’re a freelancer or small development environment. Each platform requires you (or your development team) to build up the skills they need to be able to develop and deploy for it proficiently. And each has its own way of doing things (Adroid – Java, Windows – .NET, iOS – Objective-C) and its idiosyncrasies.
On top of that, if you’re going to be supporting more than one aspect of the platform (think of the iPad and iPhone for iOS), you need to understand each of these both in capability and design considerations equally well to properly deploy to them. Multiply that by two or three platforms and you begin to see that the requirements get pretty involved, quite quickly.
Look at it from a different perspective. Say that you’re a digital agency or company looking to either outsource development of an application or to build an internal team to take advantage of the rampant growth and demand for mobile everything. Where do you go to get professional developers with the range of skills required to manage an application across multiple platforms and then keep them up to date as the landscape continually changes. While some companies do it really well (Evernote and Wunderlist for example), it’s definitely a challenge and one not to be taken lightly.
Leigh Williamson, an IBM distinguished engineer, raises another point you should consider. While you may believe that a particular platform is the one to focus on, you may not have a choice. Your customers may be using two or more platforms equally. If that’s the case, you have a rather compelling reason to provide your application across the devices that they prefer, not the ones you do.
So despite all the positivity around mobile development, you need to know that vendor fragmentation is not going to make your life easy — not impossible, just not easy.
2. Device Fragmentation
This next challenge is a natural consequence of the one described above. Take a look at the tables below to get an idea how serious an issue device fragmentation really is.
|Samsung||Galaxy S II||4.52″||1024×600|
|Samsung||Galaxy S III||4.8″||1024×768|
|Samsung||Galaxy Beam||4″||480×800 (WVGA)|
|HTC||One X+||4.7″||HD 720p|
|LG||C550 Optimus Chat||-||320*480|
|LG||Optimus 3D P920||4.3″||WVGA|
|Motorola||Razr Maxx||4.3″||540×960 Super AMOLED|
|HTC||Windows Phone 8S||4″||WVGA|
|HTC||Windows Phone 8X||4.3″||HD 720p|
|Dell||Venue Pro||4.1″||WVGA AMOLED|
|Samsung||ATIV S||4.8″||HD Super AMOLED|
|LG||Optimus 7 E900||3.8″||800*480|
If you are at all familiar with the available Android and Windows options, you’ll know that this list isn’t complete. There are far, far more options available then what I’ve listed her. Take a look at the full list on Wikipedia, or if you want a simpler comparison, see this infographic from LifeHacker.
Someone once coined the quote: “The agony of choice.” In this case, at least for the developer, it clearly exists. If you’re a consumer, it’s never been a better time to get a phone that suits you perfectly.
As a developer or development company, how do you profitably develop for a platform with the diversity of configurations and capabilities the various vendors offer? How do you ensure that your next world killing app will render as anticipated with such a wide variety of resolutions and hardware capabilities — without sending yourself out of business?
3. Development Approach
If you thought mobile development was interesting enough with the first two challenges, this third one stirs things up even further. Today, there are three common ways that developers are building applications for mobile devices:
Depending on where you sit on this one, you likely have strong view one way or another. Some people, Facebook CEO Mark Zuckerberg specifically, believe that HTML5 isn’t yet the right way to go when developing mobile apps. He was recently quoted in the Register as saying Facebook’s biggest mistake was betting too much on HTML5 as opposed to native app development. However, others argued that it was not so much as HTML5 issues as an implementation issue on their part.
Alternatively, Pixel Lab is very excited about the prospects and possibilities inherent in HTML5 as they point out in this video, which discusses the process of porting the iOS gam, Cut the Rope, to HTML5 specifically focused around Internet Explorer 8 * 9. They say that while it’s a very different environment, with very different considerations, HTML5 is an exciting platform to work with full of rich potential.
Then of course, there’s the hybrid approach. Applications can be developed across multiple platforms more easily and quickly than going down the native path, and with more speed and access to more hardware than with the HTML5 approach.
So by taking the middle path approach, which Facebook did for some time or others, such as Lotte Card, Bank of America or Yelp, companies are able to much more rapidly and cost effectively target multiple platforms building the application, largely once.
But It’s Not All Bad News
I realize that the tone so far has not been a harbinger of much joy and happiness. But seriously, it’s really not all that bad. There are a number of companies providing platforms that are specifically designed to make the process much easier than going it alone. Irrespective of which approach your taking (or planning to take), the list below provides a good start on the range of options available to make you life simpler.
While they don’t support all the features available on all phones, they do support a number of the key ones including:
One of the great things about the PhoneGap approach is that it seeks to alleviate the need to have developers with skills across the wide range of platforms available today.
Then there’s Sencha Touch. Similar in nature to PhoneGap, Sencha Touch lets developers produce smartphone apps through their flagship Sencha Touch 2. It’s promoted as a “high-performance HTML5 mobile application framework”. Counting customers such as DirecTV, Intuit, Vimeo and Xero, developers are able to build apps that incorporate:
* Scrolling and animations
* Adaptive layouts
* Touch events
* And more
Although it doesn’t support as many mobile operating systems as PhoneGap, Sencha Touch supports the key players of iOS and Android. They also make deploying to Android easier by providing a support matrix for a number of Android devices that can be successfully deployed to.
But what if you or your development team already has an extensive amount of experience with jQuery? If that’s the case, you should extend that knowledge with jQuery Mobile. jQuery Mobile allows developer with existing web development experience to easily and quickly get started developing mobile applications. It supports the following platforms:
* Windows Phone
You can see the full range of devices they support on their website. jQuery Mobile is also sponsored by a number of big tech names including Mozilla, Nokia, Adobe and BlackBerry.
You can use it to create applications that take on a lot of the look and fee of native ones — such as buttons, form elements, sliders, headings, maps, and images. To see what I mean, take a look at this simple application mockup that I created in five minutes with their drag and drop builder.
Thanks to jQuery’s long history, there’s extensive documentation, a wide variety of third party plugins and extensions, and the ability to integrate it with other tools such as PhoneGap, Codiqa and RhoMobile. So now you can either create HTML5 applications or combine it with other tools to package up a hybrid applications.
But maybe you want to develop native applications as well as hybrid or HTML5. If that’s the case, take a look at the Open Source MoSync SDK. It allows you to use C/C++ or HTML5 to develop apps for up to nine platforms including:
* Windows Phone and Windows Mobile
Their SDK and cross-platform IDE (based on Eclipse) allows developers to use a single API across the range of platforms that they support. What’s more, applications can be packed in the native format of the platform your taregeting.
So these are the three key challenges for the year ahead facing mobile development. But it’s not all doom and gloom. There are a number of platforms, vendors and tools available to alleviate these issues and make development of mobile applications a productive and profitable process irrespective of the platform(s) you choose.
But remember, due diligence and research on the various platforms before you commit so that you know you’re choosing the right one for your current and future needs. Wish you all the best in your mobile development success.