Last week I was hosting a early morning talk about how to succeed with mobile development projects. The target audience was product managers and service providers that need or want to take their business mobile. Through apps or a smartphone optimized website.
I’ve had a lot of really good feedback to that session and one of the key points, and most valuable advice from my talk was that it is becoming more and more important for the “soon-to-be” app owners to create apps for more than one platform. Why? Let’s look at some numbers.
In Norway about 95% of the population has a mobile phone. It is split roughly 50/50 between simple/feature phone users and smartphone users. Of those that has a smartphone, based on numbers from StatCounter – there’s roughly 58% that uses iPhones and 23% that uses Android phones. Through the last twelve months Android has gained a 19% market share in Norway on smart phones. About 9% uses a Symbian OS based smartphone. That is the “big” three. There’s also speculations on how Microsoft and Windows Phone will do, Some analysts believe that Windows Phone will be bigger than iOS world wide by 2015. I wouldn’t mind that, I think WP is a kick-ass OS and with Nokia spewing out devices from 2012 and on it’s bound to take a lot of market share i think.
From now on and forever I’ll take SymbianOS out of the smartphone equation. With a loss of about 10% market share the last twelve months, and being given the cold shoulder from Nokia, it won’t survive the smartphone race. It will however live in some way on feature phones.
That’s the device numbers. At the time being it is Android and iOS that “owns” the smartphone/tablet market in Norway, and that’s why it is logical to take our apps onto both platforms.
Back to the advice. You have your product and you have your plan to create both iPhone and Android apps. You define your application idea into requirements and specifications, and send it out to a few companies that you know, or find that do app development.
After a while you get a quote back on development cost and a proposed solution. You’ll most likely first see a price for the iPhone app, then a somewhat lower price for the Android app. The Android App development will be priced around 2/3 of the iPhone app. The lower price for Android apps is explained by that you can reuse front-end design elements and some usability principles but the rest must be written for each platform.
Let’s say that the quote for the iPhone app is about $100 000 USD for this example. If you got a $100 000 USD iPhone project, then the Android version will most likely be priced at around $70k – $75k USD. If you wanted to add Windows Phone support for all those new Nokia devices coming out, you add another $70k – $75k USD. Totalling to about $250 000 USD for three platforms. That’s quite a lot of money. You’ll continue to pay $70k – $75k for each platform you want your app to run on for an eternity as long as you don’t know better.
How can you avoid this? Ask them when you get your quote if their estimates are based on developing three separate applications or if they plan to use a multi platform framework for development. Make sure the developers you receive quotes from have told you why you cannot use a multi platform development framework!
Using a multi platform development framework can save you, maybe as much as 50% for each additional platform. so, instead of paying $70k – $75k you pay around $35k per additional platform.
There are two main reasons for not being told about multi platform development frameworks. First, creating three separate applications brings in a lot more money for the developing company than creating one single reusable application or codebase. The other reason why you weren’t told is plainly and simply something called “platform religion” amongst developers. Developers like their platform. In m0bile development with iOS and Android the “who’s coolest and best” is even more dividing. These two reasons are often disguised as “lack of performance” or “not having enough features”.
If your app is a game that rely on heavy 3D performance or need heavy hardware acceleration, or if you are developing an app based on features from pre-release of mobile OS’s you might just have to develop it using their native languages. But we’re not talking about these special cases here, we’re talking about the rest of the apps, the 95% “normal” apps you find in app stores and is most likely to be developed. There’s no measurable performance to be lost.
When it comes to features you have to look at your application and what it needs. Make sure you choose one that meet your needs. There will always be a cost with multi platform frameworks and that is that “bleeding edge” innovative new features on a phone maybe won’t be available through the selected framework from day one, but do you really need that? Is it worth the extra $100k that some feature might become available sometime that you find a use for? As said before, along with the total price, you also end up with three separate application code-bases, with their own separate list of bugs and maintainability issues. This can easily become three separate Gordian knots if you’re not keeping an eye on how the code is actually developed.
The Gordian knot can be avoided easily by employing developers that show good craftsmanship. Software development is craftsmanship, just as building houses and there are good ones that know how to create the foundation and a house with straight corners, and others that build everything on clay.
My subjective advice when it comes to technological platforms follows in the trail on how I review any project, based on it’s needs.
First of all should it be an app or mobile optimized website? If it needs to be an app I review the requirements and specifications for that app. Both from an technical and marketing point of view. My first question would be if this can be developed with the use of PhoneGap?
If you can’t use PhoneGap my next choice of platform would be to have a look at mono, the open source cross platform implementation of C# (.NET) and the CLR, and it’s extensions MonoTouch and MonoDroid. The benefit of mono (meaning MonoTouch/MonoDroid) is that all code can be written in C# instead Java for Android and Objective-C for iOS. One language for both platforms. That mean that you can share libraries between them. A good developer and craftsman would easily be able to create software code and architecture that was reusable. You would then only need to recreate the user interface and the concrete implementation of the physical hardware on the two platforms. The beauty of mono is that the app (if you choose to) will look completely native as if written and designed specifically for iOS or Android. A third benefit of using mono and C# is that the same code can also be reused on Windows Phone devices (it will be big). 3 platforms – A single reusable codebase that will save you maybe as much as 50% off from the earlier price example in development cost and code maintenance.
If i were unable to use either PhoneGap or mono I would of course use native Objective-C or Android Java.
Jonas Follesø, Silverlight MVP and programming enthusiast has written a very good article that he calls “WP7, iOS & Android: Is .NET the platform to rule them all?”
Answer is Yes!