I call myself an “independent iOS developer”. That’s the name I give myself because that is where I spend most of my working days. My first iPhone app was approved three years ago. For almost as many years I’ve made my primary living from the iOS App Store. It pays my mortgage and puts food on my table.
That isn’t to say that I’ve only ever worked on iOS. I’ve developed apps for most major platforms (6 at last count). I’ve made good money on three of them: iOS, Mac and Android. Around a quarter of the total downloads of my apps have come on Android.
It seems like every other week, that there is another Android vs iOS tempest. With the respective parties touting that their platform is better than the other. That this platform is going to ‘win’, or ‘kill’ the other. I’ve worked on both platforms and know them reasonably well. I’m quite sure that both will be around for a long, long time. They serve different markets and provide good counter balance for the other.
iOS is all about giving users a managed experience. About having the OS creator make tough decisions about what is best for the user experience. This has lead to a platform that is incredibly easy to use. Hand an iOS device to anyone — from a toddler to a senior — and I bet you they’ll be exploring the world in new ways with a smile on their face in no time.
Android is the opposite. It is all about shifting that control over experience away from the OS creator and putting it firmly in the hands of device makers and users. You can do more on an Android device than is possible with a non-jailbroken iPhone. Now, some of those things may not be great for everyone, but having the choice has value to certain users.
I use my iPhone every day, it is rarely more than 10 feet from me 24/7. I have a couple of Android phones but I’ve never wanted to use them for anything other than development. The iOS way just feels right to me. It connects with how I think, how I work, how I play. Somedays I wish I could do things on my iPhone that currently aren’t permitted, but those days are few and far between. I have a bias for Apple products because they have rarely disappointment me and fit my lifestyle.
Bias is good. Bias allows you to look past the short comings of something for long enough that you can become an expert. Without bias you end up waffling back and forth between things, constantly shifting your focus. But we should be careful about projecting our bias onto others.
It is arrogant and shortsighted to chide developers for developing on one platform or the other. The individual experiences of one developer will almost certainly fail to apply to others. Every developer should be working out what is best for them. How they can best use their most limited resource, their time, to maximize their work. Each of our goals are different. It is rarely as simple as where we can make the most money. Satisfaction in one’s work is about much more than a balance sheet.
I know Android developers who simply love working in Java, who think Eclipse is fantastic, and love the freedom that working on Android allows.
I also know iOS developers who are in love with Objective-C, think Xcode is great and love the creativity that working within boundaries necessitates.
As an “independent iOS developer”, I’m very glad that Android exists. It provides fuel to keep the engineering teams in Cupertino focused, motivated and keep polishing the products I love so much. I’m also glad that I’ve made Android apps. They have made me some money, widened my skill set and helped confirm in my mind why I like iOS so much. You can’t fully appreciate something until you have tried its counterpart.
Discussions like this can tend to take on a ‘religious’ tone. Where we get so wrapped around our differences that we loose track of the big picture. I wrote an allegory discussing my views on this. Hopefully removing a bit of the realism from the story can help to make the point more clearly. Just like how removing the color from a photograph can help draw your attention to what is really beautiful. ↦ An Allegory of Two Valleys