Hm. Opinionated a little?
A couple of times, folks ask me: do you know X? And I say, why, no I don’t. I do know the language that X avoids. X is: Objective-C, Java, etc. the list goes on. Tonight at a study group, a friend who had just learned Objective-C agreed with me (I had told her- “… just learn it, it’s not that hard”) that “It’s not that hard.” See??!! OK maybe an anecdote isn’t enough to prove my point.
So you want an iPhone/Android app. You’re worried that:
– You will invest a lot of code into one operating system
– You will alienate the other users- iPhone or Android (OK, face it, usually Android)
– The native language is hard
None of those are good reasons. Why?
1: Think investing in Android/iOS is faulty? Think of investing a lot of time and effort in a framework that, while fancy and fun today, will go out of favor in (count them) 4 months approximately. Rarely do these last that long, for various architectural reasons. It’s a total b***ch keeping up with two different platforms (iOS/Android) that are constantly evolving- think of this from the framework’s perspective. At least Google & Apple have a lot of developers building out their SDKs. Most hybrid/cross-platform frameworks have a few open source fans, or a crew of 5-20 developers in a start-up/funded environment with various levels of skill.
2. Different businesses and apps have different target markets. Figure out what devices your users have, how they use them, whether they use native drivers (camera, voice, etc.), and build a simple, native or web app for them. And then roll out a comparable one (or even diminished in features) for the smaller represented set. Or, build in the most popular native operating system for your target demographic, and create a web version to encompass the others. Or, what I like to do, wait for people to complain. If enough do, there’s your market, develop for that.
3. Native languages are not hard. They are quirky (iOS) or very evolved (Java) but they are not hard. Learning JavaScript and then adapting it to the iPhone (PhoneGap) is hard. Learning Ruby and Rails and then rejiggering it to run as an Xcode app is hard – with little or no documentation (RubyMotion). And, well, there are a literally vasts amount of people developing native and they’re writing about it, and helping you, and available for hire.
My most conservative, time-saving, and risk-adverse advice is to build out testing. And rarely do new frameworks that straddle both native systems have good testing frameworks. That’s a pretty strong reason in itself.