How I became a self-taught Android Developer

Photo by Trent Erwin on Unsplash

I have been interested in programming and tech for a while, but building a professional career in this field with my Psychology Degree and HR background seemed to me as almost impossible. A couple of years ago I finally asked myself — what if I can do this even without Computer Science Degree?

There are lots of ways to learn programming, and everyone has their own unique path. Here I am going to share some tips based solely on my experience.

Create a learning plan

How long does it take?

It took me 3 years from the idea to become a Software Developer to my first job offer. Though I believe it is completely possible to go through the same path in 6 months. Everyone is different and timing depends on the circumstances and how many hours you are able to dedicate to the learning process. I decided to make a switch while taking full-time care of an extra-active toddler, and some weeks were just too tiring, to say the least. The goals should be realistic so it’s better to take your time, no need to put too much pressure on yourself.

First, come up with a weekly number of hours you can dedicate to learning and try to stick to it. I used to study 1–2 hours every evening and 4–5 hours on Sunday. It is hard to lose almost all of your free time, but consider it as a temporary sacrifice on a way to achieve your goal.

Choose topics you need to cover and try to create a learning plan involving online courses, books and articles.

Though it is important to follow this plan, some concepts might get really boring. If you feel like the interest is lost and you are constantly fighting with yourself to continue learning, try some other subject. You can come back to the skipped part later. Follow your curiosity! It will help you to stay motivated.

Here is my roadmap to becoming Android Developer:

General understanding of Computer Science

So I’ve decided to become a Software Developer. But I didn’t know anything about programming languages and Computer Science, except some basic knowledge of Pascal and HTML I’ve got from High School.

I started to look for some Introduction to Computer Science course and decided to go with Harvard CS50. I still consider this course the best, mostly because of the brilliant professor David J. Malan. But there are plenty of other great courses and books out there that can help you choose the right language and understand how computers and programming work.

Basic Android Development

If you have chosen Android Development as I had, the best way to learn is by exploring materials created by Google itself. Over the last couple of years, they published lots of great courses and codelabs. This page is the best place to start: https://developer.android.com/courses/

If you prefer videos over articles try this Google-Udacity collaboration: https://www.udacity.com/google. They offer great Nanodegree Programs with mentorship and code reviews. But if you have limited resources it’s possible to pass the same online courses for free as I did. Open the program's syllabus to see which courses are included and pass them one by one.

Udacity Android Basics Courses

Kotlin, Java and Object-oriented programming

I started out with Java because in 2018 most Android courses and code samples were still written in Java.

In 2019 Android Development became Kotlin-first, which means it is Google’s recommended language to build Android apps. So now all the examples are written in Kotlin, and this is the main language every new Android Developer should learn.

After you have built your first apps with Android Basic courses, it’s a great idea to learn Kotlin better. Finish some Kotlin courses that you like (for example this, this or this) and/or read books if you prefer. Look into OOP concepts if they are not mentioned in the course of your choice.

The main question remaining — should you learn Java if Kotlin is the recommended language? In my opinion, it is important to at least understand Java syntax and be able to read Java code. Many apps are still using Java, so there is a high probability to encounter it at your job.

Git and GitHub

Git is a version control tool that lets you collaborate with other developers and store and track versions of your code. Learning how to use Git is very important and you can find lots of tutorials online. I highly recommend starting using Git as soon as you are ready to write your first app. GitHub is one of the most popular hostings for your Git repositories. Just create a repository on GitHub and start committing changes.

Basic Terminal Usage

The command-line is used to enter commands to the operating system, instead of a graphical user interface (GUI). You might use GUI and it’s completely fine, but getting knowledge of how it works is important.

Algorithms and data structures

I know, they might seem intimidating. But even if you don’t need to prepare algorithms and data structures implementations for the interview, you should at least understand what they do and when to use them.

What about Associate Android Developer Certification?

I decided to get this Certificate to prove my skills as an entry-level Android developer. The exam lasted 8 hours and consisted of a coding project and a short exit interview. I can’t say if it helped me get a job, but I definitely started to feel more confident after passing the exam successfully.

Write your apps!

You went through the tutorials, created apps with step-by-step guides and learned the basics. It’s about time to create your own apps because this is undoubtedly the best way to learn. It shouldn’t be anything difficult, start simple. Popular examples are todo app, image browsing app or timer. Use Google guides and documentation for code snippets and best practices, search solutions online when you are stuck. Even if you have never encountered StackOverflow.com before, you will be using it a lot.

Connect with the community and find your mentor

I can’t stress enough the importance of this step. Try to attend meetups and conferences in your area or online events and meet developers. There are lots of people who are willing to help and share their valuable experience. Eventually, you will find someone ready to reply to your questions or sometimes even help you to find your first job. It shouldn’t be an official “Will you be my mentor?” situation. You could also reach out to other Software Developers directly via social networks.

Read about the latest trends in Android Development

Here are some good resources to begin with:

Looking for your first job

So how to know when you are ready to apply? Well… It’s impossible to learn everything and while you are learning, new recommended libraries keep emerging. The truth is, the learning process never ends and even experienced developers with CS Degrees have to deal with imposter syndrome. If you have doubts about whether you are ready or not, there is no harm in trying! Here are some steps to get you started:

  • Browse through the job requirements and try to use mentioned libraries in your apps (for example Retrofit and Dagger)
  • Create your app portfolio on GitHub or another public Git hosting website so your future employer can take a look at your code. Don’t forget to add tech stack and screenshots of all the screens into ReadMe file. Some hiring managers will only look at your ReadMe and overall project structure. Actually, my portfolio was the reason why I wasn’t given a take-home task or coding problems during the tech interview. So make it work for you!
  • Polish your LinkedIn profile, add Android Developer title and your skills there. That’s how my first employer found me! Twitter might also be helpful, so create an account if you haven’t done so already, and mention that you are Android Developer.
  • Create a resume. If your previous experience is not relevant to software development as it was in my case, don’t describe it too broadly. As a self-taught developer, your best resume is your apps.
  • Believe in yourself. Though sometimes it might seem impossible to find an entry-level job — don’t give up!

Preparing for the Interview

Yay, the company contacted you and they want to arrange an interview!

First of all, breathe. People are anxious and intimidated by this process even if they have an experience, it’s completely normal. All you can do now is to prepare for the interview as much as you can.

There are different types of tech interviews. It might be anything from Android basics and take-home assignment to Leetcode and HackerRank problems. My main tip would be to explore Glassdoor interview section of the companies you are applying to. It will give you the main idea about their questions and how you can start preparing. Also if the recruiter contacted you they would usually describe the next steps of the interview process and the types of questions you will be getting during the tech round.

Other useful links:

Cracking the Coding Interview book https://www.crackingthecodinginterview.com/

Android interview questions https://www.raywenderlich.com/11107559-android-interview-questions-and-answers

Google guides and core topics https://developer.android.com/guide/components/fundamentals

I hope we will be seeing more and more self-taught Android developers building their career in tech.

Feel free to reach out on Twitter if you have any questions.

Android Developer