A Quick History of my Mobile Adventures
As an engineer I spend most of my time building for two platforms, Android and iOS. I originally got into Android development because it was accessible, made use of a language I was familiar with (Java) and held the promise of a ecosystem bursting with opportunity.
A few years later I found myself in the position of being asked to build an iOS app, something I had no experience in at all. In characteristic stubbornness and to satisfy my curiosity I said yes and set about learning this weird language called Objective-C, all while working out how the iOS platform ticked.
Much to my surprise the app flow felt remarkably similar to what I was used to in Android land. View Controllers had lifecycle callbacks similar to Activities and Fragments, there was a Interface Builder that let you drag and drop UI components, you can magically hook it up to your code by dragging the component into your class.
No messing with XML, just the annoyance of having to work out where to put those square brackets to send Objective-C messages.
I feel having this shared knowledge is one of the best things I possess and take it upon myself to inspire others to do the same, whether that is a casual chat with other engineers or speaking at conferences.
Watching Two Worlds Merge
One of the questions I often get asked when I tell people I develop for Android and iOS is what is my favourite platform to work with. It’s one I’ve eternally battled with and failed to give an answer for. I now feel the question is becoming irrelevant as the two platforms have both in time introduced similar solutions to shared problems.
Android now require users to explicitly grant apps permission to use certain features of a device. A feature iOS has had for a long time.
iOS in time introduced the ability for developers to create custom keyboards for users to use, something Android has allowed developers to do since the early days.
iOS introduced the idea of App Extensions to expose an apps features for use by other apps. In Android we know these as Intents and are old as the platform themselves.
The Ever Curious Engineer
All these shared solutions have one benefit for an engineer. It’s familiar ground in an unseen city, there are some streets that are unknown to you, but at least you have a base to work from and slowly become familiar with the unknown.
This is what every Mobile Engineer should consider when wondering to take the leap and learn their respective opposite platform. The knowledge and experience you possess is invaluable to help you become comfortable in a new and exciting mobile world, it always will.
A place to start would be to check out this excellent blog post over at Savvy Apps. They’ve picked up on the trends and wrote up on the technical aspects of what is similar between the two platforms.
The Android developers website also contains a lot of great beginner content for you to sink your teeth into if you want something more structured.
Finally and shamelessly I’d recommend the Ray Wenderlich site for their ever increasing amount of Android content that is coming through. I am part of the Android team helping to create some brilliant tutorials for your enjoyment and we are always happy to help out if you get stuck where we can.
So what are you waiting for? Go play with something new!