Saturday, July 23, 2011

Android vs iOS ... it's not what you think

    Android or iOS? That is the question that confounds my thoughts.

    Not which is better, or more popular, or even easier to use. What I am looking for is which platform do I learn to write software for? I seem to be good at putting my time into the wrong one. I have already wasted years learning to develop on Microsoft Windows and Windows Mobile. Part of the reason I did nothing special with either of them was a decisive lack of joy.

    Yes Windows will get the job done, most of the time, but that doesn't mean you are going to enjoy getting it done. The user experience for most Windows users is one of constant updates, clearing of caches, deleting of cookies, scanning for viruses and installing yet more software to make some piece of mundane hardware work until then next Windows update renders the drivers obsolete or unstable. My years with Microsoft and their operating systems dates back before Windows, before all of this WYSIWYG computing. I remember using computers before Microsoft ever released DOS 2.1 to the public. Yes, I have been using computers since the days of CP/M machines. For those you who are too young to know what a CP/M computer is, consider yourself lucky.

    I used to look forward to the joy of making a computer work, and work well. After a time I chased the dream of making computers do things they never were intended to do and life was good, for a while. I would spend countless hours, days, even weeks preforming some cryptic registry hack or wake myself after having fallen asleep at the keyboard on yet another all night coding session with unknown, never met, and rarely seen digital people from the far reaches of the world. I was a Microsoft specialist and programmer and the poor masses of the world needed my help. Not necessarily my help, but someone's help. I just happen to enjoy helping people with their machines. Each was another chance to sharpen skill and learn some tiny tidbit of information that I could store away only to bring out at some necessary or even random time to impress the less skilled. I was a legend in my own mind.

    Then my outlook on computers started to change. I am not sure when it started, or even what started it, but it did change. I started to look at my own computers as just a user. I clearly remember thinking on more than one occasion "how would a 'normal' user look at this?" It was the beginning of the end of my Pro-Microsoft days.

    Recently Microsoft released Windows Mobile Seven. It boasts of a slick new user interface that is really just the Zune interface revamped to accept a phone call. While looking at developing software for mobile markets I decided to take a "wait-and-see" approach to Windows Mobile Seven. Unfortunately for the team from Redmond, so did every other developer out there.

    As you can see, Microsoft and Palm are the dead horses to beat with a stick in the mobile operating system wars. RIM, the makers of blackberry, are still holding on, but they will not last much longer. Really that leaves Google and Apple as the two main driving forces for mobile applications. You can say what you want about these two super powers of software, the fact is, they are the place to be.

    Early adopters of one or the other seemed to have profited most and will likely continue doing so. Yes, I am very late to the mobile arena.

    I now own a MacBook Pro. I have always liked Apple, but never really gave them a solid chance. After all, Microsoft is the king of the business world and runs on nearly all of the desktops on the planet. Surely to be a successful programmer I would need to write software for the Microsoft platform(s) in order to reach the widest audience. To do anything less would be a sort of sacrilege to all I had come to learn. However, I now own a MacBook Pro.

    I have always known that you overpay for hardware with Mac's. The Mac's "bang-for-the-buck" can easily be beaten by even the costliest of PC vendors. So why would I choose a Mac, and stay with it? It just works, that why. I rarely reset my MacBook, I never worry about viruses and everything I need to do it does. The user experience with a Mac is like no other operating system I have ever used, and I find it a little hard to explain without sitting you down at one.

    Thus my conundrum. I have installed the Software Development Kit (SDK) for both iOS (which includes the Mac osX desktop OS) and the Android OS. Android uses a standardized Java programming language that is well documented and "relatively" easy to learn. iOS on the other hand uses Cocoa, a custom version of Objective-C. Objective-C is a bit harder to learn than Java, but it creates real programs. Programs written in Java have to be fed into a Java Virtual Machine (JVM) in order to run. Basically Objective-C programs run faster and tend to be more stable.

    There is also the "market" to consider. Apple has a "walled garden" approach to its iTunes app store. While it ensures quality software (usually), they tell software makers everyday that their software will not be included in the app store. They do not have to give a reason and in fact rarely do. That is just the way it is. However, recent studies show that iOS users are more likely to shell out the dollars for apps than Android users. In fact, iOS apps that have Android counterparts or equivalents consistently gross 30% more in sales revenue.

    On the Google side of the playground, it's more or less a free-for-all. Yes there is a large number of junk apps out there, but the "user rating" system seems to keep most of them at bay. Android apps also tend to do fairly well being "advertising supported." Many developers make more money on the adds their apps display than they do on selling the "add free version." There is also pornography, which will never find its way into Apple's walled garden. Say what you will about porn but the fact is, sex sells. It sells a lot. In 1997 just 14% of internet traffic was porn or porn-related. In 2010 that figure has skyrocketed to 58%. More than half of all data currently on the internet is porn or porn-related. It is a massive business, and will likely be the key to Android staying ahead of Apple. There is even a "Porn App" app store for android phones, you can Google it. I don't need to provide a link here.

    Some of you may even ask, "Why not do both?" That would be a valid question if I was full time programmer. I am not. I am just a guy who is looking for a new hobby, a hobby than can make me some green should I decide to quit my day job. For now, I just don't have the time to learn both. I have to pick one.

    To recap, iOS pluses include stability, quality, and ease to integrate a desktop app. iOS downfalls are harder to learn and a more restrictive app store. Google Android plusses are ease of use and ease to get apps to market. Android downfalls include a "wild-west" general store mentality, lack of standardization, and inherent Java instabilities.

    Whatever I end I up choosing I will be sticking with a for a long time. I just hope I don't bet on the wrong horse this time.