Android Development: Awesome Resources for Beginners

Both free and paid

I recently released a book aimed squarely at people that wanted to get started with Android development.

After releasing it, I visited r/learnprogramming to give away five copies of the book and soon had people thanking me for the book but also bemoaning the (supposed) lack of good resources for beginners on the web.

I couldn’t disagree more: I think that’s there’s a boatload of awesome resources on the web aimed at Android beginners (both free and paid), so I went ahead and promised to make a list of my favorite resources.

Here we go!

Free

Java

Before you go ahead and try to learn the Android SDK, it helps to have a good knowledge of the Java programming language. If you go on YouTube and search for “Java for beginners”, you’ll get a ton of results.

Filtering through those can be a chore, so let me help you with that: the ones you want to watch are

Derek Banas’s Java Programming (AKA Learn Java in 30 minutes, which is a tall order) John Purcell’s (AKA caveofprogramming) Java for Complete Beginners

Now, I’m not suggesting that you should watch both, although go ahead and do if you want. It can’t hurt, unless you are being chased by a xenomorph while you’re watching. In that case, it’ll definitely hurt.

Watch Derek Banas’s 30-minute video if you already have some experience in other programming languages. The video is meant for people that already have some experience with conditional statements, loops etc. in other languages.

If you have never done any programming before, watch John Purcell’s series of videos. It’ll explain everything in great detail.

There’s another Java course that you won’t find on YouTube. For this one, you have to go to Udacity’s site and sign up to be able to watch Intro to Java Programming.

Finally, there’s a great Java guide over at WikiBooks that I couldn’t recommend more.

Now, you don’t need to learn everything about Java to be able to create Android apps. I suggest that you focus on the following subjects

Basic syntax

Flow control (conditional statements, for- and while-loops)

The basics of Object Oriented Programming (classes, objects, methods, inheritance and polymorphism)

The Java type system

Generics! Generics! Generics! And the Java Collection Framework. Lists, Sets and Maps need to be your friends. So many apps work by presenting sets of data to the user that you’ll be using Collections very often

Interfaces

Exceptions and try/catch blocks

The basics of Threads and Runnables

These should have you covered.

Android

Learning Java is only the first step in creating Android apps. You then have to get familiar with the Android SDK (Software Development Kit).

When developing Android apps, you’ll be mainly using Java and XML. I say mainly because the Gradle build system uses Groovy, the NDK (Native Development Kit) uses C/C++ and AIDL (Android Interface Definition Language) uses… something.

The thing is, you won’t have any use for the NDK or the AIDL when you’re a beginner (or ever) and knowledge of Groovy is not necessary since what you’ll be doing with Gradle is mostly copying & pasting lines of code in a file called build.gradle.

XML (Extensible Markup Language) is a markup language. This means that it is meant to describe things, not define how they work. If you’ve ever done any web programming (even basic stuff), you must have used HTML. In HTML, when you want to display a paragraph on screen, you use a paragraph element, like this

<p>This is a paragraph</p>

This is simply declarative: you show something. If you want to change the content of the paragraph according to some condition or something downloaded from a server, you will probably use JavaScript or PHP.

XML is a lot like HTML in that it’s what you’ll be using to create your user interface: you’ll be using it to place various elements, like TextViews, ImageViews and EditTexts on screen.

XML is a huge subject and you’ll find lots of info about it on the web, including the aforementioned WikiBooks site. However, you will only need a small subset of XML to work on Android apps.

For an adequate introduction to XML in Android, my book Android Development for Gifted Primates should suffice.

I know, I know: “that was the most shameless plug I’ve ever seen. I’m leaving this shitshow!”. But wait — what if I told you that you can get a big chunk of the book mailed to you for free by entering your e-mail address below? This free sample contains a lot of info about XML usage, and it’s specific to Android development. You’re welcome.

There a couple of really good free Android tutorials on YouTube. Again, if you go looking by simply doing a search, you’ll be bombarded with choices, so allow me to suggest a couple of great ones

The New Boston: this is amazing. Very informative, fun and clearly-explained slidenerd: another hero of mine. A huge playlist of tutorials, aimed at beginners. You may have some trouble with the accent at first but you’ll get used to it after a while. The best I can describe the accent is “Arnold Schwarzenegger if he was Indian. And tech-badass, if that was a thing”.

You can also put that Udacity account (you have hopefully created by now) to good use by checking out their Android Development for Beginners course and their Android Basics series, which include

Finally, John Purcell (what a guy!) has a free Android course for beginners on his site caveofprogramming.com but you’ll have to create an account to watch it. Small price to pay for the sheer awesomeness on display.

Paid

Java

I won’t be suggesting any paid Java resources since the free stuff should have you covered. However, if you want to learn more about Java, Joshua Bloch’s Effective Java 2nd Edition is indispensible.

Also, if you want to get into good habits early on, Head-First Design Patterns will teach you some very useful idioms usually used in Java programming.

Android

There’s two places that you can find great content at great prices: Udemy and Team Treehouse.

Let’s start with Team Treehouse: you’ll have to pay a monthly subscription of $25 for the basic plan (which includes a lot) but it’s definitely worth it.

A great feature on Team Treehouse is Tracks: There is a Beginner and an Intermediate track that will guide you through the process of learning Android development by suggesting a set order in which to take the various sub-tutorials on the site. Think of them as a set menu in a restaurant, only Less Delicious But More Nutricious™. I missed my calling as a marketer.

Another perk! If you create an account at TeamTreehouse, you’ll also have access to their Java tutorials!

Similarly to YouTube, if you go at Udemy and search for “android development”, you’ll get so many suggestions you won’t know where to start. So, in true “I’m awesome” fashion, here are my suggestions

A tip: some courses on Udemy cost quite a bit but there are very frequent discounts on the site. You can also install a Chrome extension called Honey, which will apply coupon codes automatically to give you the biggest discount available at the time.

I was bummed out to find out that LearnByTheByte’s awesome four-part tutorial on Android development was pulled from Udemy (and their own site) because that one was fantastic. At least I managed to track this down on YouTube , which is something I guess (part I of their tutorials).

Finally, I’d like to suggest some Android development books that won’t confuse beginners

Barry Burd’s Android Application Development All-in-One For Dummies. Barry has a friendly, approachable writing style that I enjoyed immensely.

Big Nerd Ranch’s Android Programming is a very cool guide, that is easy to read but goes into considerable depth later in the book

Later on, you might like to check out The Busy Coder’s Guide to Android Development, which is huge and exhaustive and something that I think any serious Android developer should have in their arsenal.

Android User Interface Design by Ian Clifton is another book you should take a look at later on. Another favorite of mine is Android Programming: Pushing the Limits but, again, bookmark it and check it out once you’ve created a couple of apps first.

And that’s it! Comment below if you need to ask me anything. Thanks for reading.