Android Development skills checklist

Here is a question I always asked myself. What if someone was coming to me and ask me what do I recommend an Android Developer to know. I decided to write this article to answer that question.

Programming Language:

In terms of programming language, any Android developer should know Kotlin since Google has officially adopted it. Kotlin introduces a lot of features that java doesn’t have. Like Null safety, extension functions, and more. You should check those feature comparison here. Also, here is why you should learn Kotlin.

Architecture:

There are many approaches to architecting your Android apps like MVP, MVVM, MVI. I use MVP.

Asynchronous Operations:

Not more than two years ago, I was still using:

When I switched to Kotlin, I added RxKotlin dependency in my project. RxKotlin is an extension of RxJava written in Kotlin. It adds convenient extension functions to RxJava.

Nowadays, there is no more Rx dependency in my project, and I only use Coroutines.

Network calls:

When it comes to network calls, I recommend using Retrofit. Retrofit is a Type-safe HTTP client for Android and java. It is easy to use and works well with Rx and Coroutines. I combine Retrofit with Moshi to parse JSON response into Kotlin objects.

Image loading and Caching:

I use Glide for image loading. And to cache objects, I use Shelf. It is important to know how to persist objects in the application.

Dependency injection:

You see the necessity of having a dependency injection framework when you see your project take a particular volume. Before, I was using Dagger2, but now that my code is 100% Kotlin, I use Koin, which is a lightweight dependency injection framework for Kotlin developers written in pure Kotlin. Some of my coworkers use Kodein. Some developers still use Dagger2.

Unit testing:

I recommend using TDD in our daily development. One of the significant advantages of using TDD, is that we have separation of concerns, we don’t write more than we should when implementing a functionality. TDD helps decouple your code.

JUnit is the test framework. I also use mockito and Kluent, which make your test class more readable.

Gradle:

It will be advantageous to know how to configure the build. So, when it comes to build your project, automate and deliver App faster, learn Gradle. Here is a useful documentation on how to configure your build in Android.

There is probably a lot more to add, but I think this is a good set.
Thanks a lot for reading.

Lead Android Developer @ VMLY&R