Web apps vs. native apps for mobile — this appears to be what everybody is talking about these days.
I think native apps currently provide the best user experience, don’t you? As a user, given the choice between a web app and native app, which one would you pick? Unless you signed your life away to the web browser, it’s likely going to be the native one.
Still, reasons to develop for the web are there: portability, simpler deployment, perhaps simpler development — all developer reasons.
But ehm, who are we developing sofware for? Ourselves or our users?
Following that logic — aren’t web apps a statement saying to users: we favor ourselves over you?
On the desktop this is not really the case. Over the past decade, web apps have not become popular because of developers; they are convenient for users too: no need to install anything, access from any computer, no (manual) software updates, usually free, data “safely” stored in “the cloud” and easily shared with others. The fact that the user experience is a bit limited is a small price to pay.
On mobile, the story is a little bit different. Every smartphone comes with an application store of some kind from which you can easily install and update applications. Since a phone is a personal device, rarely shared with multiple people, it’s less common that you want to use somebody else’s phone to access your applications — which makes the “login from any computer” pitch less relevant. And mobile apps almost all store their data “in the cloud”. What is left of the web app advantages are developer specific: portability, easy development and deployment.
So, I ask again: is a mobile developer using web technologies choosing himself over the user?
As usual, it’s not that simple.
Let’s say I run a one-person company and I want to build a mobile app. I have three months to go to market. Effectively, I have roughly three options:
1. Pick one mobile platform, say iPhone, and develop only for it. **Advantage:** I can focus on a single application and provide the best possible user experience to my users. **Disadvantage:** my users are going to be only iPhone users — Android, BlackBerry and Windows Phone users will be left in the cold.
2. Instead of one, I pick multiple platforms, say four, and develop separate apps for all of them. **Advantage:** I reach a much larger audience with great, custom tailored mobile apps. **Disadvantage:** the mobile apps will only have about one fourth of the functionality I had planned, because I had to develop every feature four times as code reuse is barely possible.
3. I develop my mobile application using web technologies. **Advantage:** I have to implement my app once and it runs on multiple platforms. In addition, my application has all the features I intended to build, because I only had to build them once. **Disadvantage:** The user experience is worse. The application doesn’t blend in or integrate with the OS.
So, what have we learned?
1. Reasonable time to market
2. Flawless user experience
3. Big reach
Pick any two — a company with limited resources cannot have all three.