If I had a nickel for every time someone asked me: How do I become an Android Developer? Let's just say I'd have a whole lot of nickels! So as a gift to the world I've consolidated the various versions of my advice into the following post.
As an Android and Kotlin Google Developer Expert, I've created lots of content in this space, so where it makes sense I've included links to my relevant videos and courses.
First, let me just list out everything you would need to know to make a basic Android app:
- XML - It's what we use to configure resources and user interface elements.
- JSON - The preferred data exchange format for communicating via APIs.
- Java - The primary language that most frameworks, libraries and code samples are written in.
- Git - A version control system.
Second, what you need to know to be hired as an Android Developer:
- JUnit - A unit testing framework.
- Mockito - A mocking framework for unit tests.
- Retrofit - A networking library designed for working with REST APIs.
- Android Architecture Components - A collection of libraries that help you design robust, testable, and maintainable apps.
- Constraint Layout - Android View that allows you to create large and complex layouts with a flat view hierarchy.
- Recycler View - Android View for displaying a scrolling list of elements.
- Object-Oriented Programming - Simplifies development and maintenance.
Finally, here's everything you may need to know to make more complex Android apps:
- SQLite - The database that ships with Android to persist your data.
- Kotlin - A language that targets the JVM and eases the burden of programming on Android.
- RxJava - Library for composing asynchronous programs using observable sequences.
- Espresso - A UI testing framework for developers.
- Gradle - The build system used to package and deploy Android applications.
- Material Design - The visual language used on Android to express user interface components.
- Dependency Injection - A way to handle dependencies which makes it easier to structure your code.
- Design Patterns - General, reusable solutions to commonly occurring problems.
- Firebase - Firebase gives you functionality like analytics, messaging and crash reporting under one umbrella.
- WorkManager - Library to assist you in specifying deferrable, asynchronous tasks and when they should run.
How can you learn more about these things:
- Kotlin Weekly
- Android Weekly
- Android Dev Digest
- Android Podcasts
- Android Conferences
The most important thing is it to practice! You have to actually write some code and design a few applications to become a good Android developer. Here's a few app ideas:
ToDo - Allow the user to create a todo and view their list of todos.
Trivia Game - Present the user with a series of questions that have multiple choice answers.
Remote Data - Download data from a remote API and display it.
App Clone - Pick one of your favorite apps and make a clone of it.
Or think of something that you're passionate about and make an app for it. The key thing is that you want to gradually improve your expertise by creating more and more complex applications.
If I missed anything, just mention it in the comments. Hope this was helpful!