iPhone vs. Android, a Developer’s Perspective

Slalom Consultant Greg Martin

Greg Martin is a member of the Slalom National Mobility team which incubates emerging technology solutions in areas such as mobility, user experience and alternative application hosting.

I should start this post with a bit of a disclaimer, I love my iPhone.  I’ve had one since the initial launch and the bulk of my projects since then have been iPhone related.  That being said, aside from it being my job to be knowledgeable in other platforms, I am also personally very interested in other mobile technologies.

A couple of weeks ago I received my Android Dev Phone 2 from the Android Market.  Any developer with an Android Market account ($25 a year) can order an unlocked development phone from Google for developing applications.  Right off the bat I found this to be a nice difference.  Without another contract I could start writing software and testing directly on a device, and if I do need to test on the network I can just pop in a sim from another device (be careful about data charges however).

The Hardware

The Android Dev Phone 2 is the HTC Google Ion (aka the HTC Magic or T-Mobile myTouch), specs can be found here, I will be comparing to my iPhone 3GS.  The Android device is physically smaller than the iPhone, and I had never really considered my iPhone to be bulky until setting them side-by-side.  Aside from the touch screen the Android device has a few more buttons than the iPhone, Home, Menu, Call, Back, Search, Hangup and a scroll ball.  Because of the touch screen, I don’t see any reason or value added with the scroll ball, maybe for one handed operation, but even then you still just gravitate to the screen.

It may be unfair to compare performance against the 3GS, but even compared to the 3G the OS is not nearly as snappy as the iPhone.  Apps tend to launch much more slowly and general responsiveness always seems to have a bit of a lag.  I am curious how this will compare on the upcoming Nexus device which is supposed to have a much faster processor.

The other major difference is that the Android device does not have multi-touch.  Coming from the iPhone where you expect multi-touch and an extremely accurate touch screen, this can take some getting used to.

Overall the Ion hardware is not bad, but it does not yet match the iPhone.

The Apps

The iPhone has a huge jump on Android in the app space.  I attempted to find the Android equivalent to the apps I use most on my iPhone.  Many were represented, but overall the quality and experience was lacking.  I do believe the apps will get better with time as the platform and hardware improves.

There are however, two apps that the Android device has that I wish my iPhone had, and both come from Google.  The Google Voice app is great, mostly because you can override your default dialer with it, this means in essence the number associated with your sim does not matter, you can take calls in and make calls out with your Google Voice number seamlessly.  The second app is Google Navigator built into the Google Maps app.  For a free, turn-by-turn navigation app, this is great.  I don’t have a GPS in my car, and I have now on multiple occasions brought the Android phone with me just for navigation purposes.

AppStore vs. Android Market

From a user perspective I find the iPhone AppStore easier to navigate and browse.  Longer descriptions and more screenshots give you a better sense of what you are downloading.  Also, application removal on the iPhone far exceeds that of Android (which you have to navigate multiple layers into Settings and then find what you are looking for in what seems to be an unsorted list).

From an app submission standpoint the experience is very similar, with one major difference.  With the Android Market, the moment you press “Publish” your app is available for download.  Coming from a world where you generally wait about two weeks for approval, this is great.  That being said, I don’t have too many bad things to say about Apple’s process.  I have never been caught in submission limbo and I completely understand their desire to control the user experience and I can appreciate that, but it certainly is nice to not have to obsessively check status once submitted.

Objective-C vs. Java

Prior to working with the iPhone I had never done any Mac development and Objective-C was completely new to me.  Most of what I had done the few years before this was in C#.  For someone coming from C# or Java (the language of Android) Objective-C can have a bit of an initial learning curve.  Unique syntax and memory management responsibilities that C# and Java developers are not used to take some time to get straight.  However, once you get over the hump, I feel Objective-C is a joy to write software in.

Java has the advantage that its a good bet that someone wanting to write software for Android likely has some Java or C# experience where as the iPhone is creating a bunch of new Objective-C developers that didn’t exist before.

In terms of mobility, I feel that Objective-C currently provides a better platform than Java when it comes to performance of applications and this is clear to me when using the Android device next to a 3G iPhone.

XCode vs. Eclipse

Coming from a background of Microsoft technologies and Visual Studio, going to XCode or Eclipse feels like a backwards step.  Say what you want about Microsoft, they make great developer tools.  That being said, I’m not here to compare to Visual Studio.

Getting started with XCode to write iPhone applications is painless.  Become a developer, download the SDK, install and you are set to go.  XCode is a very polished IDE and for the most part, once you learn all the shortcuts to work the way you like to work I think it’s just fine.

Alternatively, Eclipse leaves something to be desired.  To be fair, Google has documented the setup process very well, and as long as you can follow directions you should have no trouble getting your environment setup.  My biggest complaint after getting the install completed is really just the performance of Eclipse.  I have 6 month old MacBook Pro and the Eclipse UI still does not perform like it should.

One nice thing Google has done is they have made the setup of your developer device extremely painless.  There are no certificates or provisioning profiles necessary as with the iPhone.  I simply plugged in my Android dev device and when I built and ran my app it launched right on the device without question.

APIs, Documentation & Community

Without more experience with the Android APIs it would be unfair for me to claim one over the other.  What I can do is highlight the experience I had porting a simple app from iPhone to Android.  In general I believe Android has the components you need to create the apps you want to create, however, I often found myself asking “How do I do X?”.  X was something relatively simple to accomplish on the iPhone, and more often than not the answer was there, but much harder to find.  The iPhone SDK provides much more in-depth code samples, where as with Android I often felt like they were so close but did not get me where I wanted to be.

In the same way, the developer community for iPhone is much larger and therefore its generally easier to find answers with a few Google searches.  For example, one of my favorite sites, Stack Overflow, currently has 13,940 questions tagged for iPhone and only 2,254 for Android.

Final Thoughts

Overall, I feel the iPhone still has a pretty big lead, however Android is not a platform to be dismissed.  I will certainly be spending more time with it in the coming months so expect to see more Android related posts.

– Greg

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: