Web Developers, Don’t Be Lazy And Learn A Native Mobile Language

December 30, 2012

don't be lazy but learn a native mobile languageOK, I had this post written already a couple of times, evaluating HTML5 tech versus native technology for mobile apps. Dealing with clients developing mobile apps puts me regularly in the position that I have to help out choosing between the two. A very concise but long post, written as a consultant so that any company that was facing this decision could figure out what is best for them. But in the end it boils down to this:


Native technology allows for excellent apps, whereas HTML5 apps will be at best just OK

Just look at the top 25’s of any category in the Apple iTunes store or the Google Play store. Most if not all apps are built using native technology. Yes, you can build crappy apps with a native mobile language also, that is not hard thing to do. Excellent HTML developers can get pretty close to native with their hybrid apps, look at the LinkedIn iOS app. But still, you can see the interface is not as fast and snappy as for instance Path or the new Facebook iOS app. Fact is, users now know you can build excellent apps for mobile so will expect this from any app.

Cross platform is a means, not a goal

As software developers, our goal is to create the best apps that reach as many people as possible, with the least amount of development effort. By definition, there is a tradeoff: by choosing HTML5 that has the promise of cross platform development you will limit yourself profoundly. No smooth animations. Difficult if any access to system level API’s and hardware. No extensive control over threads, and I can go on. Sometimes I talk to developers and I get the feeling that for them cross platform is a goal by itself, to the point that it becomes a cross platform fetishism. Cross platform is a means, not a goal. No user cares about what technology is used, it is about the end result.

Write once deploy everywhere is a myth for mobile

Mobile browsers differ quite a bit. The standard browsers that shipped with pre 3.0 (Honeycomb) Android are notoriously slow and bad. So trying to serve all browsers with the same HTML technology will be hard, and even frameworks like Sencha and jQueryMobile will not help a 100 % with that. Furthermore, iOS, Android and also Blackberry and Windows Phone have different user interface standards. Users on each particular platform will notice if you serve exactly the same app for all. So even using HTML5, you will build multiple versions for different platforms and platform versions.

It is effectively a duopoly for iOS and Android

Android and iOS dominate the mobile ecosystem, taking as much as 80 % of mobile usage . You can forget for now about Blackberry or Windows Phone, so instead of one mobile web app you have to create only 2 native apps. OK 4 maybe, customizing both for phone and tablet devices, but you would have to do the same for your mobile web app.

Native is not that hard

Yes both Objective-C (iOS) and Java (Android) are strongly typed messages object-oriented languages and that might seem scary at first for web developers. In the days of the iPhone 3 I spent a couple of months cursing at Objective-C, it strange syntax and the fact that the few books about iOS development were mediocre because of Apple’s insane NDA but I managed. Nowadays iOS and Android have matured a lot, meaning that the tools are great, libraries are excellent and there is a lot of knowledge and learning material out there. iOS has ARC now so you don’t have to worry about memory management anymore.

Web developers, don’t be lazy, and pick up
a native mobile language

Mobile Internet usage is growing like crazy, and already more smartphones are sold than computers. Mobile is where the future is. A lot of effort is put into HTML for mobile, but it will be years for it is up to par with native. Yes it is easier to use technologies that you are familiar with, but not always will you get the best results. So you as a web developer shouldn’t be lazy: get a web developer buddy, pick a straw each and start learning either iOS or Android development. Your users will be much happier with your apps, which will mean more money in the bank for you.

Dirk de Kok


12 responses to Web Developers, Don’t Be Lazy And Learn A Native Mobile Language

  1. No user cares about what technology is used

    … unless their device doesn’t support it!

    Cross-platform can be a huge advantage over slick animations. I’d rather tweak browser quirks than write entirely separate apps.

    The whole HTML5/native debate is silly, really. Your requirements should dictate that decision! Clearly, native has advantages, but does your app have those as requirements and is it worth many times the dev cost to reach a narrower market?

    I’m not being lazy (I’ve written native apps for many platforms), I’m being practical. Or maybe that’s the same thing.

    • being lazy means also you think first before you do too much work, in that sense all developers will be a bit lazy which is good. I think concerning mobile you should bite the bullet and know multiple techniques, so you make that choice not just because you can support it.

      Device discussion is known, yes there are others out there besides iOS and Android, but early adopters will be on either platform. When you get a lot of complaints that you platform is not supported, you are probably very successful on iOS and Android and then I would call that a luxury problem:)

  2. The good news is you don’t have to develop two apps and still develop for the native UI http://www.appcelerator.com/platform/titanium-sdk

  3. Developing for html5 on mobile is a huge PITA. Learning native will save you a lot of gray hair because nothing beats developing for mobile using an api that was actually designed for developing for mobile. The last 10% of your development will be hell trying to work around the quirks of all the different devices, and trying to make your app performant.

  4. Keeping it short since I am on my mobile. What about Adobe AIR? I have built apps using this platform and the end-user doesn’t know the difference. Just throwing it out there…

  5. There’s PhoneGap (http://phonegap.com/) for all truly needed native features (sensors, etc.) and to wrap and deploy it as a ‘native’ app.
    And the rest can be accomplished with good HTML5, as this good example shows (version of Facebook app with HTML5): https://vimeo.com/55486684

    (excluding graphics/cpu-intensive games)

    • I’m sorry but the Sencha version of Facebook is pretty good, but not if you run it inside a hybrid app. Just try it (open it from a tweet), and then it becomes pretty slow. First HTML app that managed to impress me, not forgetting that it is just a demo.

      PhoneGap is just a wrapper around a web view, helps you a bit with native access but not with the meat and bones of your app. Still just a web app.

  6. Be lazy and use sencha touch with phonegap plugins. Hybrid apps are the way to go and are getting a lot better fast. Especially with faster phones coming out, like the iPhone 5. For a startup where I am the only developer it’s a must.

  7. Ted van der Veen December 31, 2012 at 1:36 am

    Good developers ARE lazy!
    Plus, when it comes to the majority of mobile apps out there, that are centered around interacting with not too complex data, can be built using HTML5, CSS3 and Javascript just fine. Add a bit of PhoneGap goodness and voila. This is JUST FINE for at least 80% of mobile apps! Only apps that depend on maximum performance / smooth rendering (games and such) and maximum API control make valid candidates for native development.
    This post sounds a bit like it’s written by someone scared to see the shift to HTML5 / CSS3 / Javascript and tools like PhoneGap….
    Just my 5 cents…

  8. The reasons for choosing cross-platform development are not about being lazy or about native development being hard. For a good developer, nothing is hard. And as some have already said: developers *should* be lazy.

    Instead: It’s all about costs. It is crazily expensive building and *maintaining* different native apps for the different mobile OSes.

    * Building a native app for iOS is fine. Expensive but worth it because iOS is a good platform to sell apps on.
    * Building and maintaining a native app for Android is more expensive than for iOS (because of the large number of different devices), but brings you less sales than iOS. So going native for Android is questionable in terms of efficiency.
    * Native for Windows Phone or Blackberry? No f@#$%%ing way. For a small developer there is no way that is ever going to pay off.

    For many types of apps it is perfectly possible to create great apps with HTML5 and CSS. Not every app needs access to device specific APIs or animations.

    For our apps, I am fed up with native development. We’ll keep developing our native iOS apps, but for Android, WP8 and Blackberry we’ll go for a shared HTML5 code base.

    BTW: IMO, what happens in the top 25% of top selling apps is irrelevant. Those are EXCEPTIONS, lucky shots, not the norm. Many many many developers are making good money while not ever reaching even the top 100 in their category.

  9. Then can you please suggest resources for these lazy web developers to learn native apps languages because compared to resources for web development, they are basically non-existant.

  10. Apple has done just about as much as any company to move HTML5 forward with their WebKit involvement.