It’s kind of funny listening to different developers. Everyone rationalizes their preferences in different ways (some rational some not).
Today’s mobile development is one of the more fiercely dividing topics I’ve seen since becoming a professional. Don’t get me wrong, there is always a debate to be had between developers! But this topic goes pretty deep and there is a lot to gain and loose depending on which platform reigns supreme. This debate rivals the platform debates of the past, simply because mobile application development is “the next big thing”. So move over Betamax vs VHS, Mac OS vs Windows, Sega Genesis vs Super Nintendo, Visual Beginner’s All-Purpose Symbolic Instruction Code (aka BASIC) vs every other programming language, HDDVD vs BluRay, and Brittany Spears vs Christina Aguilera!
In the future, we will most likely be using web and mobile apps exclusively. This is as important as the Windows vs Mac OS debates of the early 90’s. Apple lost and the fact that Microsoft won changed the development landscape in a significant way (for better or for worse). If Apple won that war everything today would be seriously different. Imagine if Justin Long played the PC in those Mac Vs PC TV commercials. Ok, I’m freaking myself out.
As a software developer it is difficult for me to put one platform against another because I need to be able to write software for all of them, regardless if I like it or not. But, this doesn’t mean that I cannot have a preference, right? I still prefer Windows over Linux, Linux over Mac, Visual Studio over Xcode, Netbeans over Eclipse, C# over Java, any programming language over Visual Beginner’s All-Purpose Symbolic Instruction Code (aka BASIC), Christina Aguilera over Brittany Spears… I like and dislike a lot of stuff.
I also have my preference in mobile development. I had opportunities to write for Blackberry, Android, and iPhone and I have subconsciously ranked these platforms. In my eyes, it goes in this order:
(1) Apple iOS
(2) Google Android
(3) RIM BlackBerry OS
BlackBerry is such a painful development experience that I will no longer mention it in this blog! Ha ha ha… As far as the other two go, here is how I’d break them down:
iOS The Goods
Since you are only developing for at most 3 devices (iPhone, iPhone Retina, and iPad) code portability is simpler to manage
You have a greater chance of making money off your software
Apps run exactly as or close to your intended design, due to the familiar hardware and runtime environment
The APIs are not hard to use, they’re just not intuitive. But, once you figure out how they work it’s often easy to implement
Xcode 4 has drastically simplified GUI development
Hooking actions to your UI elements is very easy
Since the Apple APIs provide the majority of the application functionality, most apps behave very similarly. This will give a user the benefit of “knowing” how to use your app before they’ve even used it
Since Cocoa has already existed for a while, anyone familiar with it can easily port their skills to Cocoa Touch
Android: The Goods
Since the base language is of a Java flavor, it is pretty familiar when getting started
Android documentation is spectacular
You have more choices of IDEs (Eclipse, Netbeans etc) and operating systems (Windows, Linux, Mac etc)
With a less coveted application base, there are more opportunities for aspiring developers
iOS: The Bads
You need a Mac to use Xcode
Since a relatively obscure language (Objective-C) is the heart of iOS development, there is sometimes a steep learning curve
Apple’s API implementations are often counter-intuitive and inconsistently implemented. We like to say that “Apple is consistently inconsistent.”
App Store process is rivaled only by what a prison sentence must be like (including the unwanted love)
Apple is way too controlling over how you develop your apps. Pretty soon there will be a rule that if you fart more than 3 times during development your app will be denied (You know how Apple feels about those fart apps)
Application market is very saturated
Android: The Bads
I could probably watch Forrest Gump in the time it takes the simulator to boot
Dealing with OS versioning and the multitude of different devices is a headache
Apps do not always behave as designed. I’ve noticed they are often quite jittery
Not as lucrative as Apple mobile apps
Well, there you have it! That is my personal opinion about the development experience between the top two mobile platforms.
Having said all that, I believe that neither development experience is as good as it could be. There is a lot to be desired. I also believe that the success of any platform is based on the enthusiasm of software developers. I don’t care how great the specs are, if the developers aren’t enthused then mediocrity or failure is imminent (PS3). It’s the software that drives the hardware and not the other way around. If someone else came flying out on the scene with comparable devices and a stellar development experience I could definitely see both Apple and Android suffering as a result.
I’d love to hear your feedback!