This self study guide is for the independent learner who wants to pick up Android development in 2017. It’s composed of mostly free online resources. This page is a list of reading material that I and many others recommend. Use this if you do not want to fiddle around sketchy “how to” websites. I consider this a great alternative to Udacity’s Android Nanodegree Program!

Complete Beginner

You should start here if you barely written any code before. The main language to learn for Android is Java. Personally, I don’t think one needs to learn some Computer Science-y curriculum at this level. A good resource to learn basic Java is to do the course on Codecademy.

Fair bit of warning: I personally haven’t done their Java course. I knew Java from university. However, I have done their JavaScript and Python courses for fun. Their courses helped me know enough of both languages to get by.

With a bit of perseverance, you should be able to finish this course in a couple of days. You are now ready to learn Android development! Don’t forget to download Android Studio from the official website, this will be the program you use to write Android apps.

Programmer, with no Android Development Knowledge

If you already write code in some other language, Java should be easy to pick up. I suggest to just jump straight into learning the Android framework by making small projects.

If you want a guided track into writing Android apps, I highly recommend buying Android Programming: The Big Nerd Ranch Guide. It eases you into Android by introducing common components, showing very clear code samples, explaining the why’s of things in a simple manner, and by forcing you to write code! Even as a professional, I keep finding new things in this book to help me in my day job. The best part of this book is that it introduces some good practices like how to handle orientation changes, localization, and how to optimize loading times.

This is the book that got me and a lot of other people into Android Development.

Highly recommend to read this book cover to cover. Do each of the projects and challenges at the end of each chapter.

For people that don’t like books and prefer videos, Derek Banas has a solid playlist of beginning Android. I didn’t watch all this videos, but ones that I’ve watched have been helpful. These videos are a little outdated, but can still be useful.

After reading the Big Nerd Ranch guide or watching Derek Banas’ videos, then you are now a..

Programmer with a bit of Android, but want to learn more applicable things for a job

Now that you know the basics of Android, ask yourself: Do you want to create apps that work well while keeping users happy? Or perhaps you want to add more value to your day job? Or maybe you really want to impress at your next interview?

If you said yes to at least one of these, then keep reading.

You should start this adventure with a bang, by watching Google’s Android Performance Patterns Youtube playlist. Here you will explore how you could make your app work better, faster, and learn how stuff happens under the hood! Each video is ~5 minutes short, and is packed with information. It helps that the instructors are very lively and engaging. I personally think that the stuff in this playlist make good (and challenging!) interview questions. You’ll find that a bunch of the concepts they introduce like caching, prefetching, and memory management are quite applicable to iOS and web development as well.

CodePath maintains a BIG list of notes for Android developers of various levels. I am not a fan of using their notes at the beginner level. I think they have some awesome stuff for the intermediate Android programmer, like their guides on testing and common libraries that are used in professional environments.

You should also checkout Google’s guides to debugging. At the very least you should learn how to use breakpoints and read system logs on Android Studio. It’s also nice to know how to work around DDMS, which will help you understand the state of the device you are testing on. Definitely read up on how to track memory allocation, view network traffic, spoofing calls and GPS.

At this level, you should be more than good enough to find a job developing Android apps. There’s always something to learn and people around you will always know more, so don’t worry about not knowing enough.


  1. Learn Java
  2. Learn How to Make Android Apps
  3. Learn How to Make Better Android Apps
  4. Learn Common Tools to Make Awesome Android Apps
  5. Learn to Debug Android Apps

Feel free to ask anything about these resources! If you have any suggestions for learning material, don’t hesitate to email me at