Main image of article Finding Your Way: Mastering Android and iOS

Mobile development is hot right now, and while most companies want developers that are strong in either Android or iOS, they seem to love those that are exposed to both. As developers, we all want to focus on the “coolest” thing that allows us to make the most money. And being human, we want the easiest route. So, where do you start, assuming your company has not already decided that for you? When I first looked at mobile I had to decide which OS flavor I wanted to focus on. I had a very strong background in C/C++ and C#, but had also worked on a lot of flex projects using ActionScript (similar to Java in some ways). I looked at what languages and IDE (Integrated Development Environment) were used for Android, iOS and Windows Phone (marked it off my list because there was not much of a market at the time).

Heading Down the Android Path

Android uses Java and iOS uses Objective-C and both have a number of great tools to work with, along with a good IDE for each: Eclipse and Xcode. With a strong background in C/C++, my first thought was to dive right into iOS because I thought I could hit the ground running. However, when I opened the IDE and started to create my first application, I quickly realized something was wrong. Where did this funky syntax of wrapping commands in brackets (‘[‘ ‘]’) come from? Well, after reading a little, I realized that Objective-C is a hybrid of SmallTalk and C/C++ and at the time it looked Greek to me. I quickly turned to Android and Java to calm my nerves. Time passed, and I had many Android applications published on Google Play and Amazon. I learned to love so many wonderful Android features not found on iOS, such as Live Wallpaper and simple Bluetooth data reading (Bluetooth is available on iOS but you have to do some interesting things to read scientific data and still get the app published on the Apple App Store — that's a later article). However, I was still being asked about developing for iOS.

Detouring toward iOS

I approached iOS a little differently this time. I did a complete deep dive into Objective-C and Xcode. I also thought the best way to learn something new was to convert an existing Android app to iOS. So, I identified what I remembered to be the most challenging part of the Android code and built small test cases for the same in iOS so that I knew I could convert the application as a whole. My biggest challenge was not Objective-C, which I have come to love, but Xcode and wiring up controls and events. In Android, I had to do all the work myself and at first, using Xcode, could not figure out how my instance variables were communicating with my controls and how to wire in my events and update the screen. After a little digging I realized how simple it really is and how much time it saves once you get familiar with Xcode. Just like the flow of water, I took the path of least resistance and went toward Android first. If you have never coded before or have little experience in coding, then working with iOS is a great place to start. However, if you’re seasoned and impatient (like me), then Android is a good place to get started quickly. Both environments are great, and I’m sure you will come to love working with each as I have.