

Is it hard to become an Android developer? - kreci
http://www.kreci.net/android/is-it-hard-to-become-an-android-developer/

======
wallflower
Excellent and practical tips and a few highly-recommended book
recommendations/study materials from the HN community:

"Ask HN: Jumping into Android Development"

<http://news.ycombinator.com/item?id=1347170>

The general consensus from my extended network of mobile developer friends and
acquaintances:

Android is harder to develop for than iOS - you will spend more time and
effort on building something nice than you would in iOS. Windows Phone 7 is
not an easy transition for .Net and C# developers because it is basically
Silverlight framework programming. No one I know is doing WebOS (Palm)
development.

Also, the money in mobile development is almost always from making apps for
companies and organizations that want to have their own app (e.g. consulting).
This is from my knowledge of how my friends are making a living. Yes, they
have their own apps but to succeed in the direct to consumer device
marketplace is really is more about being a better marketer, designer than a
mobile developer.

The consumer who downloads your program only sees the tip of the iceberg (the
UI, the functionality, the user experience). Does it make them feel cool (or
appear cooler to their peer group) and/or add some bit of value to their life
workflow? They don't care how it was made. Note: This is why HTML5 apps are at
a disadvantage - there is only so much you can do with Canvas.

~~~
garply
I don't want to launch my own apps, I just want to consult. I've only recently
learned to develop for Android (did some very cheap consulting gigs -
including porting a small game for practically free).

Any advice on how to find clients?

~~~
andreyf
_Any advice on how to find clients?_

Launch your own app, they'll find you ;)

~~~
sudont
That sounds like an inverse lamentation. I'm pretty sure I remember a couple
of dev's in the cocoa blog world complaining about the amount of unsolicited
consulting requests they got after launching a couple of somewhat popular
apps.

------
campnic
I became a full time android developer about 45 days ago and had been dabbling
before that for about 2 months. A few points and comments about the article.

\- If you are going to pick up a phone to do android development, my
recommendation would be a used original Droid or the HTC Desire. And its not
because these are good phones but because these are the phones that I see a
lot of people using. I have a Nexus One and I find that it is too powerful and
does things other android phones can't. (read on)

\- Understand what device fragmentation means for your development. Are you
creating a form based native application? Different handsets generally handle
native layouts, text and buttons very similarly so fragmentation may not be a
huge issue. Are you creating a game or an application that uses video/audio?
Prepare to be buried in a multi-dimensional matrix of hell :) As an example,
take for example streaming raw AAC audio from the internet. Android as a base
platform does not support this in hardware or kernel, but some sprint phones
do support this.

\- Keep in mind the relative power of the different devices. As with most
emulators, the Android emulator has slow draw times and fast network times
(though network can be adjusted). Just keep in mind that, if you have a
device, where does it rank in the spectrum of devices. Developing an android
app that runs 'smoothly' on a Nexus One can leave a lot of customers having a
'jerky' experience. Some of this, in my experience, is also cause by poor
design decisions.

How hard is it? Doing something trivial is, by design, trivial. A todo list
app would take you, with knowledge of any other programming language, less
then 8 hours. I find that the expensive part of the process is knowledge of
the fringe, as with all things. Things like knowing how button requests
cascade, how a view hierarchy should be organized or how to stream media (can
you tell I'm hung up?) are the sorts of things that aren't extremely well
documented and take more time to understand than similar concepts for web
programing (IMO).

Like kreci, I'm open to questions.

~~~
ctrager
What turned out to be necessary for me was looking at the source code of the
android apps themselves, rather than the sample apps in the SDK. Specifically,
I developed an app that used the camera
([http://ifdefined.com/blog/post/BugTrackerNET-app-for-
Android...](http://ifdefined.com/blog/post/BugTrackerNET-app-for-
Android.aspx)) and I couldn't have done it without studying/stealing code from
the built-in Camera app:
[http://android.git.kernel.org/?p=platform/packages/apps/Came...](http://android.git.kernel.org/?p=platform/packages/apps/Camera.git;a=tree;f=src/com/android/camera;h=f68f175adfda95ee342877e5139b94e5c9e5622a;hb=HEAD)

~~~
amackera
Seconded. This also gives you a good model to emulate for class structure/app
design.

------
tocomment
My biggest obstacle in getting into Android development is thinking of ideas
for apps to make. It seems especially hard to think of simple ideas that would
make a good first project.

When I try to sit down and do a "toy" app to learn the platform better I find
myself getting bored because I'm not excited about the app I'm making.

Does anyone have an advice on finding or coming up with ideas?

Or better yet, does anyone need a simple app made? (Maybe I should do an offer
HN if that's still around).

~~~
parfe
>My biggest obstacle in getting into Android development is thinking of ideas
for apps to make.

I just got a Droid X. I had been trying to brainstorm ideas for dev'ing on it
but realized on my commute home yesterday that was the wrong way, for me, to
go about it.

Basically I need to just use the phone and anytime I think "wow, i could
really use X to do Y" go and try to find X, and if I can't maybe work out a
plan for developing X myself.

Like on my commute, I have several routes I can take. I got the idea to make
an app that collects statistics based on time of day, route, speed/traffic
that will help predict which route is the best depending on when I leave the
office.

And hey! It already exists. But can I compete? Or should I just be happy
someone already did the work for me?

~~~
tocomment
Wow, I had that exact same idea! Does it already exist?

I figured it wouldn't be a good first project, but maybe.

Also GPS kills my battery in under two hours on the incredible :-(

~~~
parfe
For this specific idea, the battery is irrelevant as you have ready access to
a car charger.

CommuteTrack[1] is the app I found. It's listed for $5.00 but I haven't
purchased it so I can't comment on the quality or functionality.

[1] <http://frequal.com/CommuteTrack/index.html>

------
donaq
_So what do you really need… Free IDE like Eclipse_

You don't even need to use an IDE if you don't want to. Google, in typical
hacker-friendly fashion, has provided pretty complete instructions for
developing in your environment of choice. Personally, I use vim, but in case
you're not as masochistic/in love with vim as I am, the instructions should
work just as well for your favourite code munger.

<http://developer.android.com/guide/developing/other-ide.html>

~~~
technomancy
> You don't even need to use an IDE if you don't want to.

Heck, you don't even need to use Java:

<https://github.com/technomancy/Garrett>

~~~
gte910h
You can even use javascript via Appcelerator Titanium:

<http://www.appcelerator.com/>

(It's even moderately crossplatform with iOS and soon blackberry).

~~~
loca
I haven't used, but PhoneGap seems to offer something similar:

<http://www.phonegap.com/>

------
zizee
If it is not considered off topic, I'd like to hear if anyone has used
Rhomobile* to develop an android app. Even better if you can share experience
as a Rails programmer making the jump.

* Rhomobile/Rhodes is a Ruby framework for developing Android and iOS apps from the same codebase.

------
netcan
Any answer to such a question is at least a little 'how long is a piece of
string' in nature. It might help if you added some examples. How competent is
competent. How hard is hard.

From where you started, how long did it take to be able to create a basic own
use app with a quanta of usefulness. If it makes it easier, compare it to
starting in php. In the time it would take a non web programmer to learn
enough to make a do list app, how far would you get in android?

~~~
kreci
It took me about a month to write my first useful app - "WP Stats" for
Android. I think it is quite fast especially I have not even known Java too
well...

------
narag
Excuse me if this is a little off-topic, but the article just reminded me of
it. There seems to be a recent trend over here of stories in HN appearing
_before_ the actual news. See speculation about recent NASA and Apple
announcements. Sometimes, I can't find later stories that tell "the answer".

What ever happened to new Google Phone? I was first planning to buy the Desire
for programming, like you. But the possibility of a "clean" phone has me
waiting...

~~~
kreci
Yesterday google has presented new Nexus S and most probably it will be
available for sale in a few days/weeks and it will come with Android 2.3
(Gingerbread). So it may be really good idea to wait for it :)

~~~
vijayr
What library did you use to create the graphs? Any third party library?

------
masklinn
> It is helpful to test your app with real touch screen but for most cases an
> Android phone emulator (that is included in Android SDK) is really enough.

This is a very good way to release complete garbage.

~~~
kreci
As I written at all it is good to test it on real device. But if you just want
to learn emulator is enough!

~~~
grammaton
Not really. Trust me, there will come a point when it's phone or nothing, and
that point comes sooner than you think. Like ALL mobile emulators, the android
emulator is slow, buggy, and frustrating to use.

------
trotsky
I love your attitude kreci. Thanks for the informing blog posts.

------
krschultz
What phone do experienced Android developers recommend getting? The Droid X,
Droid 2, and HTC Incredible are seemingly the most popular ones people are
buying in the stores, but I was thinking of getting a Droid 1 or Nexus One for
development. The Droid 1 is a bit slower and I think it is best to develop for
slower hardware than for faster hardware, and the Nexus One is seemingly the
fastest to be updated. Any recommendations?

~~~
ydant
Original Droid and you can have updates very soon after N1 gets them thanks to
Cyanogen. You also will be working with a bit more limited resources - less
memory, and slower processor, which should help save you from writing stuff
that will only run well on the N1. The Droid is very capable for foreground
processes, but once you start running too much, the memory constraints kick in
- this can be useful to test if you rely on a background service.

Once the Droid is rooted and has a good recovery image loaded, you can back up
and go from "Stock" to some aftermarket ROM for testing a variety of scenarios
if needed.

I would recommend testing with an HTC Incredible as well - with that, there's
the possibility of switching between Stock HTC build and Cyanogen using the
bootloader (requires "rooting"). I'm finding quirks with SenseUI (most
annoyingly, the keyboard throwing the same event multiple times) that I would
have never caught without the device in my hand.

Also, keep in mind depending on what you're doing, some built in Vendor app
(Verizon, etc) might interfere, so testing on a purely stock Google build
phone might cause you to miss something.

------
grammaton
The hardest part of becoming an Android developer is the steep learning curve
- Google doesn't exactly do you a lot of favors with it's documentation there.
However, relative to the learning curve, it's no more difficult to pick up the
requisite bits of software and start learning than it is to become, say, a
Rails developer (I've done both professionally).

------
gord
Whats the HTML5 rich web app development experience like for Android?

ie. do webkit style animated transitions work? smoothly?

[ Found a partial answer to my own question, here :
[http://blazingcloud.net/2010/08/11/jqtouch-slide-
transition-...](http://blazingcloud.net/2010/08/11/jqtouch-slide-transition-
fix-for-android-2-0/) ]

------
kreci
As usual comments are welcome and very desired ;)

------
count
Developing apps for Android isn't especially hard - much of the documentation
is geared toward that. Developing on Android itself (porting to new devices,
adding functionality, etc) is insanely difficult and very poorly documented
(if at all).

~~~
grammaton
Funny, from my experience i'd have said the exact opposite. Then again I
started out on J2ME feature phones, so "difficult" porting is a pretty
relative term for me ;)

------
brown9-2
Can anyone here comment on either of the two Android books kreci recommends,
or have any other recommendations to add?

------
chrisbroadfoot
Stopped reading when I read "JAVA". Java is not an acronym.

~~~
andrew1
[http://chrisbroadfoot.id.au/2008/03/21/essential-mac-osx-
app...](http://chrisbroadfoot.id.au/2008/03/21/essential-mac-osx-apps)

Stopped reading as I found a grammatical error on the first line. I mean, I
could just accept that articles that people put on their personal websites
might not be copy-edited by professional editors and that despite errors they
might be useful or interesting. Probably easier to just dismiss the whole
article though.

