Learning Native Mobile Application Development
It has been a few weeks since I last blogged about Flash, recent Adobe announcements, and my departure from Adobe. Over the last few weeks I have been doing a lot of research and thinking into what my next steps are and what I wanted to focus on. I knew that I wanted to learn something new, but didn’t know which direction to go.
A few months ago, when I changed roles at Adobe to become a web community manager, I wanted to shift my focus onto mobile and tablet user experience design and development. I have always been more fascinated by applications than websites, probably because of the ability to tie directly to the computer or device and create something very immersive. Adobe AIR is a great technology to go to multiple devices; however, there is a “normalization tax” you have to pay to get this. While the costs of developing are reduced through having a largely reusable code base, the user experience needs to be homogeneous across the devices, plus it needs to be custom designed from scratch. Apple, Google and Microsoft have spent millions of dollars of research, design and usability testing into their components and user interface design. I wanted to harness this more and create applications that look and feel more like the native ecosystems that they were on. My first step was to play with Titanium from Appcelerator. It provides a JavaScript API for building applications using native components across platforms. The technology is very cool and you can quickly create native applications that look and feel like the rest of the OS, but there is still a lot of branching of code to provide the exact user experience for the platform. So I decided to dive head first.
It’s time to learn native development.
Now, I have been an ActionScript and JavaScript person for over ten years, so the thought of starting over and learning native app development felt very daunting and overwhelming. But after doing some research, I found that my understanding of the fundamentals of how ActionScript works makes it much easier to learn native development. It is like learning a spoken language. If you learn Spanish, you understand how to conjugate verbs, how to work with feminine, masculine or neutral nouns and how to construct sentences, commands or questions. The vocabulary or syntax build on these basic fundamental items. After learning Spanish, you can make the jump to Italian, French, or Portuguese with a lot less difficulty than it took you to originally learn Spanish. The same applies to computer languages. Learning the fundamentals of ActionScript makes it much easier to learn Java, Objective-C, or C#. The concepts are the same, but the syntax is a little different. This is one reason why when I teach ActionScript I teach HOW the language works, and not just run through a bunch of code snippets. Knowing these fundamentals allow you to transfer these skills to other languages, which in this industry is a huge advantage to have.
So I have been working with a number of books that have been teaching me about my three favorite mobile and tablet platforms: Android, iOS and Windows Phone.
I like to learn in multiple ways…I go back and forth between video based training and written books. For topics like programming, I tend to prefer written books since it forces me to type and code to see the progress that happens in the book. I find it is too easy for me to watch the video, miss a step and then just watch the video through instead of stepping backwards and finding where I took a mis-step. When it comes to books, I am pretty mobile, so carrying around bunch of heavy programming books gets cumbersome. Also, when it comes to tech books, after a year the books can become dated and take up a lot of space, so I became a subscriber to Safari Books Online and use the iPad app. You get thousands of tech books and they are easy to work with in the iPad app.
In addition to learning how to author apps for these platforms (and hopefully make a buck or two), I wanted to see how the various authors that are teaching each platform start a user out at the beginning first steps to help define how I can teach these platforms in the classroom. I love teaching and would love to cover classes around these ecosystems in the coming future and seeing how different people introduce topics like application lifecycle, workflow, best practices, and other topics is helpful to know more about the platform.
I have been jumping first into Android, but I hope to go through all three of the platforms in time. Here is the book lineup that I have decided to go with:
Android
I wanted to start with Android. I have heard that Java is very similar to ActionScript in many ways and thought it was a good place to start. I have been working with the following book:
Sams Teach Yourself Android Application Development in 24 Hours, Second Edition; Lauren Darcey and Shane Conder
iOS
Clearly iOS is the most dominant platform in terms of app sales, so that was next on the list. I have heard that Objective-C is quite a bit different in terms of syntax than other C-style languages, so I wanted to start more at the basics and see where the path goes. I decided to go with this book:
iOS SDK Programming: A Beginner’s Guide; James Brannan and Blake Ward
Windows, Windows Phone and XBOX
I have a Windows Phone. I love my Windows Phone. I want to make apps for my Windows Phone. Clearly Microsoft is pushing big for Windows Phone, but when combined with Windows 8 and the XBOX 360 console, it is a pretty powerful ecosystem to author for. I decided to try and learn all of them, but start with the desktop first. I noticed that a lot of Windows Phone books ask that you already know C#, so I got a basic C# book to start, then cover Windows Phone, then dive into XBOX 360:
Stephen’s C# Programming with Visual Studio 2010 24-Hour Trainer; Rod Stephens
Windows Phone 7 Application Development 24-Hour Trainer; Brian Faucher
Microsoft XNA Game Studio 4.0; Rob Miles
Wrap-up
So with all of that, I have a lot of reading (and coding!) to do over the next few weeks. I really am excited about learning something new—and to do something that is purposefully not Adobe to try and fully immerse myself within mobile.
I’ll provide more information along the way on how I’m doing with all of this training. For now, it’s off to Android and Java!



Pretty ambitious to try to learn all three mobile platforms in a few weeks.
I’m always up for a challenge.
Interesting that now your away from Adobe’s job shackles you’re moving away from Air so quickly. Good luck!
Still love AIR…but wanted to go into the deep end and really learn more about the tools and ecosystem at a deeper level…
Right on! I’m basically following the same path as you are but going the route of HTML5/CSS/JS for PhoneGap and then iOS. I’m excited about the new possiblities!
I agree with your paradigm of learning…HOW the coding work as opposed to what the syntax and key words are.
Thanks for the clear, encouraging post!
Everytime I think about jumping into app development I start to cringe because there is soo much to do! I never know where to start! You have a good approach and I think I will try the same. Thanks a lot for clearing things up a little more!