Android SDK experts and Mobiletuts+ columnists Shane Conder and Lauren Darcey talk about their experiences in mobile development and offer advice for those breaking into the industry. A must read for aspiring Android developers!
Q Tell us a bit about your background. How did you get started with programming in general, and how did you first become interested in mobile development specifically?
LED: We are both geeks at heart, having started programming long before we got driver’s licenses and knew we wanted to study computer science. We actually met in a technical writing for computer engineering class at the University of California, which we both attended. We graduated just before the tech bubble burst and found jobs in the Silicon Valley.
SAC: Indeed, my first programming was very early on with Logo and then later with BASIC. By high school, where I had some Pascal classes, I was teaching myself x86 assembly and C at home. This made Computer Science an obvious choice in college. I've always liked small electronic gadgets, so mobile development was also an obvious choice for me, though that didn't shield me from plenty of server and enterprise work.
LED: Our first real mobile app development experience was with BREW. Later on, we branched out onto other platforms. Shane is a gadget guy for sure, but I’m more obsessed with app ideas. I’ve kept a journal of app ideas for over a decade and the list just keeps getting longer. There’s just not enough time to develop them all!
QWhen did you first hear about Android, and what about the platform made you decide to master the SDK?
LED:Having developed for major mobile platforms in the past, we both recognized the new opportunities that Android had to offer. The synergy between Android and Google as its patron were too good to pass up.
SAC: The fact that it was Java instead of Objective-C and the tools could run on Windows, Mac, or Linux didn’t hurt either. I have followed mobile news for quite some time now. I heard about Android basically when Google announced it. Our first Android development book was written before any Android devices were available -long before the Android 1.0 SDK came out.
Q What advice do you have for someone who is just beginning to learn mobile development?
Take the time to become comfortable with the platform.
LED: Don’t underestimate what it takes to write a killer app. Sure, there are those stories about the kid whipping out an app in a weekend from their garage (or playpen?), but that’s not the way 99.99% of apps are developed. The rest of us spend a lot of time and effort designing, developing, testing and publishing apps--in this way, it’s little different than writing apps for desktops or servers.
SAC: You need a solid understanding of the programming language (Java, if you’re developing for Android). Take the time to become comfortable with the platform. Learn about the app lifecycle. The lingo. If you aren't a developer, I recommend learning some programming basics, at least. As Laurie says, there are those stories... They are stories because they are simple not the norm.
LED: Oh yeah, and get yourself an Android device to test on. We've seen a lot of newbies trying to develop Android apps without owning a single Android device. What's up with that?
Q When first learning Android development, what obstacles or concepts do people seem to have the most difficulty with? Any hints on overcoming them?
LED: Oftentimes, developers have already written an app for another platform like iOS and are now learning Android in order to port the app to a new platform. My advice here is: respect platform differences. If you’re writing an Android app, write an Android app. If you’re writing an iPhone app, write an iOS app. If you’re targeting both platforms, understand that the underlying platform architecture, user interface paradigms and the users themselves are subtly different and expect different user experiences.
SAC: Each mobile platform has its own lingo. It’s tempting just to jump in with the samples and brute-force your app idea into existence. But this usually comes back to haunt you later. Take the time to learn the platform lingo. Understand what an Activity is, what an Intent is. We talk about these concepts in our books as well as our online tutorials and articles.
Q What Android open-source projects do you find most helpful?
Curious how Google did some Live Wallpapers? The source is all open available to see, learn from, and even use.
SAC: Well, the obvious most useful open source project is the Android Open Source Project (usually referred to as AOSP). Seeing how various parts of Android were put together can be useful for developing your own apps. Curious how Google did some Live Wallpapers? The source is all open available to see, learn from, and even use.
If you make HTML5 apps for mobile, the PhoneGap project is invaluable, both to use and learn from. I also like simply searching on open source hosting platforms, such as Google Code, for Android related projects.
LED: I agree with Shane. In addition to open-source projects, don’t forget the Android online community. There is a thriving group of developers online that are happy to help out when you run into trouble or have a question.
Q Are there any commercial software licenses or tools that you've found especially helpful in your projects?
LED: We definitely prefer to use the excellent free tools available for Android development, such as Eclipse and the Android SDK tools. That said, some things can be worth paying for, like a good bug tracking system, a good source control system, etc. As for other fees you may choose to incur as an Android developer, you’ll want to consider the Amazon App Developer program, which has a yearly fee.
SAC: Most of your Android development budget will probably go toward devices and services associated with them. If your apps are including special features or stock code/services that you don't want to write yourself, you may want to leverage and license code from a repository like Code Canyon (https://codecanyon.net/category/mobile/android). We even have some code for sale there! :)
Q Each new year brings with it exciting new hardware. Are there any upcoming devices or accessories that you're specifically anticipating in 2012?
I'm hoping to see more cross-device functionality. Tablets interconnecting with phones. Phones interconnecting with TVs.
LED: The new hardware never ends with Android. There’s always some new device out there. We’ve been enjoying working with the Kindle Fire from Amazon and the Galaxy Nexus is pretty sweet. I am curious what will happen with Google TV this year.
SAC: I’m curious what people will do with the Android ADK (Accessory Development Kit). It's been available since Google IO 2010 yet little has been seen or heard about it since.
I'm anticipating quad core devices with better graphics and (hopefully) longer battery life. The Asus Transformer Prime may not feel old and clunky by the end of the year, but it shouldn't be the top device, by any means. I'm hoping to see more cross-device functionality. Tablets interconnecting with phones. Phones interconnecting with TVs. More crossover devices, like the Motorola Atrix and Asus Transformer tablets that become netbooks. With faster processors, this sort of device will begin pushing out the low end laptops.
Q While you’re experts in Android development, you've worked with a large number of other SDKs and mobile platforms as well. In your opinion, how does Android platform development compare with, say, the iOS or BlackBerry?
You don’t have to cater to or be approved by anyone but your users.
LED: We’ve both got a lot of experience developing commercial-grade applications, from enterprise server antivirus solutions to MMS clients and dozens of mobile apps. We’ve written apps for iOS, BlackBerry, Palm, BREW, J2ME, Windows Mobile and more, not to mention mobile web apps. Developing for Android is similar to other platforms and unique in its own way. Developing an app for Android still requires the same sort of software process and organization as does any other platform, mobile or otherwise. And at the end of the day, most important features are available on all the competing mobile platforms...there is no “best”. These days, you’ve got to support them all to reach your users.
Sure Android is touted as open and free, but my favorite thing about Android is that it’s accessible. You’re writing code in a well-established programming language (i.e. Java) and using familiar tools like Eclipse. The tools and SDK are free and easy to acquire. The information out there (e.g. books, tutorials, forums, etc) is widely available and constantly improving. And perhaps what makes Android especially different from competing platforms really becomes clear at publication time: no walled gardens, you can develop and publish any Android app you want. You don’t have to cater to or be approved by anyone but your users. You can interact with them directly.
Q The applications in stores today tend to fall into three main business models: ad-based (e.g. free app content supported by advertising), freemium (e.g. some free content with paid premium features), and pay-to-download. Of these, which has had the most success with the applications that you've developed? Do you prefer one over the others?
LED: We do a lot of mobile consulting work. Our clients have different goals and definitions of success when it comes to their mobile apps. It really comes down to why you’re developing an app.
Hook users by having them invest some time in the game and then they will be happy to pay a little extra for premium features.
Some just want to provide mobile extensions of their existing brands--these clients aren’t out to make a lot of money, but they want a lot of users. For this type of client, free apps (or apps for existing users who pay for other services they offer) are the way to go. The same applies to public service apps.
In terms of traditional app development, we’ve seen freemium work very well now that it’s well established with users and marketplaces-- especially for games using Android Market’s in-app billing APIs. Hook users by having them invest some time in the game and then they will be happy to pay a little extra for premium features. The success of apps like FarmVille have caused more clients to take this road in recent days.
SAC: Freemium is definitely a great model. It has proven to work really well with all forms of games. However, some apps either don't lend themselves well to many new purchases or contain content that is traditionally free. These apps are monetized best with ads. However, it only really works well if the ads are well targeted to the audience and unobtrusive.
Q You're both chairing the Voices That Matter: Android Developer Conference in February. Which talks on the schedule are you looking forward to attending the most?
All the speakers are fantastic
LED: Putting together this conference has been an exciting experience. All the speakers are fantastic and I’m glad we are going with a single track so I don’t have to choose which talks to attend-I can attend them all! I can say that Dan Galpin’s talks are always very entertaining--he’s a natural thespian (and a developer advocate at Google).
SAC: I agree with Lauren. The single track experience means I won't have to miss anything. I'm always interested to see what others have to say about topics I'm interested in, such as Android Game Programming with Rick Rogers, Android Graphics in Action with Chet Haase and Romain Guy, and Augmented Reality with Chris Haseman.
Q You will be presenting a full-day Android Bootcamp on February 8th, correct? What can those who attend expect?
LED: That’s right! The VTM conference is geared toward more skilled and experienced mobile developers, but we wanted to be able to include those interested in getting started with the platform as well. That’s why we decided to add a bootcamp just before the conference. We’ll be starting from the ground up--installing the latest tools, writing some simple apps, and getting people comfortable with the platform lingo.
SAC: There will be handy cheat sheet handouts, book giveaways, and no homework! Our goal is to have everyone's development laptops configured and working for Android development by the end of the session. We'll also guide everyone through writing their first app and loading it on a device. So, yeah, come with a laptop, a device, and a cable to connect them. Oh, and about that "no homework" bit... your homework, should you choose to accept it, will be to write an awesome app, publish it, and tell us about it. You have as long as you need. :)
Q Last question. For those who are just getting started with Android but have some prior programming experience, what books, videos, and web sites do you recommend they research?
LED: Well, gee. Let’s see.
First stop: Download and install the Android SDK and tools from http://developer.android.com.
Next step: Get started!
Brush up on your Java: Check out our Learn Java for Android series on MobileTuts http://mobile.tutsplus.com/series/learn-java-android-development/
Ready for tutorials? Check out the many Android tutorials on Mobiletuts+ -- divided into beginner, intermediate, and advanced skill levels: http://mobile.tutsplus.com/category/tutorials/android/.
Get stuck? Check out Stack Overflow to see if someone has already solved your problem. If not, post a question.
The Android Developer team has put together some great videos for visual learners.
You can find our full publication list of books and articles on Android app development here: http://androidbook.blogspot.com/p/full-publication-list.html.
Do you want to be interviewed for a Mobiletuts+ Developer Post?
Are you a developer with an interesting mobile application or company? An interview with Mobiletuts+ is a great way to spread the word about your apps while providing valuable knowledge to our community. If you are a developer interested in being interviewed by Mobiletuts+, contact us online or via twitter (@envatomobile).