Android alien in front of a beach image

Learning any new technology can be a challenging and frustrating task. When I first started learning Android development, I spent a lot of time reading the official documentation provided by Google, and following various tutorials over and over again, trying to memorize all the syntax. After a while, I realised that this was a complete waste of time. The fastest way to learn anything is by doing. I know you probably hear that all the time, but it’s as true in software development as it is anywhere else.

In this article, I’ll explain some of the lessons I learned on my journey to becoming proficient in Android development, and the critical steps I took when starting to build my first app.

What do I mean by proficient? Well, that definition will be different for everyone. For me it means a solid knowledge base, the confidence to build my own ideas, and a working version of my product in the Google Play store for others use. (As with everything else in life, you’ll find that confidence can sometimes mean everything when it comes to software development.)

This article is aimed at those of you who have a basic understanding of programming but are beginners when it comes to building Android apps. If you’re starting from scratch with zero programming experience, this stuff might be over your head. But fear not. Let us know you’re a beginner in the comments section of this post, and if we get enough requests, we’ll make a post specifically for newbies.

Below are 6 steps to building your first app – the lessons I learned while building mine.

Let’s get started…

1: Read the docs! (Or watch the video)

It may sound cliché but the first step you should take when learning anything is to read the introductory sections of the official documentation. This is especially true when the creators of said technology offer such high quality documentation (such as Google).

My philosophy to learning has always been learn by doing. However, before you can do this, you must try to understand the basic concepts and theory of Android development. The key to getting started is realising the precise moment when you need to put down the documentation and start building. When I first started getting acquainted with Android, I read through all the documentation on the Android website, multiple times. At that time, it was just text based documentation – fairly dry and tedious. Fortunately for you, Google got around to producing an excellent introductory video course, which can be accessed and used for free here.

I recommend you follow the introductory videos and do all of the hands on tasks they recommend. Do this two, three, even four times if needed. You should only stop once you know how to do the basics. These are:

  • How to install Android Studio.
  • How to create your first project.
  • How to create a “Hello World” application.
  • How to customize the interface (using XML layouts).
  • How to switch between different activities.
  • How to take a user input and display an output.
  • How to run and test your app.

If you’re starting Android development from scratch, right now you might be thinking about how overwhelming this list is. My best advice to you is this: Have patience.

Remember, the goal of these first steps is not to become a proficient Android developer overnight. The goal is to learn the basic fundamentals to give you a foundation for you to build upon so you can start working on your own ideas.

Once you have followed the training videos, and have completed the basics above, you are ready for the next step.

2: Build something, anything!

As soon as you know the basics you should be applying this knowledge right away. Do this by coming up with a very simple idea. The key is to keep it dead simple — you aren’t going to pull a Zuckerberg and build Facebook 2.0 immediately after learning Android. Your idea should be simple enough so that it doesn’t involve complicated back-ends or graphics processing.

It also doesn’t need to be something that will make you money, either. It just has to be a very simple idea that you can execute with the basic knowledge of Android development that you’ve learned from the first step.

Can’t think of anything? Here are three ideas that will hopefully show you how simple I want you to make it:

  • A calculator app that allows you to add, subtract, and divide two numbers.
  • A spelling game app that displays words with incorrect spellings and the user has to correct them.
  • “Hello world” in multiple languages (for this you would use Google Translate to find out how to write “Hello World!” in 5 different languages, then the user can press buttons to view it in the language of choice).

When I first started, I built a very simple maths game app called “Math Wars”. In fact, you can still download it here to see what I mean when I say simple.

One Sunday afternoon I set myself the challenge to build this app from scratch. My goal was to not stop until it was done. I went to my local Starbucks on Silicon Roundabout (Old Street, London), and set to work.

I sat down with my latte and before I opened my laptop I started by clarifying exactly what I wanted to build by drawing some basic wire-frames on a piece of paper like this:

Wireframes for building my first Android app

The key here is to not care about how it looks. Make it as simple as possible so realistically you can complete it in a few hours. Notice that my idea had only two screens. (Again, you’re not building Facebook here).

After drawing the basic design (which took no longer than 20 minutes), I opened my Android Studio (it was Eclipse at the time), created the project and set to work. For each feature I made, this was my thought process:

Flowchart How to Start Android Development

It took me around 6 hours to get this app done. After I finished it, I felt a massive sense of accomplishment, which increased my confidence and just made me hungry to learn more. I went home that evening and submitted Math Wars to the Google Play store. If you haven’t done so yet, go check it out and let me know what you think in the reviews.

3: Read the docs (again)

After you’re done building your first basic app, I recommend you go over the documentation again. This might sound like a waste of time, but if you re-read it, you’ll realise just how much you’ve learned during this process. You’ll also get the chance to look at the documentation with a fresh perspective and far more context than when you first set out. Things that didn’t make sense at first will be perfectly clear. You’ll start to understand how things work and why, which will in turn start building your confidence in the language.

Another reason to go through the documentation is that when you’re making your first app, you may not totally understand what you did to get it to work. Kind of like this:

When your code works but you don't know why

Re-reading the documentation gave me a lot of “a-ha” moments and a better understanding of what happened and why things worked. Think of it as coming full-circle in your learning process.

4: Have Patience

The key to learning anything (especially programming) is to have patience. Even if you’re an experienced programmer, it takes time to learn new technologies. I realise just how little I know when I finally jump in and start building things.

The key is to keep on trying, and never, ever give up. Keep building things, keep referring to the documentation and keep trying new creative ways to get things shipped.

5: Document Your Work

One approach that has helped me massively throughout the years has been to keep a personal “codebase” (i.e. database) of code snippets, comments and notes. This will help you get things done quickly as you go.

I like to do this by making plain text files (using notepad or whatever editor you like), and storing them in Google Drive so I can easily search through them. More recently, I’ve been experimenting with putting these on a public Git repository on GitHub. This allows you to easily share your code and get input and feedback from other people on online. (This is also a great way to establish your credentials as a developer, more on this in a future post).

The kinds of things I keep in the codebase are commands and code snippets that I frequently use but are difficult to remember off the top of my head.

Once you’ve invested time in figuring something out, make sure you save it and add comments to detail what you did and how you did it. Over time you will build up a rich library of tips and advice that you can use to figure things out and help others later down the line. Also remember to back up any documentation that you use. Whether it’s from this blog or another website – remember that it might not be online forever. So it’s best to store your own notes and keep an organised record of them. You’ll never know when you’ll need it!

6: Know where (and how) to get help

With Android development specifically, the first port of call for help should be the official documentation supplied by Google. If you don’t understand something or can’t get it to work, make sure you read the documentation over and over until it makes sense to you. If you still don’t understand, then try searching Google for existing tutorials or articles explaining it in a different way.

If after reading the documentation and searching Google you still can’t find the answer, don’t be afraid to ask for help. By far the best resources for getting help off other developers are Stack Overflow (a site you may have already heard of) and IRC (stands for “Internet Relay Chat” and is an old school chat service which is overflowing with knowledgeable experts who are usually more than happy to help).

You can access the Android IRC channel by downloading your favourite IRC Client (I like HexChat because it’s free and works across Windows, Mac OS X and Linux). Once you have downloaded your client, connect to the freenode IRC server: Alternatively, Freenode have a webchat version you can run in your browser. Once connected to the Freenode IRC server, join the #android channel.

Don’t be afraid to ask for help. Over the course of my development career I have asked 67 questions on stack overflow, and too many to count on the various IRC channels. Just remember when asking to be polite and respectful. And don’t forget — even though people are usually happy to help, it’s not required that they do so. (I’ve witnessed many times people coming in to chat rooms demanding help from others. Don’t do that. It’s a jerky thing to do.) 

If you read and follow the above six steps for building your first app, you will be well on your way to becoming an experienced and proficient Android developer. Remember: The fastest way to learn is by doing. The trick is to find the minimal effective dose of documentation and training to give you just enough knowledge to build something tangible. Then have patience and realise that learning is a never-ending process. Give yourself permission to be bad, and give yourself plenty of time to learn.

Keep creating things, keep learning, get involved in the Android development community and finally… Give back – The final stage of learning is teaching others. You will find that nothing cements your knowledge better than teaching it to others.

Thanks for reading. Let me know what you thought of this post in the comments below. And if you want instant access to this type of content why not sign up to my newsletter here? (I’ll send you something once every two weeks).


8 replies
  1. Darshan Gada
    Darshan Gada says:

    Hey mark!
    Amazing article, helped a lot thanks.
    I would really like it if you would make an article about android development for total newbies.
    I have experience with and proficient with languages such as Java, HTML+CSS, and python; but I struggle with android development.
    I have no idea how to take the Java I have learnt in school (to solve programming problems. We used bluejay as a text editor) and use it to build apps. I tried looking up guides online and none of them are very clear.

    • mark
      mark says:

      Thanks for reading the post and taking the time to comment! Yes, I also found it challenging to take the things I learned in education and apply it to the real world. I’m actually planning to make some future content which hopefully will help with that. I aim to get this done in the next few months.

  2. Zinia
    Zinia says:

    Hi Mark! This is my first day here and really liked the way you talk. Not so much as an instructor rather someone who’ve traversed the path I’m taking now (or so I think I am). Any plans for python? That is kind of my favourite thing. Thanks

  3. shubu
    shubu says:

    Hi Mark, lately from 2015 i’ve been developing an ecommerce app my frontend(layouts) is ready but, i’m stucked at a point i.e. what to use for my backend ? I’ve been thinking of Firebase but how to apply the businnes logic?

  4. Djofre Bamo
    Djofre Bamo says:

    Hi! Mark! I liked the 6 tips to start an Android App….. And I liked the idea of reading too much the documentation……

  5. Gregorio
    Gregorio says:

    Great Article Thanks for sharing your thoughts, I am learning the ropes of Android on an android EU Scholarship on Udacity and is great! Yes practicing as you learn is the best method to get those Android concepts on xml layout, style, string and Java to sink in. Also Using GitHub is incredibly useful to store code, sharing it and to save snippets of code as you mentioned.
    I like your 6 point structure I ‘ll implement it in my learning workflow 😉

Comments are closed.