2020 was an interesting year.
We are getting closer to surviving it.
Sadly, so many people had to deal with extra hardship with their jobs. Some even lost their positions because of the pandemic.
I have always been surrounded by people who want to learn to code or even want switch careers into software industry but this year was exceptional. This year so many people wanted to become a software developer so that they will get affected less by the crisis like COVID-19 we are experiencing.
Since you are reading this post, I assume you chose to learn Android Development this year for some reason.
If so, great!
Let’s see which materials we can use to learn Android development in 2020 and plot our way to being a successful developer.
Who am I to give advice to you?
Since there are lots of guides online, I wanted to tell you why you may want to listen to my words on the topic.
I am an Android developer with more than 10 years of experience in software industry and I am building Android apps for 6 years now in companies of various sizes including the ones I founded myself.
But more interestingly, I have been teaching Android development to people, especially to beginners for 2 years.
I am more than aware of the problems beginners face when they start learning how to code.
My introduction in professional teaching started with Re:Coded, an awesome non-profit that teaches technology to youth who have been affected from conflicts like war or immigration.
They offered me a part-time teaching job in Re:Coded Istanbul Bootcamp where I taught Android development to an international classroom of twenty people. It was a phenomenal experience for me because I saw people from different backgrounds can learn software development in less than a month when coached properly.
After the bootcamp my interest in teaching software stayed hot and I tried to teach programming to my friends and family. When I was working as a full-time engineer in WayfairDE, I also facilitated learning events and workshops where I teach Android.
Nowadays, I am working full-time on tech education and still teaching people Android Development by online classrooms and private coaching sessions.
Recently, I launched an online course on Udemy where I target absolute beginners and teach them programming in Android setting.
We’ll come to this later, now…
What is your current level?
Understanding what you already know about software engineering is crucial to start building a learning track for yourself.
An experienced software developer learns Android (or any other language / framework / platform) differently than an absolute beginner.
For that reason the materials you can find online listing “best” Android courses or tutorials are not accurate.
Each person is different and so is their learning path.
This guide is dedicated to extreme beginners. I may write another article for people in other levels of experience.
If you have zero experience in software development, if you haven’t done a single line of coding before, you can call yourself an extreme beginner.
If you are not sure if you fall into this category check if you know of any of these programming concepts:
If you have too little or none of these it’s safe to assume that you are an extreme beginner.
Maybe you are a student or maybe you’re working in a different industry and you want to switch careers into software.
It’s always exciting to start learning something from scratch. At least it is so for me!
What you should learn to become an Android Developer?
To develop Android applications you need some ground knowledge in programming. This is the same if you want to develop web or desktop applications.
You need to know how to talk to computers.
So first thing you need to learn: Programming Fundamentals.
Second thing you need to learn is the programming language Android developers use to develop Android apps. This language is Kotlin in 2020. Also you need to learn XML but it’s not a programming language and relatively easy to learn.
The third is Android Development specific. You need to learn the Android SDK. It means the concepts, functions and libraries related and specific for building Android apps. Also you need to learn how to use Android Studio to develop Android apps.
Then there’s Principles of Object Oriented Programming. Without understanding that, you will get stuck and won’t be able to build sophisticated applications.
Also, you need some background in algorithmic thinking to abstract out real-life problems into code.
How to Learn All of This?
This is an important question. Because what I listed above (fundamentals of programming, Kotlin, XML, Android SDK, Android Studio, object oriented programming) can take years to master.
The key is not to try to be perfect and not try to master.
You need to learn these skills in parallel.
If you first try to master the fundamentals of programming, you may get bored easily and may quit without building your first Android application.
If you say, I will learn everything about Kotlin and then move to learning Android, that’s also a mistake. Trying to learn everything about a programming language is something meaningless unless you are using this knowledge. Since you are not building anything, it means you are not using this knowledge.
So you need a strategy of learning and applying what you learn effectively. You need to start building something from day one, and also, you need to balance theory and practice in this whole journey of gaining a new skill.
What are Some Quality Materials Available?
As I said above, you need to learn different skills in parallel to make the knowledge you are learning meaningful and actionable. So you cannot make do with one golden course, you need to make different materials into a study program.
Start with a welcoming mini-course: Android 50
Android 50 is a mini-course carefully designed for extreme beginners. The scope of the course is not too wide, nor it’s too theory heavy.
I created this course after spending much time with beginners and watch their pains when starting to learn Android development.
The course starts by teaching some knowledge related Android SDK and Android Studio, then without going deep it teaches some pragmatic knowledge on XML, then more about Android, then some fundamentals of programming and some Kotlin.
The target of the course is to prepare the student as smooth as possible, using relatively slow pace, clear tone and nice explanations of the fundamentals.
The course also is very pragmatic, all the theory you learn in a few video will help you create a simple app with the instructor or by yourself in the next lectures.
At the end of the course, you are going to decide whether software development is for you or if you would possibly pursue a career in Android Development.
Lastly, besides of being a self-paced Udemy course, Android 50 also has online classrooms where you get extra materials, 1:1 mentorship meetings with instructor, video-reviewed assignments, graded quizzes and much more.
If you are more of a group learner go apply to the next classroom of Android 50 at androidfifty.com.
Improve your programming knowledge in Kotlin: Codecademy
Codecademy: Learn Kotlin, is an interactive course where you can go through the fundamentals of programming combined with the relevant features of the Kotlin.
This will help you in two ways:
- You will better understand what’s going on when you see a piece of code and the fundamentals of programming will stick.
- Since this course is a fully interactive course, you’ll need to write in Kotlin constantly, improving your familiarity to the syntax.
Also, since this is not a video course but a reading / practice based course, you will have to start paying more attention to details.
Attention the details is another skill you’ll have if you become a software engineer.
At the end of this, you’ll be more efficient in reading and writing Kotlin and have some understanding of the fundamentals of programming and syntax of Kotlin.
Suggestion: Start learning with Codecademy right after you finish Android 50.
Challenging yourself: Hackerrank
Hackerrank is website where you can solve code challenges in different programming languages. Algorithm category has challenges that will build up from Easy challenges and move its way to Hard.
If you want to get better in Kotlin (that is needed to develop Android apps) you can select Kotlin as the language when you are posting solutions to these algorithm problems.
As you are a beginner don’t push yourself to solve Hard problems but try your newly gained Kotlin skills by solving Easy and Medium problems.
This will help you:
- improve your Kotlin skills
- improve your algorithmic thinking which is great skill if you want to be a successful software engineer and
- polish your knowledge on programming fundamentals since you will need to use variables, loops, strings, functions, etc. to solve all these problems.
Suggestion: Start solving easy problems when you are half way in Codecademy and get a habit of solving at least one challenge from Hackkerrank a day while you continue with learning other materials.
Find a Beginner Android Course: Hackr.io
At this point, you learned some Kotlin and some Android Development. However the journey is just beginning here.
There are lots of courses which claimed to be beginner level Android courses but actually they are not well-suited for extreme beginners.
However, if you went through Android 50 and Codecademy (and maybe a little bit of Hackerrank) now you are ready to find a great Android course.
To check and compare different courses I recommend hackr.io.
But still you need to take some things into consideration:
- Pick a course taught in Kotlin, not in Java. There are bunch of Android courses taught in Java, they can help you but they are not as effective as the courses taught in Kotlin because they are most probably not up-to-date and because you’ll eventually need to learn Kotlin.
- Pick a course which is specifically targeting beginners. There are bunch of courses stating they are for “All Levels” which is most probably a marketing strategy and is a NON-SENSE! If a course is for all levels, then you’ll most probably run away from it.
- Do not pick a “Masterclass”. In especially Udemy there are a lot of classes claiming to be masterclasses. With 50 hours of lectures, great reviews and thousands of students they might seem tempting. But what those courses are a mixture of videos on random topics, no pedagogy included, and they will bore you to death and you’ll end up getting confused.
After you find a good Android beginner course complete it to learn about wide topics of Android development.
Suggestion: It’s better to find a mentor to pick a course for you after examining what you know already and how well you learned the concepts mentioned above.
Get a mentor: Hire Me (Self-promotion)
Working with a good mentor will help you a lot on the way. Software is best learned from a master as other crafts and it’s really faster and more effective than learning on your own.
I am professionally mentoring (with limited capacity of 10 mentees at the same time) people who want to become a better Android developer and seeing awesome results.
I want to share a testimonial from one of my recent mentees, Huseyin, who is switching careers into software engineering:
I had very efficient training during this one-month training period. It’s great to work one on one with such a mentor in terms of time and efficiency.
The most important point is this: If you want to become a pro, you need to work with other pros. Safa is such a trainer having good knowledge and experience in Android development field.
I recommend him without hesitation.
Suggestion: Work with a mentor from day one so that you can get a custom learning path tailored for your needs.