views:

591

answers:

10

I would like to rewrite two of our programs for mobile devices, but am a bit lost as to which platform to target.

Complicating this decision:

  • I would need to learn the relevant languages and IDEs - my coding to date has been almost all web based (PHP, JS, Actionscript, etc. Some ASPX).
  • Most users seem to be religious about their mobile decision, so oral conversations leave me more confused then enlightened.
  • I do not yet own a smartphone - will have to buy one once I know which platform to be aiming for.
  • Both of my programs are more for business users, (one is only useful for C.P.A.s).
  • I am a single developer, and cannot develop for more than one platform at a time. Getting it right is important.

Based on what I've found on the web, I would've expected RIM to be a shoo-in, and the general order to be as follows:

  1. RIM Blackberry - More of them than any other brand. Despite naysayers, they've had double the sales (or perhaps 5X the sales) of any other smartphone, and have continued to grow. And, they have business users.
  2. Android - According to Schmidt, they have outsold everyone else except RIM (though I can't find where I read that now), and they are just getting started. According to Comscore, they are already at 8% of the market and expected to hit Shcmidt's claims within six months.
  3. Nokia - The largest worldwide. If they would just make up between Maemo or Symbian, I would be far less confused.
  4. iPhone - Much more competition by other apps, fewer sales to be had, and a overlord that can delay or cancel my app at any time. Is Cocoa hard to learn?
  5. Windows Mobile - Word is that version 7 will not be backwards compatible and losing market share.
  6. Palm WebOS - Perhaps this should go first, as it is the only one that offers tools to make my life easy as a web application developer. No competition in marketplace. But not very many users either.

However, a search on StackOverflow shows a hugely disproportionate number of iPhone questions versus Blackberry. Likewise, there are clearly more apps on iPhone, so it must be getting developer love.

What is the one platform I should develop for? Please back up your answer with the logic.

+4  A: 

I would advice to try Android, because:
- it's more simple
- less restrictions like Blackberry api signing or BlackBerry Alliance
- there is more samples/articles/OS questions
- android market vs BB world app
- it will be easy to switch on BlackBerry or pure J2ME in the future (just in case you would like to port your app to other platforms, Android uses extended java, BlackBerry uses java microedition, both use Eclipse + plugin as IDE)
- devices are less expensive in general wrong by itself and as an argument

Max Gontar
I assume you are only comparing Android to BB here, correct? I realize that relative simplicity can be subjective but do appreciate the evaluation - that's exactly the kind of thing it can take me till too late to learn. Why is the cost of devices a point - as long as people buy them? What do you mean that its easy to switch to BB?
SamGoody
that is correct, see update
Max Gontar
+6  A: 

Below is my personal opinion based on my personal experience.

You are forgetting some of the biggest issues in mobile development (the same that make so many people pick the iPhone in the end). This are particularly important if you are a single developer!

1.Fragmentation

For each platform there are many devices with different screen resolutions, hardware capabilities, memory capacity, bugs etc. Unless you are developing something trivial (why not a mobile web app then?) you'll need to acquire and test on at least the most popular handsets. This also adds support costs to your app. You'll need to test and update it for every new device.

2.Distribution

Everybody is building an App Store these days, but iTunes is still the best and most trusted way to pay for digital content. Android is probably the second runner, but not so popular with business users. I would be careful with Nokia if you care about the American market and with Palm if you care for the international.

Windows 7 Mobile seems like a nice platform, but it will be 6 - 12 months before you should even discuss it. Don't even consider the current Windows Mobile iteration.

3.Tools, Language, SDK, hardware

Blackberry, Android and Nokia are Java based and use Eclipse as an IDE. In theory they should work on any OS, but Android has some issues on Windows, while Blackberry requires Windows. For all 3 you'll need really decent hardware to run the emulators and the IDE without thinking of suicide. On-device debugging is from non-existent to not very nice.

iPhone - ObjectiveC/C/C++. You'll need a Mac running osX. Even a Mini will do. To distribute you need to be on the Developer program - 99$. Everything else is free. XCode is quite a nice IDE and the emulator and the on-device debugging are the best on the market. There are many frameworks to build apps using different technologies like web or flash. Can't comment.

Palm - the closest to what you already know, based on web technologies for high level development. For anything more advanced C++ based SDK (I have no experience with that yet).

Windows Mobile - C#/Windows/Visual Studio. May need to pay for some of the dev tools.

4.Bonus point

iPod Touch & iPad have no counterparts. Have you followed the pre-order frenzy in the last 2 days? Yes I know about the Android tablets, check point 1 above.

Hope this helps, but maybe I just confused you more. In the end you should be most concerned about the quality of your software and the value it provides. If it's good it will find its market.

Plamen Dragozov
+6  A: 

Both of my programs are more for business users, (one is only useful for C.P.A.s).

If you have users, ask them what phones they use.

Most users seem to be religious about their mobile decision, so oral conversations leave me more confused then enlightened.

Then don't measure by quality-of-conversation. Measure by raw counts, or raw counts weighted by likely upsell (i.e., long-time users of your apps who have been paying for upgrades and maintenance have a more proven track record of giving you money than would somebody who bought your app yesterday).

Then, once you know what the strongest smartphone platforms are among your users, you can decide how best to tackle one or more of them.

I would need to learn the relevant languages and IDEs - my coding to date has been almost all web based (PHP, JS, Actionscript, etc. Some ASPX).

Then perhaps stick with that. The only reasons you truly need a native app are because you want to run disconnected (and with HTML5, that'll even be covered) or if you want to do things that cannot be accomplished via a mobile Web browser (e.g., integrate with other on-device apps in Android).

Palm WebOS - Perhaps this should go first, as it is the only one that offers tools to make my life easy as a web application developer.

Nonsense. Well, OK, that IDE I saw some screenshots of was pretty slick, if it shipped (I lost track). But it's not like WebOS is the only Web OS.

There are ways to develop local apps for non-WebOS phones that use HTML/CSS/Javascript. PhoneGap is closest to traditional Web apps AFAICT; Appcelerator Titanium Mobile is a little strange but also uses those technologies. Both of those let you target Android and iPhone with one set of source code; PhoneGap also lets you ship to Blackberry and eventually to Symbian.

Now, particularly for PhoneGap, these will have the feel of mobile Web sites more than they will native apps. That may or may not be a big deal for your users. If nothing else, it would let you get you feet wet in mobile and gauge relative interest, then determine if you need to climb the learning curve on Java or Objective-C.

BTW, Maemo is being replaced by Meego, to further your Nokia confusion. :-)

CommonsWare
+1 for PhoneGap
Nir Levy
+1  A: 

What APIs do you need? What is your business model?

9/10 I would simply write a Web application. It's cross platform.

hendry
A: 

If you have webdev background, Nokia could be fairly easy - You can create widgets (*.wgz) which run using the browser, but have access to phone apis.

Josh
A: 

Note that at the moment you really have only three valid options: Iphone, Android and BlackBerry. If you are not targeting US markets then BlackBerry is a non-option as well.

(Nokia has too many platforms and the devices are with bad UX, Plam is dying, Window Mobile will eventually catch-up but not soon)

If you have a business application your users are most likely using BlackBerry or Iphone (Android is still on the rise).

Developing for either is a matter of market share and you should really check with your users what they are using.

Note that if you are a web developer you should consider taking on with you someone that knows how to develop to those platforms (it is NOT trivial) or even consider writing an HTML5 web-app that would work on Android and IPhone.

Nir Levy
+3  A: 

If you're thinking of starting your own development shop, then see my advice in this post to ignore technology and instead look at each platform's business model. Ask yourself if each platform really offers a way for the small developer to make money.

Each platform has tradeoffs in the business model. For example, the restrictive iPhone app store means that Apple might reject your app and it means that Apple can hold you responsible for any intentional or accidental mishandling of transactions through your app. On the other hand, owing to Apple's oversight and proven track record, end user are more likely to buy an unknown app from a small developer just to see if it might work for them. It is unlikely they would do so without some kind of oversight.

It will only take one major security breach to seriously damage a mobile's brand. If Andriod's more open model cannot secure their platform as well as the iPhone, the entire brand could be damaged by a single malicious app. If end users get burned once or twice by other developers, they will be less likely to take a chance on your app.

If you're going to make a living programing, you can't really specialize in a single language/API. You must learn good general programming practices as well as constantly educating yourself in new tools. You should be willing to learn any language and any environment. Of course, people specialize but from the perspective of a having a 30-40 years career, you have to stay flexible. Heck, when I was in college, Cobal (spit) was the big thing and everyone wondered if this new "C" thing was going to take off even though it looked a little dodgy. Now mumble-mumble years later, it seems like I'm learning a new language/API every week.

However, in starting out with your particular skill set and having to bootstrap everything you might be better off using an HTML based API such as PhoneGap. That will let you (1) leverage you existing skill set and (2) give you some flexibility when in choosing platforms.

Once you've made some money and got some experience under your belt, you can then train yourself up in the specific API of one or more of the major platforms.

Just remember that there is no one right answer for every developer. You bring you own history to the equation. Something that will work for you won't work for someone else. The opportunity cost of learning Objective-C or Java might be lower or higher for you than someone else. Likewise, for a bootstrap operation, if you could put out an app for a small platform in 30 days using your existing skill set, that would be better than taking a year to put out an app for the platform with the largest market share.

Whatever you choose, it's more important to begin executing as soon as possible than it is to plan out everything before you start. In my experience, dithering from excessive planning hurts you more in the long run than choosing a suboptimal path. In real life you don't actually "have to get it right" at the onset. What you have to do is be flexible and determined enough to recover from the many, many, many mistakes you will inevitably make.

Go with what you have, play to your existing strengths, get product shipped and learn as you go. Don't over think...

... just execute.

TechZen
A: 

Something else to keep in mind is not to look at market penetration by a particular smartphone. What you really care about what smartphone can I sell the most on. For example, Symbian s60 has the largest market share by a LONG shot, but users spend a TON less on apps. Another example is BlackBerry. Their market share is ahead of iPhone, yet 3rd party app sells is MUCH less than on iPhone. That said, if you are creating a copy of 10 apps on the iPhone that would be unique on a BlackBerry you may be better off on BlackBerry since you will not have to share the revenue with 10 other apps. You really need to look at each app store, see what the competition is, and factor in how much users actually spend on those app stores.

Stephen
+4  A: 

With Nokia (Symbian and MeeGo) you can develop in Qt. You should be able to deploy the same app to both systems without to much trouble. With your background as a web dev you can use QtScript\JavaScript etc. to get the desired results.

navlelo
Indeed Qt lets you turn a web app into a native one since it contains an embedable web engine. You can then create your own javascript APIs and implement them with native code. Very powerful.
QuickRecipesOnSymbianOS
A: 

Depending on the nature of your applications, you could consider that pretty much all of these platform use Webkit. This means that with a single well-designed web app, you could target all of these platforms as well as desktop users. If you want to sell your application in the corresponding app stores, there's Phonegap and Rhomobile.

luminarious