Всем привет! Меня зовут Михаил, я главный эксперт в ОТП банке.
Несколько лет я мечтал поработать на Kotlin. Мне это удалось - был большой проект РЖД, я вкатился, писал код, радовался. Kotlin мне правда понравился.
Но давление менеджеров, нереальные сроки и просто выгорание вынудило меня выходить на рынок, и я пошёл искать работу… и тут меня ждал сюрприз. Вакансий, где нужен чисто Kotlin, в России - единицы. А те, что есть, чаще ищут Java/Kotlin с упором на первую.
В этой статье - моя история: как я вкатывался в Kotlin без подготовки, как мне понравилось, и почему я всё равно сейчас пишу на Java. Читайте, если думаете о переходе, - возможно, это поможет скорректировать ожидания.
Поехали!
!!!ДИСКЛЕЙМЕР!!!
В этой статье я просто описываю свой личный опыт. Я не буду говорить, что плохо, а что хорошо. И Java, и Kotlin - отличные языки, каждый подходит для своих задач. Я никого никуда не призываю переходить и не отговариваю. Просто делюсь тем, через что прошёл сам. А выбор остаётся за вами.
Начало карьеры
Как-то давно я попал в IT совершенно случайно. Сидел, ел в Макдоналдсе (тогда ещё можно было), в период бигфеста выиграл курс по Kotlin-разработке на мобилках. Решил попробовать - хотя вообще не смыслил в коде. Начал учиться, пошёл на собеседование на стажёра… и получил отказ с формулировкой, которую запомнил на всю жизнь:
"Как можно не знать Java, когда пишешь на Kotlin?"
Тогда я, пошёл учить Java, попал на стажировку и с тех пор работаю Java-разработчиком. Но Kotlin меня всегда манил. Все вокруг говорили, что это "сахарная Java", а я смотрел на него и очень хотел попробовать на настоящем проекте.
Стадия 1 - выход на рынок и собес
В какой-то момент я решил сменить работу. Без разницы - Java или Kotlin, просто хотелось нового. Начал искать.
И тут мне пишет HR: "Проект в РЖД. Стек: Kotlin + Spring + jOOQ".
Я загорелся. Kotlin хотел попробовать давно. А вот jOOQ смущал - я его вообще не знал. (Спойлер: зря смущался. Теперь я его обожаю.) Сказал HR, что Kotlin вообще не знаю, сказали, что у них такое бывает, но вопросы будут и по Kotlin.
Назначили собеседование. И тут я запаниковал: Kotlin-то я почти не знаю. Теорию кое-как подтянул, но для серьёзного собеса - точно не хватает.
День Х. Захожу. И…
…ноль вопросов по Kotlin. Вообще.
Через час после собеседования мне приходит оффер.
"Такое вообще бывает?" - подумал я.

Стадия 2 - вижу проект и не понимаю, что происходит
Все говорили: "да по сути это то же самое, что и Java". Попадая на проект и читая код - шок. Из всех слов я будто знаю только class, private. Остальное выглядело как магия: ?:, ?.let {} и непонятные by lazy - я чувствовал, что я попал на космический корабль, а не на проект РЖД.
Ничего не помогало лучше понимания, чем практика, первые задачи закрываются очень сложно, ставить ; везде, не пишешь fun, пишешь типы переменных, вообщем - жуть, сначала было очень тяжело.
Первые задачи - через слёзы. Но знаете что? Было ООООЧЕНЬ интересно. Потому что кода писалось реально меньше. Да, непонятно. Да, тупил на ровном месте. Эту стадию очень хотелось бы пропустить, но увы, она неизбежна.

Стадия 3 - кайфую
Примерно через два месяца я забыл, что вообще когда-то писал на Java. Серьёзно. Рука перестала тянуться к ;, голова перестала ждать getter/setter.
На практике выучил бОльшую часть синтаксического сахарка:
data class— и нет Lombok'а(понимаю, что в java есть прекрасный аналог -Record)?.let {}— и нетif (obj != null)whenкак expression — и нет многоэтажныхswitch/caseExtension functions — пишешь
"Kotlin".toSuperSugar()и кайфуешь, что не надо тащить утилитный класс
Я кайфовал. Не громкое слово — реально кайфовал.
Параллельно общался с бывшими коллегамиНекоторых надоумил посмотреть в сторону Kotlin.
В общем, я получил шикарный опыт. Язык мне реально зашёл. И я уже тогда думал: "На Kotlin хочу работать и дальше".

Стадия 4 - выход на рынок Kotlin
Спустя полтора года я понял, что надо уходить.
Давка со стороны руководства. Нереальные сроки. Полный треш в целом.
Я вышел на рынок с чёткой позицией: хочу остаться на Kotlin.
Искал вакансии: либо чистый Kotlin, либо Java/Kotlin с уклоном именно в Kotlin. Мобилки честно скипал - я веб-разработчик, не моё.
Искал очень долго. Месяцы. Десятки созвонов и собеседований.
И на каждом задавал один и тот же вопрос:
"В каком соотношении у вас Java и Kotlin? Где пишут на Kotlin?"
Ответы были двух типов:
"Наша команда думает переезжать на Kotlin… но пока планов нет."
"У нас есть один сервис на Kotlin. Остальное на Java. Ну и новый код пишем в основном на Java."
Всё. Ни разу не услышал "У нас полноценная Kotlin-команда, пишем только на нём".

Я понял простую вещь: если хочу менять работу прямо сейчас - нужно рассматривать всевакансии. И Java, и Kotlin.

Kotlin - редкий зверь в российском enterprise.
Я начал искать на Java. Скрепя сердце. Параллельно всё ещё надеялся, что попадётся тот самый оффер мечты на чистом Kotlin.
Прошли недели. За это время ни одного собеседования на Kotlin. Ни одного.
Зато по Java были собесы. И в итоге — оффер.
Я принял его. И ушёл с Kotlin-проекта.
С надеждой, что ещё вернусь к нему когда-нибудь. Просто не сейчас.
Стадия 5 - возврат к истокам
Вернувшись на Java, я поначалу думал: "Всё, не смогу долго. Kotlin зашёл куда больше".
Начал писать нехотя. Раз задачка, два задачка, три задачка…
И вдруг заметил, что втянулся.
Чтобы вернуться с Kotlin на Java, мне потребовалось недели две. Всё. Никаких проблем.Более того, я даже почувствовал ностальгию.

Прошло уже больше полугода. Переход был полностью бесшовным.
При этом вспоминаю, как переходил с Java на Kotlin - было больно. А обратно - нет.
Итоги
Java и Kotlin - похожие, но всё-таки разные языки. Под разные задачи. Оба, как по мне, крутые. Выбор всегда за вами. Я получал удовольствие и от Java, и от Kotlin. Получаю до сих пор.
Возможно, я когда-нибудь вернусь в Kotlin. Или вообще перейду на Go. Кто ж меня знает, что я выиграю в следующем бигфесте)
Мой совет тем, кто сейчас на распутье:
Если переживаете, что смысла переходить нет, но очень хочется попробовать - пробуйте. Не пожалеете. Даже если не останетесь на Kotlin, вы получите прекрасный опыт.
Если вы смотрите на Kotlin косо и считаете "очередной модный сахар" - ваше дело. Остаться на java тоже хорошее решение.
Всем спасибо за внимание, надеюсь, что мой опыт будет вам полезен!)
Комментарии (24)

Lewigh
25.04.2026 14:07Под разные задачи
Очень интересно было бы узнать под какие такие разные задачи, языки которые крутятся на одном и том же рантайме и отличаются только синтаксисом?

MishaBucha Автор
25.04.2026 14:07Вообще у котлина есть стадия компилятора для фронта -
Статья: https://kotlinlang.org/docs/compiler-phases.html#frontend-ir"Frontend (FE) ... performs call resolution, type inference, smart casts, etc. The result is binding context that maps PSI elements to descriptors (semantic model)."
И если мне не изменяет память она есть в любом компиляторе котлина, следовательно java будет лучше для каких-то annotation Processing например
А вот Котлин прижился у девопсов, многие файлы для девопсов, например файлы тимсити, написанные на kts
Так что разница все таки есть)
Lewigh
25.04.2026 14:07А вот Котлин прижился у девопсов, многие файлы для девопсов, например файлы тимсити, написанные на kts
Первый раз такое слышу. тимсити - детище JB не удивительно
Вообще у котлина есть стадия компилятора для фронта -
Т.е. Kotlin это язык для frontend? Или в чем задачи разные?

KvanTTT
25.04.2026 14:07Т.е. Kotlin это язык для frontend? Или в чем задачи разные?
Стадия компилятора не связана с классическим frontend - это внутренности компилятора. Но на Kotlin все же можно писать под Wasm/JS, а также под iOS (на самом деле Native в целом). И рантаймы там действительно другие, не JVM.

Lewigh
25.04.2026 14:07В теории то оно понятно, там и Scala в JS умеет. На практике в реальной жизни это либо андроид либо backend т.е. один к одному с джавой.

ermadmi78
25.04.2026 14:07Я в 2020 из за корутин перешёл, так как писать реактивные сервисы на Project Reactor/WebFlux тяжело, читать их больно, а отлаживать так просто пытка. С появлением Project Loom ситуация с написанием реактивных решений на Java улучшилась, но лично мне всё равно корутины больше нравятся, так как там все аспекты асинхронного программирования интуитивно понятны на уровне синтаксиса.
Ну и в целом на Kotlin писать гораздо приятнее и проще чем на Java. Говорю как человек, который 18 лет писал на Java и 5 лет на Kotlin.

Ioanna
25.04.2026 14:07все аспекты асинхронного программирования интуитивно понятны на уровне синтаксиса.
Как сказал один автор, в большинстве случаев достаточно просто добавить модификатор
suspend:-)

Lewigh
25.04.2026 14:07Ну и в целом на Kotlin писать гораздо приятнее и проще чем на Java. Говорю как человек, который 18 лет писал на Java и 5 лет на Kotlin.
Тогда лучше не пробовать C#. Можно словить разочарование от осознания - насколько на самом деле все нормально и удобно можно было сделать.

ermadmi78
25.04.2026 14:07Пробовал я C#, но очень давно, больше 20 лет назад. Хороший язык, удобный. Но я тогда сделал выбор в пользу экосистемы Java, так как работу на Java гораздо проще было найти. Мне кажется, что сейчас ситуация примерно такая же - рыночная доля Java гораздо шире, чем .Net и C#.
PS
Когда речь идёт о бекенд разработке, то я Kotlin причисляю к экосистеме Java.

Lewigh
25.04.2026 14:07Да, все так. Чудовищной ошибкой Microsoft было делать C# только под Windows. Жадность покоя не давала. Только в 2016 одумались и сделали кроссплатформу. Хоть доля C# на рынке большая до Java естественно не дотягивает. Но как язык и платформа C#/.net это прям пример как нужно делать.
ps. Занимательный забавный факт.
Java опередила C# за счет кроссплатформенности в свое время. Но если посмотреть сейчас, то почти все что пишут на Java это корпоративный бэкенды. Ну и мобилки (Kotlin). В то время как на C# пишут и бэкенды и фронтенды и десктопы и игры и CLI утилиты и чего только не пишут.

Ioanna
25.04.2026 14:07Автор, как я вас понимаю! У меня тоже на работе Python, а в душе́ - Kotlin. Называю себя Kotlin-энтузиастом.

kmatveev
25.04.2026 14:07Прошло уже больше полугода. Переход был полностью бесшовным.
Эх, молодежь! Полгода - это вообще ни о чём.

BugM
25.04.2026 14:07data class— и нет Lombok'а(понимаю, что в java есть прекрасный аналог -Record)?.let {}— и нетif (obj != null)whenкак expression — и нет многоэтажныхswitch/caseExtension functions — пишешь
"Kotlin".toSuperSugar()и кайфуешь, что не надо тащить утилитный класс
Рекорды, нормальные notnull аннотации таки сделали недавно, switch expression.
Последнее вроде удобно, но в любом проекте покрупнее стоит запретить. Ад с видимостью и конфликты того не стоят.
Работающие гринтреды тоже завезли. Все корутины вместе с реактом пора на пенсию отправлять.
Как-то несерьезны все эти преимущества.

AstarothAst
25.04.2026 14:07Не знаю кому как, а мне в свое время котлин показался write only языком - да, кода получается меньше, но он буквально провоцирует доводить это "меньше" до абсурда, после чего прочитать написанное становится не так-то и просто. Хотя, возможно я просто недостаточно долго на нем проработал.
ermadmi78
Я в 2020 с Java на Kotlin пересел. Работаю в enterprise. Проблем с поиском работы не испытывал.
Но если на Kotlin вы пишите backend, то Java вы должны знать. Т.к. 99% бековских фреймворков ориентированы на Java.
MishaBucha Автор
А вы back или мобилки пишите?
Мой личный опыт показал, что беда на рынке именно бэков котлина.
Возможно, сказалась общая ситуацию на рынке труда сейчас
ermadmi78
Я бэк делаю. Единственный момент, я обычно в качестве техлида/архитектора захожу, поэтому имею большое влияние на выбор стека.
MishaBucha Автор
Спасибо за ваш комментарий, интересно
ermadmi78
ИМХО, если вы нацелены на бэк, то не стоит опасаться требования Java/Kotlin в вакансии. То, что часть микросервисов написана на Java а часть на Kotlin - это обычная практика.
MishaBucha Автор
Вопрос больше в проценте написания котлина в таких вакансиях, что это обычная практика - понятно, не спорю