The situation on the Russian Android development market. How can a developer remain a sought-after specialist?

novice developers can apply for salary 30-50 thousand rubles per month,

confident middle developers – on 200-250+ thousand rubles per month,

-senior-developers – on 300+ thousand rubles per month.

The Head of Android (the head of Android development in the company) can have a salary that can reach up to 500-600 thousand rubles per month. However, according to my observations, very few specialists receive such salaries, and such vacancies rarely appear in the public domain.

The salaries of experienced Android developers are still significantly higher than the income of many residents of the Russian Federation who do not work in the IT sector. But, it seems to me, it is worth taking into account the fact that 300 thousand rubles a month in 2023 is no longer the same 300 thousand that was offered to a senior specialist in 2019. The cost of living has increased significantly.

What conclusion can be drawn in this situation? In my opinion, there is only one – you need to become a truly valuable specialist in the market Android development in order to be “on an equal footing” with the employer, that is, to also be able to demand the most favorable working conditions for oneself.

Who is the valuable Android developer in 2023? Someone with at least 5 years of experience in Android development? Someone who is equally good at writing mobile applications in both Java and Kotlin? The one who wrote his library? Founder of a developer community? Author of a YouTube channel or a popular GitHub repository?

First of all, of course, someone who is a strong technical specialist, that is, he will definitely be able to solve everyday business problems and make a high-quality product – an Android application.

And then I finally get to the topic current technologies in Android development. Obviously, a candidate who owns them is very attractive in the eyes of the employer. What is relevant now and will retain its position in 2024?

It’s easy to find out: It’s enough to regularly monitor the job market and see which technologies are mentioned most often in job descriptions. With a high degree of probability, they are the most popular and in demand and, most likely, will remain so this year and next. Some technologies need to be taught and understood well, while others are enough to at least have an idea about.

I have written down the basic requirements that are often repeated in current vacancies for a middle-level Android developer with at least 3 years of experience. This technology stack is used in many companies involved in Android development. I assume that it will remain relevant in 2024.

  • Kotlin programming language (some companies also require the ability to program in Java, as they support legacy code in Java)

  • knowledge of Android SDK

  • knowledge of Android Jetpack (Compose, Android Architecture Components)

  • ability to work with multi-module architecture, knowledge of MVVM,

  • understanding dependency injection Dagger/Hilt/Koin/Kodein

  • knowledge of the principles of Material Design (design systems for creating interfaces from Google)

  • ability to work with navigation (Cicerone etc.)

  • ability to work with SQLite

  • understanding how Gradle works

  • ability to write Custom View

  • ability to write Unit / UI tests (JUnit / Espresso / Kaspresso)

  • ability to work with Kotlin Flow / Coroutines

  • networking skills – Retrofit + OkHttp

  • ability to work with Glide/Picasso

  • understanding of the REST API

  • ability to work with Git

  • ability to work with bug tracking systems (ex. Jira)

    Employers also want a candidate to have a good understanding of fundamental concepts:

  • basic algorithms and data structures

  • SOLID principles

  • Clean Architecture

  • design patterns

Before going through the list of technologies in more detail, I would like to say that, in my opinion, It is necessary to separate popular libraries and fundamental concepts. For example, dependency injection is a fundamental thing, a dependency injection pattern, and Dagger and Koin are libraries for implementing this pattern. One library may lose popularity over time, but the pattern will remain the same. Accordingly, the better a developer understands the operating principle of a pattern, the easier it is for him to later switch from one implementation of this pattern (a specific library) to another if the company changes its technology stack – for example, the developer will be transferred to a project where Koin or Kodein is used instead of Dagger .

As you can see, the vacancy requires solid knowledge of the Kotlin programming language. This language is now very, very popular for developing Android applications. The first official version of the language was released in 2016. A year later, Kotlin received official support from Google, and already in 2019, Google announced Kotlin as a priority language for developing applications for Android. Nowadays, the ability to write in Kotlin is a must-have skill for any Android developer.

Among the list of technologies we see, among other things, Jetpack Compose. This UI tool is included in Android Jetpack, a set of libraries and tools introduced by Google to simplify Android development. If you write in Compose, you do not need to do the layout in xml – it is installed directly in the code. Not all companies use Compose, but this tool is becoming more and more popular, and if you are just starting to learn Android development in 2023, I would advise you to first master Jetpack Compose and later learn xml layout.

Android Architecture Components is also a set of libraries related to Jetpack. It is used to build the architecture of the application. By knowledge of Architecture Components, the employer means the ability to work with Room, ViewModel, LiveData. ViewBinding is also often used in projects.

MVVM is an architectural pattern currently popular in development that allows you to conditionally divide applications into layers: Model, View, ViewModel. In general, as far as I know, the MVP, MVVM and MVI patterns are currently used in development. The principle of their operation must be well understood.

Material Design is a design system for creating interfaces from Google. Cicerone is a navigation library. SQLite is a compact embedded DBMS. Gradle is an automatic build system.

It’s worth mentioning about testing tools. The JUnit framework is used to test individual application modules, and Espresso or Kaspresso is used to write UI tests.

Among the list of technologies we also see Retrofit – this is a library for working with the network, often used together with OkHttp3. Those who plan to write mobile applications in Kotlin also need to master working with coroutines and have a good understanding of the fundamental concepts of multithreading and asynchrony.

Flow – this technology, like LiveData, implements the Observer pattern.

Glide, Picasso – These are libraries for loading images.

REST API is a way to interact with the server.

Ability to work with Git – a version control system is a necessary skill for team development. The developer must be able to do at least basic operations: cherry-pick, rebase, merge, resolve conflicts in the code, etc.

Clean architecture, SOLID and design patterns These are fundamental concepts that you need to know. There are a lot of materials on the Internet that clearly explain these concepts. For example, in the book “Design Patterns” from the Head First series, the principles of operation of the Observer, Builder and other patterns are very clearly explained.

The question of whether a developer needs to be able to solve algorithmic problems is a controversial one, and I would not like to raise it in this article. Let me just say that understanding the principles of operation of basic algorithms is useful. I can recommend the book “Growing Algorithms”, where they are presented in simple and accessible language.

The question may arise: Is it possible to divide the mentioned technologies into clear gradations of junior – middle – senior in order to better prepare for the interview? For example, it can be assumed that the junior will be asked only simple questions about knowledge of the main components of Android, layout and the basics of the Kotlin language, the middle will be asked more complex questions, for example, on working with coroutines, and the senior and architect will be asked complex questions on system design and design of application modules .

In my opinion, there is no longer any need for such a division. Firstly, the complexity of applications has increased, and accordingly, the requirements for novice Android developers have also grown significantly. The time when to get your first job as an Android developer was enough to be able to, figuratively speaking, “paint buttons” has passed. Interview questions are becoming more and more difficult. As far as I can judge from personal experience and the experience of familiar developers, both the intern and the senior will be asked about multithreading, working with Gradle and architectural patterns. The only difference is the depth of understanding that employers require from specialists at different levels. For example, a novice developer will not have to design the application architecture on a project, but he needs to be able to understand the principle of its construction in order to solve everyday work problems.

Secondly, the division itself between junior and middle senior is, in my opinion, quite arbitrary. It may happen that a developer who works as a senior in one company will not be hired even as a middle position in another.

Among the specific questions that can be asked to a middle+ level developer and a senior developer, I can mention questions related to setting up CI/CD. Some companies practice live coding during interviews – this is when you need to write code in real time.

Among the necessary skills of a sought-after Android developer, I would also mention proficiency in English at the level of reading technical documentation. I believe that now without knowledge of this language it is hardly possible to become a highly qualified specialist. All current documentation on Android development on developer.android.com is in English.

And of course, in conditions of increased competition among developers, it is worth developing soft skills: goodwill, self-discipline, the ability to learn, listen and hear colleagues, the ability to adequately perceive criticism, etc. In my opinion, in 2023, an Android developer who, in addition to strong technical skills, also has developed soft skills, will have a good advantage when applying for a job.

So, you can do the following conclusions:

-Android development in the Russian Federation continues to develop, despite the crisis, but strong growth in wages is no longer observed,

-competition in this area now affects specialists at all levels; the market has become a recruiting market,

-the only option to remain on equal terms with the employer is to become a strong specialist,

– to remain competitive in the labor market, it is no longer enough just to be proficient in Android development technologies; It is also highly desirable to have developed soft skills. It is also necessary to constantly learn, follow trends, understand what the mobile application market wants and meet business requirements.

I hope my article is useful!

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *