Hello, community!
In my previous article, I told you about the most useful Git commands for Junior Android Developers. I also described, in general, how the workflows are arranged in most IT companies. In this article, I’d like to tell you about Android development trends that are actual in 2023 and, in my opinion, will stay actual in 2024 and what technologies you need to master in order to be in demand in the job market and get your dream job. Perhaps this article will be helpful to Android Developers who are currently in active job search and poorly understands what technologies are really in demand.
Let’s start by considering the facts. It is a well-known fact that electronic devices occupy a large place in the life of any modern person. Almost everyone has a device like a laptop, smartphone, tablet etc. We constantly use various mobile applications - to call a taxi, order food, buy tickets, pay for some service, track the progress of fitness training, learn any foreign language etc.
Presumably, there are many people among your family, friends and colleagues who wear smartwatches and fitness bands. Perhaps you yourself use these devices. But wearable device apps have yet to reach their full potential. In the near future, users will be able to download tens of thousands of applications directly from their wrists.
Briefly speaking, it can be definitely stated that mobile apps are an integral part of our life. As for me personally, mobile apps make my life much more convenient and save a lot of time. I have about 20 mobile apps on my phone that I use every day. I also use smartwatches and fitness bands.
From these facts, one may conclude that a consequence of the high demand for mobile applications is a large number of vacancies for mobile developers. A mobile developer is a high-demand, interesting and well-paid job. But we cannot ignore the fact that not only the number of mobile applications in the App Store and Google Play is growing, but also their complexity. Therefore, the requirements for mobile developers who want to get a good job offer are constantly becoming more and more complicated.
How to understand what Android development technologies are relevant and actual now? Which one should be taught?
Easy: you can see carefully the description of several Android Developer vacancies on any popular job search website, for example, on the website https://www.glassdoor.com/.
I would advise you to write down all the technologies that are repeated in most vacancies and master them in the first place.
Here is the checklist of relevant technologies I wrote down. You can use it as a cheat sheet or supplement it with your own search results.
principles of object-oriented programming. As I know, this theme is very often asked at job interviews, so so don't neglect it. If you understand the principles of programming well, it is much easier for you to switch to any new technology in Android Development. This skill, in my opinion, is very important because in mobile development, the technological stack changes from time to time. Candidates who are willing to learn quickly are very valuable to the employer.
design patterns (Observer, Builder etc).
Kotlin / Java programming language. At the I/O Development Conference 2019, Google announced that Kotlin is now a use case for Android Apps — new APIs and Jetpack libraries will be published first on Kotlin. It is generally agreed today that Kotlin is convenient, beautiful and concise language. Compared to Java, Kotlin code is much shorter. In many companies, all new projects are created in Kotlin. By this link you can find a lot of common info about Kotlin. I suppose that currently, any Android Developer should be able to write code in Kotlin programming language (be able to use Coroutines, Flow etc.)
However, Java is still used for Android Development. Therefore, I would not recommend completely abandoning the study of this programming language. Many Android app projects still have a lot of legacy code that is written in Java. In this case, the fact that you are able to write code in Java will probably be a big plus.
Android Studio - IDE, in which Android Developers write their projects. I would strongly recommend mastering all the useful hotkeys and setting up some plugins that make the Android developer's workflow more convenient and help increase the speed of work. For example, I actively use the Rainbow brackets plugin. It brightly highlights various elements of the code. It is very comfortable - less chance of losing any bracket). By this link you can find a useful list of Android Studio shortcuts.
Android SDK
MVVM, MVP, MVI application architecture patterns. These patterns allow you to divide your mobile app into several functional parts. This distribution allows you to increase the set and availability of programs - you can replace one component without including the code of another. For example, MVVM pattern proposes such division:
-Model - deep logic of the program (working with data, data, queries, and so on).
-View - view (interface).
-ViewModelis a view model that serves as a layer between View and Model.
The principles of these patterns should be well understood by any Android developer. For more detailed information about these patterns, I can recommendthis article.
Clean Architecture. It is an important aspect of any application development, which greatly simplifies the development process.
For a visual representation of the clean architecture, you can see this diagram.
Dependency Injection tools (Dagger, Koin and Hilt). Dependency injection is a technique that makes a class independent of its dependencies. Dagger and Koin are popular libraries to implement this approach.
network - Retrofit and OkHttp3
navigation - ex. Cicerone (popular navigation library)
RESTful APIs and HTTP work
principles of designing client-server interaction
custom UI components
Unit testing (ex. JUnit)
UI testing (ex. Espresso)
Gradle
Jetpack Compose - modern toolkit for creating native UI, without using xml. It simplifies and accelerates UI development on Android.
LiveData + ViewModel
multithreading & concurrency
So, here is a list of the main popular technologies that have become actively used in the development of Android applications in recent years. It also would be unfair not to mention KMM (Kotlin Multiplatform for mobile). This is a technology that greatly simplifies the development of cross-platform projects. This technology has become very relevant in the last two years and continues to gain popularity. You can find more information by the link.
It also would be unfair not to mention the fact that a popular development stack also undergoes changes over time. For example, I have worked as an Android developer for three years, and during this time, the technology stack in Android development has almost completely changed. Therefore, the technologies that I learned at the beginning of my career are no longer relevant. It is possible that the technologies listed in this article will become deprecated over time, and others will come to replace them. So, please, don’t perceive this list of technologies as relevant for many years.
To draw a conclusion, one can say that any Android developer needs to constantly self-educate, actively follow Android development trends and increase his hard skills in order to be in demand in the job market. I hope this article will help you make the right choice with a choice of Android Development technologies to stand out from other candidates and get your dream job. Good luck!