

Ask HN: What mobile SDK should I learn - macco

I am starting to digg my head into mobile development. After the events of friday i don't know anymore which mobile SDK i should investigate.<p>Originally i wanted to learn Qt mobility. My thinking was like this:
* open source
* cross-plattform
* very easy to use
* not so much crowded with developers =&#62; less competition<p>Now I am not so sure anymore if it is better to learn another platform like Android or WebOS.<p>What are your thoughts about this? Any advice welcome.
======
wallflower
Don't fret about cross-platform. However, if you want to do games, look at
Unity3D ($$) - that is cross-platform.

I'm an iOS developer, now doing a deep-dive into Android.

Pretty much, the consensus among my iOS developer circle is that to be
considered a serious mobile player you need three platforms: iOS, Android, and
mobile web.

To be more marketable as a developer, there is no single platform that you
want to learn (the true answer is to strive to become a better designer than
coder - the best coder I know personally is a better designer - and that is
one of the reasons he's had top-10 App Store apps). Learning Android has less
of a learning curve. Knowing both iOS and Android is hard - I'm trying to do
that now - and I've given up - shelved all my iOS projects to focus on
Android.

Android is going to win in the long-run. WebOS is going to be a footnote in
the history of tablets (unfortunately Nokia didn't buy them 2 years ago).
Windows Phone 7 is a wildcard. By mobile web, I don't mean rich HTML5 - I mean
decent mobile optimized websites like <http://shakeshack.com>

If you are going to study iPhone, just dive right in. The analyzer will save
you from the most egregious of memory leaks and retain cycles. You will
realize that your code you are writing sucks three or four iterations or
generations down the line. Don't fret about that. You will go back and forth
between the benefits of IB vs writing code for UIs directly.

If you are going to study Android, the code from OpenIntents is some of the
best written I've seen so far [1]. A lot of the Android examples don't cover
non-trivial stuff (like how do you have a ContentProvider that can handle
multiple tables, how do you skin). OpenIntents shows a way, maybe not the best
way - but decent, how to do all of that.

[1] <http://code.google.com/p/openintents/source/browse/trunk>

~~~
macco
Great advice thanks. It will be probably Android. Apple is not an real option
for me.

------
SandB0x
Simple: Android.

Open source, healthy ecosystem, safe future. Around 60% of my friends with
smartphones have Android devices. Don't worry about competition, there's
plenty of demand. Just be good at it.

If open source isn't a requirement and you own a Mac then obviously iOS is a
great choice too. For the time being I really wouldn't consider learning any
platform apart from these two.

~~~
macco
Thanks iOS in not an option at the moment. I'm quite commited to open source.

~~~
Zev
FWIW, iOS and open source aren't opposites. It is quite possible to have open
source apps (or even use an open source library) on the app store - just avoid
the GPL.

My rationale: I contribute to Mobile Colloquy, an IRC client for iOS that is
available under the BSD license. And we've never had any problems :)

------
guptaneil
The way I see it, manufacturers are going to flood the market with Android
phones that just compete on price, while iOS will dominate the high end
smartphone market. This means that while Android will win in the long run in
terms of market share, the majority of people buying those phones are not
likely to spend money on premium apps. iOS, on the other hand, will continue
to generate the most profit for its developers, even with a smaller market
share.

Which segment you want to target depends on what types of apps you want to
make.

If you're goal is to make money from the app itself (like a game or utility
app), you should invest in iOS where the ROI is far greater. If you are
developing an app for a web service, then you are probably looking for the
greatest reach instead of trying to generate profit from the app itself. In
this case, you can just partner up with an Android developer to cover both
market segments.

On the other hand, if you're fine with making a mass market app that is
monetized through ads instead of direct sales, then Android is good choice
since it is in need of more consumer-friendly apps. Finally, if you want to
make something cool just for the sake of hacking, then Android obviously gives
you the greatest access to the underlying system to do whatever you want.

All of the other mobile OS's are too young to really predict where they'll go.

------
makecheck
What languages do you know, and what hardware do you own?

If you know at least basic C, Objective-C isn't hard to learn at all, but you
need a Mac to do development on.

Android requires Java as far as I can tell, but maybe there are other options
for that platform. Java is fairly close to C, but you'll probably still find
it easier to learn if you've done C++.

It is also possible to create web apps that are essentially wrapped. Though
I'd imagine you still need access to the platform (e.g. a Mac for iPhones) to
produce even the wrapper.

Keep in mind that dynamic languages such as Objective-C and JavaScript will
probably make it easier to debug, at least in my experience. If this is
something brand new to you, a forgiving platform may be the best way to start.

~~~
macco
Bread and butter is Python for me. The reason why Qt was / is very
interesting. Any experience with the Android Scripting Environment
<http://code.google.com/p/android-scripting/> ?

------
kleinsch
Not sure where you're located geographically, but in the US there's still a
major shortage of qualified mobile developers for the major platforms (iOS and
Android). Any platform other than those and there will be less competition,
but also many fewer jobs. I've started doing some iOS development, haven't
even completed my first project yet, and I'm already turning down consulting
jobs.

If you're thinking about launching your own apps, the same logic applies. Go
where the users are, then branch out if you're successful. There may be less
apps on some of the other platforms, but now that there are successful
smartphone companies, they're porting to most major platforms, so you're
competing with the big boys for a share of a much smaller pie.

~~~
macco
Germany. What you is quite true. But isn't Symbian a good bet if you look at
sales figures?

~~~
zokier
Symbians sales have been coming crashing down, and Nokia is going to
discontinue it in a few years. And the app market (ovi store) for symbian is
quite dead compared to even Android Market, and especially when compared to
App Store.

~~~
pxue
yeah, symbian is already on its death bed, Nokia has made it clear they want
to move in the direction of winmo 7.

engadget.com/default/article.do?artUrl=<http://www.engadget.com/2011/02/11/rip-
symbian/>

------
kolinko
If you're a linux geek then Android, if you want to earn money now - iOS, if
you don't want much competition - go for WP7 (it's very small now, but it's
guaranteed to have a nice chunk of market share in two years).

WebOS? Did you hear about any good software thing HP ever released? That
company doesn't know the stuff and purchasing Palm doesn't change much.

~~~
petervandijck
I wouldn't rule out WebOS, it has the following strong points:

\- Quite a few developers seem to be rooting for it.

\- HP has tremendous distribution power (WebOS on your printer and desktop!)

\- HP has a lot of money to put in it.

Of course, I don't think it has more than, say, 20% of a chance to become
meaningful, but that's still something :)

------
r3demon
Android and iOS, and Qt mobility is still fine since millions of Nokia devices
are sold around the world.

------
jwwest
Learn them all, don't pigeon hole yourself. Or at least lean the basics of all
of them, then focus on the one with the best developer tools or the one that
you enjoy working in.

------
herval
iOS if you intend to make money any time soon. If not, Android is pretty much
the only game in town (I don't see WebOS going anywhere any time soon, and
unless Microkia launches some seriously badass WM7 phones, I don't see much
traction for it either)

------
hodzanassredin
you can simply use c# with mono for android, ios and webos(in near future)
development also you ca use c# for building wp7 apps. but you need to know
differences in api of that platforms.

------
hmart
What about platforms or frameworks like Titanium or PhoneGap?

------
X4
Always remember that when you need a broad comparison of a field, Wikipedia
might have it: <http://en.wikipedia.org/wiki/Mobile_application_development>

I've played with many of these Frameworks, just to have a comprehensive
unbiased opinion. I also used the pure Android/iOS SDKs too. My suggestion
would be to use the pure Android & iOS SDKs to learn. Then use the Airplay SDK
($$), which covers all Smartphones. (<they offer free education licenses)

By the way: You can circumvent the slow Android emulator by using an Android
Virtual Machine <http://www.android-x86.org/> or the latest AVD Platform
target, which supports "snapshots".

Best wishes

