Привет!) Меня зовут Анна Наумова, я Android-разработчик, живу в Санкт-Петербурге, тружусь в команде разработки популярного российского корпоративного мессенджера и провожу еженедельные офлайн-встречи IT-сообщества «Mobile Broadcast» в Санкт-Петербурге.  В этой статье я рассказываю о том, какая ситуация сложилась на рынке Android-разработки в РФ к настоящему времени, какие технологии будут оставаться, на мой взгляд, актуальными и востребованными в следующем году, и какие навыки стоит развивать, чтобы оставаться Android-разработчиком, востребованным на рынке труда. Хочу заметить, что все сказанное ниже - мое частное мнение, основанное на личном опыте, изучении технологий разработки и исследовании рынка, и на истину в последней инстанции я не претендую. Несколько месяцев назад я опубликовала статью «О том, почему так важно участвовать в жизни профессионального комьюнити», в которой рассказала о том, как я постепенно стала активным участником онлайн и офлайн-сообществ мобильных разработчиков. Я также постаралась показать, насколько участие в комьюнити важно для профессионального развития самого программиста. Через некоторое время после публикации статьи о важности участия в профессиональном комьюнити со мной связались организаторы крупнейшей в Азербайджане международной IT-конференции «Digital Fest» в Баку и предложили принять участие в этом событии в качестве спикера - выступить с докладом на тему Android-разработки. Мне впервые в жизни довелось выступать перед большой аудиторией в качестве одного из основных докладчиков на главной сцене. Было волнительно, но очень интересно. Поскольку я активно интересуюсь новшествами Android - и мобильной разработки в целом и стараюсь следить за трендами, для доклада я выбрала тему «Актуальные технологии Android-разработки. Прогноз развития на 2024 год». Некоторые тезисы доклада я сочла нужным осветить в этой статье. Мое выступление получилось интересным и вызвало живой отклик у аудитории. По окончании доклада несколько слушателей подошли ко мне с вопросами. Среди них были как уже состоявшиеся программисты, которые решили перейти в другую сферу разработки (например, из iOS в Android), так и новички, желающие «войти в IT».  Кто-то спрашивал, с какого языка начинать изучение Android-разработки, кто-то хотел узнать, нужны ли разработчику алгоритмы, кто-то задавал вопросы об актуальности тех или иных библиотек.  Мне вдруг подумалось, что по сути все эти вопросы подразумевали под собой другой, более глобальный вопрос, который в той или иной степени сейчас беспокоит если не всех, то многих Android-разработчиков: как оставаться востребованным на рынке труда в условиях неуклонно возрастающей конкуренции?  Размышления на эту тему и привели в итоге к написанию данной статьи. Сначала я подумала: «А зачем, собственно, разработчикам с 4-5 годами опыта беспокоиться о своей востребованности? Разве у них есть недостаток в хороших предложениях о работе? Ведь рекрутеры сами постоянно пишут им в LinkedIn и прочие соцсети и предлагают рассмотреть интересную вакансию!».  Вернувшись с конференции домой, в Петербург, я посмотрела видео «Как избежать обмана на работе: 5 эффективных стратегий». Меня заставила задуматься мысль автора о том, что рынок Android-разработки еще несколько лет назад был кандидатским, но в настоящее время он становится все более и более во власти рекрутера; искать и менять работу становится сложнее не только junior-разработчикам, но и middle-, и даже senior-специалистам. Ту же мысль позже я прочла и в интервью с руководителем управления разработки «СКБ Контур» Алексеем Кирпичниковым. Про огромную конкуренцию среди начинающих разработчиков в любой IT-сфере слышали, наверное, все. Уже не так много людей верят обещаниям популярных онлайн-школ сделать из человека, не имеющего никакого опыта в программировании, востребованного middle-специалиста с зарплатой 150 тысяч рублей в месяц после окончания курса. Роликов с громкими заголовками: «Рынок для джунов закрыт», «Войти в IT уже не получится» и т.д. в сети – большое количество. И это - не кликбейт: спрос на такие вакансии действительно во много раз превышает предложение. Вот, например, скрин вакансии начинающего Android-разработчика, опубликованной в Санкт-Петербурге в августе текущего года. Как видим, на одну вакансию уже претендуют 358 человек. А вот про то, что и среди более опытных специалистов в последнее время выросла конкуренция, говорят не так часто. Однако, просмотрев вакансии и количество откликов на популярном портале по поиску работы, я пришла к выводу, что это утверждение имеет веские основания. Ситуация на рынке Android-разработки в последнее время действительно сильно изменилась - произошел сдвиг в пользу работодателя. Далее, опросив знакомых Android-разработчиков, я выяснила, что и специалисты среднего уровня, и сеньоры, и даже руководители мобильной разработки сейчас зачастую очень осторожно меняют работу и не делают это без острой необходимости. При этом многие из них время от времени ходят по собеседованиям, чтобы иметь представление о текущей ситуации на рынке Android-разработки в РФ и понимать уровень своей востребованности. Также они отметили, что работодатели стали обращать больше внимания на софт-скиллы кандидатов. Почему же зарплаты мобильных разработчиков несколько лет назад стали расти невероятными темпами? Дело в том ,что мобильные приложения давно заняли серьезную нишу на рынке. Причина понятна: они делают повседневную жизнь людей комфортнее и удобнее. Олды, наверное, помнят, как двадцать лет назад большой популярностью пользовалась игра «Змейка» на телефоне Nokia 3310.  А какие сейчас игры, с какой мощностью и графикой? Не сравнить! Теперь с помощью мобильных приложений мы не только играем в игры, чтобы скоротать время по пути на работу и обратно, но и слушаем музыку, занимаемся спортом, знакомимся с новыми людьми, изучаем иностранные языки, покупаем билеты, оплачиваем коммунальные услуги – все эти повседневные действия сейчас можно выполнять, просто кликнув по экрану мобильного телефона.  Рост популярности мобильных приложений вполне ожидаемо привел к тому, что на рынке появилось большое количество открытых вакансий. Бизнесу требовались все новые и новые приложения, рабочих рук не хватало, и рекрутеры старались активно «хантить», то есть переманивать к себе ценных специалистов.  Эта борьба за специалистов, предположительно, и привела к огромному росту зарплат. О ситуации, сложившейся в итоге на рынке мобильной разработки, хорошо рассказывается в выпуске «IT-пузырь лопнул». Еще 3-4 года назад рост зарплат Android-разработчиков в РФ был каким-то невероятным: например, можно было начать работать junior- разработчиком за небольшой оклад, через год увеличить свою зарплату в 2-3 раза, а еще через полгода или год уже получить оффер на 250+ тысяч рублей после вычета налогов, конечно, при условии, что навыки разработчика соответствуют такой зарплате. Произошедшие в последние годы события, разумеется, не могли не повлиять на российский рынок Android- и мобильной разработки в целом. Такого роста зарплат уже не наблюдается, и, по моему мнению, вряд ли стоит ожидать его в ближайшее время. Некоторые компании ушли с российского рынка, сократилось число вакансий, и разработчикам, не имеющим возможности или не желающим релоцироваться, пришлось соглашаться на те предложения, которые остались.  Согласно данным на июль 2023 года, количество вакансий мобильных разработчиков в РФ в целом снизилось по сравнению с предыдущим годом. Количество вакансий разработчиков iOS сократились на 29,9%, а разработчиков Android — на 13,5%.  Следует заметить, что в настоящее время не только снизилось число открытых вакансий, но и замедлился рост зарплат в Android-разработке и мобильной разработке в целом. Автор статьи «Приложение усилий: что происходит на рынке мобильной разработки в России», ссылаясь на сервис «Хабр-карьера», указывает, что зарплаты российских мобильных разработчиков продолжают увеличиваться, хотя и не такими быстрыми темпами, как раньше. Согласно представленным данным, во втором полугодии 2022 года средняя зарплата такого специалиста выросла на 9% по России в целом, а в Москве - на 17%.  Я проанализировала несколько актуальных вакансий Android-разработчика разных уровней, опубликованных на популярном ресурсе по поиску работы, и сделала вывод, что в целом теперь ситуация с зарплатами Android-разработчика в РФ обстоит примерно таким образом:  начинающие разработчики могут претендовать на зарплату 30-50 тысяч рублей в месяц,  уверенные middle-разработчики - на 200-250+ тысяч рублей в месяц, senior-разработчики - на 300+ тысяч рублей в месяц.  У Head of Android (главы Android-разработки в компании) зарплата может достигать и 500-600 тысяч рублей в месяц. Однако такие зарплаты получают, по моим наблюдениям, очень немногие специалисты, и такие вакансии редко появляются в публичном доступе.Зарплаты опытных Android-разработчиков по-прежнему существенно превышают доходы многих жителей РФ, не работающих в IT-сфере. Но, как мне кажется, стоит учитывать и тот факт, что 300 тысяч рублей в месяц в 2023 году  - это уже не те 300 тысяч, которые предлагали senior-специалисту в 2019 году. Стоимость жизни существенно выросла.  Какой же можно сделать вывод в сложившейся ситуации? На мой взгляд, только один - нужно стать по-настоящему ценным специалистом на рынке Android-разработки, чтобы быть с работодателем «на равных», то есть тоже иметь возможность требовать наиболее выгодные для себя условия труда. А кто же это – ценный Android-разработчик в 2023 году? Человек, имеющий минимум 5 лет опыта в Android-разработке? Тот, кто одинаково хорошо умеет писать мобильные приложения и на Java, и на Kotlin? Тот, кто написал свою библиотеку? Основатель комьюнити разработчиков? Автор канала на YouTube или популярного репозитория на GitHub?  В первую очередь, конечно же, тот, кто является сильным техническим специалистом, то есть точно сможет решать повседневные задачи бизнеса и делать качественный продукт - Android-приложение.  И тут я наконец перехожу к теме актуальных технологий в Android-разработке. Очевидно, что кандидат, владеющий ими, весьма привлекателен в глазах работодателя. Что же актуально сейчас и сохранит свои позиции в 2024 году?  Узнать это несложно: достаточно регулярно мониторить рынок вакансий и смотреть, какие технологии упоминаются в описаниях вакансий чаще всего. С высокой долей вероятности они и являются наиболее популярными и востребованными и, скорее всего, останутся ими в текущем и следующем году. Одни технологии нужно учить и хорошо понимать, о других достаточно хотя бы иметь представление.  Я выписала основные требования, которые часто повторяются в актуальных вакансиях для Android-разработчика уровня middle с опытом работы от 3 лет. Данный стек технологий используется во многих компаниях, занимающися Android-разработкой. Предполагаю, что он останется актуальным и в 2024 году.  язык программирования Kotlin (некоторые компании требуют также уметь программировать на Java, так как поддерживают легаси-код на Java) знание Android SDK знание Android Jetpack (Compose, Android Architecture Components) умение работать с многомодульной архитектурой, знание MVVM, понимание dependency injection - Dagger / Hilt / Koin  / Kodein знание принципов Material Design (дизайн-системы для создания интерфейсов от Google) умение работать с навигацией (Cicerone etc.) умение работать с  SQLite понимание работы Gradle умение писать Custom View умение писать Unit / UI тесты (JUnit / Espresso/Kaspresso) умение работать с Kotlin Flow / Coroutines умение работать с сетью - Retrofit + OkHttp умение работать с Glide/Picasso понимание работы REST API  умение работать с Git умение работать с bug tracking systems (ex. Jira) Также работодатели хотят, чтобы кандидат хорошо разбирался в фундаментальных концепциях: основные алгоритмы и структуры данных принципы SOLID Clean Architecture паттерны проектирования Прежде чем более подробно пройтись по списку технологий, я хотела бы сказать, что, на мой взгляд, необходимо разделять популярные библиотеки и фундаментальные понятия. Например, dependency injection – это фундаментальная вещь, паттерн внедрения зависимостей, а Dagger и Koin – библиотеки для реализации этого паттерна. Одна библиотека может со временем утратить популярность, а паттерн останется таким же. Соответственно, чем лучше разработчик понимает принцип работы какого-либо паттерна, чем проще ему позже перейти с одной реализации этого паттерна (конкретной библиотеки) на другую, если компания сменит стек технологий - например, разработчика переведут на проект, где вместо Dagger используется Koin или Kodein. Как видим, в вакансии требуются уверенные знания языка программирования Kotlin. Этот язык сейчас весьма и весьма популярен для разработки Android-приложений. Первая официальная версия языка вышла в 2016 году. Уже через год Kotlin получил официальную поддержку Google, а уже в 2019 году компания Google объявила Kotlin приоритетным языком для разработки приложений под Android. Сейчас умение писать на Kotlin – must-have skill любого Android-разработчика.  Среди списка технологий мы, среди прочего, видим Jetpack Compose. Этот инструмент для работы с UI входит в Android Jetpack - набор библиотек и инструментов, представленный Google для упрощения разработки под Android. Если Вы пишете на Compose, Вам нет необходимости делать верстку в xml – она устанавливается прямо в коде. Не все компании используют Compose, но этот инструмент становится все более и более популярным. Android Architecture Components – это тоже набор библиотек, относящийся к Jetpack. Он используется для построения архитектуры приложения. Под знанием Architecture Components работодатель подразумевает умение работать с Room, ViewModel, LiveData. Также на проектах часто используется ViewBinding.  MVVM – это популярный сейчас в разработке архитектурный паттерн, позволяющий условно разделить приложения на слои: Model, View, ViewModel. Вообще, насколько я знаю, сейчас в разработке используются паттерны MVP, MVVM и MVI. Принцип их работы нужно хорошо понимать. Material Design - это дизайн-система для создания интерфейсов от Google. Cicerone - библиотека для навигации. SQLite — компактная встраиваемая СУБД. Gradle - система автоматической сборки. Стоит сказать и об инструментах для тестирования. Для тестирования отдельных модулей приложения используется фреймворк JUnit, а для написания UI-тестов – Espresso или Kaspresso.  Среди списка технологий мы также видим Retrofit – это библиотека для работы с сетью, часто используется вместе с OkHttp3. Тем, кто планирует писать мобильные приложения на Kotlin, также необходимо освоить работу с корутинами и хорошо понимать фундаментальные понятия многопоточности и асинхронности. Flow – эта технология, как и LiveData, реализует паттерн Observer.  Glide, Picasso - это библиотеки для загрузки изображений. REST API — это способ взаимодействия с сервером. Умение работать с Git – системой контроля версий - необходимый навык для разработки в команде. Разработчик должен уметь делать хотя бы основные операции: cherry-pick, rebase, merge, решать конфликты в коде и т.д. Clean architecture, SOLID и паттерны проектирования – это фундаментальные понятия, которые необходимо знать. В сети очень много материалов, где доступно объясняются эти концепции. Например, в книге «Паттерны проектирования» серии Head First очень доступно объясняются принципы работы паттернов Observer, Builder и других. Вопрос, нужно ли разработчику уметь решать алгоритмические задачи - холиварный, и в этой статье мне не хотелось бы его поднимать. Скажу лишь, что понимать принципы работы основных алгоритмов - полезно. Могу рекомендовать книгу «Грокаем алгоритмы», где они изложены простым и доступным языком. Может возникнуть вопрос: а можно ли разделить упомянутые технологии по четким градациям джун – миддл – сеньор, чтобы лучше подготовиться к собеседованию? Например, можно предположить, что джуну будут задавать только несложные вопросы на знание основных компонентов Андроид, верстке и основам языка Котлин, миддлу – вопросы посложнее, например, по работе с корутинами, а сеньору и архитектору – сложные вопросы по дизайну системы и проектированию модулей приложения. На мой взгляд, необходимости в таком разделении уже нет. Во-первых, сложность приложений выросла, соответственно, сильно выросли и требования к начинающим Android-разработчикам. Время, когда для устройства на первую работу Android-разработчиком достаточно было уметь, образно выражаясь, «красить кнопки», прошло. Вопросы на собеседованиях все более и более усложняются. Насколько я могу судить из личного опыта и опыта знакомых разработчиков, спрашивать о многопоточности, работе с Gradle и архитектурных паттернах будут и стажера, и сеньора. Разница лишь в глубине понимания, которую работодатели требуют от специалистов разных уровней. Например, начинающему разработчику не придется проектировать архитектуру приложения на проекте, но ему надо уметь понимать принцип ее построения, чтобы решать повседневные рабочие задачи.  Во-вторых, само деление джун – миддл- сеньор – на мой взгляд, довольно условно. Может случиться такое, что разработчика, который работает сеньором в одной компании, в другую не возьмут даже миддлом. Из специфических вопросов, которые могут задавать разработчику уровня middle+ и сеньору, могу отметить вопросы, касающиеся настройки CI/CD. В некоторых компаниях на собеседованиях практикуется live coding – это когда нужно писать код в режиме реального времени. Среди необходимых навыков востребованного Android-разработчика я бы так же упомянула владение английским языком на уровне чтения технической документации. Считаю, что сейчас без знания этого языка вряд ли возможно стать высококлассным специалистом. Вся актуальная документация по Android-разработке на сайте developer.android.com - на английском языке. Ну и конечно же, в условиях возросшей конкуренции среди разработчиков стоит развивать софт-скиллы: доброжелательность, самодисциплину, умение учиться, слушать и слышать коллег, способность адекватно воспринимать критику и т.д. На мой взгляд, в 2023 году Android-разработчик, обладающий помимо сильных технических навыков, еще и развитыми софт-скиллами, будет иметь хорошее преимущество при устройстве на работу.Чтобы оставаться специалистом, востребованным на рынке труда, на мой взгляд, необходимо постоянно следить за этим рынком и понимать, какие технологии становятся популярными. Например, можно попробовать освоить Kotlin Multiplatform (KMP) - технологию, которая позволяет использовать общий код в программах для iOS и Android и писать код, специфичный для каждой из платформ, только там, где это необходимо - в частности, при реализации нативного UI или при работе с API, которые ограничены конкретной платформой. Альфа-версия KMP (тогда эта технология еще называлась KMM) вышла еще в августе 2020 года. С тех пор эта технология KMP очень сильно выросла и, я думаю, будет только набирать обороты. Я бы рекомендовала всем Android-разработчикам хотя бы поверхностно ознакомиться с KMP, даже если в вашей компании эта технология пока не используется.   Итак, можно сделать следующие выводы: Android-разработка в РФ продолжает развиваться, несмотря на кризис, но сильного роста зарплат уже не наблюдается, конкуренция в этой сфере теперь затрагивает специалистов всех уровней; рынок стал рекрутерским, единственный вариант оставаться с работодателем на равных - это стать сильным специалистом, при этом, чтобы оставаться конкурентноспособным на рынке труда, уже недостаточно просто хорошо владеть технологиями Android-разработки; крайне желательно также иметь развитые soft-скиллы. Также необходимо постоянно учиться, следить за трендами, понимать, что хочет рынок мобильных приложений и соответствовать требованиям бизнеса.  Надеюсь, моя статья окажется полезной!  Android Developer