Всем привет! Меня зовут Михаил, я главный эксперт в ОТП банке.

Несколько лет я мечтал поработать на 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/case

  • Extension functions — пишешь "Kotlin".toSuperSugar() и кайфуешь, что не надо тащить утилитный класс

Я кайфовал. Не громкое слово — реально кайфовал.

Параллельно общался с бывшими коллегамиНекоторых надоумил посмотреть в сторону Kotlin.

В общем, я получил шикарный опыт. Язык мне реально зашёл. И я уже тогда думал: "На Kotlin хочу работать и дальше".

я под синтаксическим сахаром
я под синтаксическим сахаром

Стадия 4 - выход на рынок Kotlin

Спустя полтора года я понял, что надо уходить.

Давка со стороны руководства. Нереальные сроки. Полный треш в целом.

Я вышел на рынок с чёткой позицией: хочу остаться на Kotlin.

Искал вакансии: либо чистый Kotlin, либо Java/Kotlin с уклоном именно в Kotlin. Мобилки честно скипал - я веб-разработчик, не моё.

Искал очень долго. Месяцы. Десятки созвонов и собеседований.

И на каждом задавал один и тот же вопрос:
"В каком соотношении у вас Java и Kotlin? Где пишут на Kotlin?"

Ответы были двух типов:

  1. "Наша команда думает переезжать на Kotlin… но пока планов нет."

  2. "У нас есть один сервис на 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)


  1. ermadmi78
    25.04.2026 14:07

    Kotlin - редкий зверь в российском enterprise.

    Я в 2020 с Java на Kotlin пересел. Работаю в enterprise. Проблем с поиском работы не испытывал.

    Но если на Kotlin вы пишите backend, то Java вы должны знать. Т.к. 99% бековских фреймворков ориентированы на Java.


    1. MishaBucha Автор
      25.04.2026 14:07

      А вы back или мобилки пишите?

      Мой личный опыт показал, что беда на рынке именно бэков котлина.

      Возможно, сказалась общая ситуацию на рынке труда сейчас


      1. ermadmi78
        25.04.2026 14:07

        Я бэк делаю. Единственный момент, я обычно в качестве техлида/архитектора захожу, поэтому имею большое влияние на выбор стека.


        1. MishaBucha Автор
          25.04.2026 14:07

          Спасибо за ваш комментарий, интересно


      1. ermadmi78
        25.04.2026 14:07

        ИМХО, если вы нацелены на бэк, то не стоит опасаться требования Java/Kotlin в вакансии. То, что часть микросервисов написана на Java а часть на Kotlin - это обычная практика.


        1. MishaBucha Автор
          25.04.2026 14:07

          Вопрос больше в проценте написания котлина в таких вакансиях, что это обычная практика - понятно, не спорю


  1. EAS120
    25.04.2026 14:07

    Огонь!


  1. Lewigh
    25.04.2026 14:07

    Под разные задачи

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


    1. 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

      Так что разница все таки есть)


      1. Lewigh
        25.04.2026 14:07

        А вот Котлин прижился у девопсов, многие файлы для девопсов, например файлы тимсити, написанные на kts

        Первый раз такое слышу. тимсити - детище JB не удивительно

        Вообще у котлина есть стадия компилятора для фронта -

        Т.е. Kotlin это язык для frontend? Или в чем задачи разные?


        1. KvanTTT
          25.04.2026 14:07

          Т.е. Kotlin это язык для frontend? Или в чем задачи разные?

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


          1. Lewigh
            25.04.2026 14:07

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


    1. ermadmi78
      25.04.2026 14:07

      Я в 2020 из за корутин перешёл, так как писать реактивные сервисы на Project Reactor/WebFlux тяжело, читать их больно, а отлаживать так просто пытка. С появлением Project Loom ситуация с написанием реактивных решений на Java улучшилась, но лично мне всё равно корутины больше нравятся, так как там все аспекты асинхронного программирования интуитивно понятны на уровне синтаксиса.

      Ну и в целом на Kotlin писать гораздо приятнее и проще чем на Java. Говорю как человек, который 18 лет писал на Java и 5 лет на Kotlin.


      1. Ioanna
        25.04.2026 14:07

        все аспекты асинхронного программирования интуитивно понятны на уровне синтаксиса.

        Как сказал один автор, в большинстве случаев достаточно просто добавить модификатор suspend :-)


      1. Lewigh
        25.04.2026 14:07

        Ну и в целом на Kotlin писать гораздо приятнее и проще чем на Java. Говорю как человек, который 18 лет писал на Java и 5 лет на Kotlin.

        Тогда лучше не пробовать C#. Можно словить разочарование от осознания - насколько на самом деле все нормально и удобно можно было сделать.


        1. ermadmi78
          25.04.2026 14:07

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

          PS

          Когда речь идёт о бекенд разработке, то я Kotlin причисляю к экосистеме Java.


          1. Lewigh
            25.04.2026 14:07

            Да, все так. Чудовищной ошибкой Microsoft было делать C# только под Windows. Жадность покоя не давала. Только в 2016 одумались и сделали кроссплатформу. Хоть доля C# на рынке большая до Java естественно не дотягивает. Но как язык и платформа C#/.net это прям пример как нужно делать.

            ps. Занимательный забавный факт.

            Java опередила C# за счет кроссплатформенности в свое время. Но если посмотреть сейчас, то почти все что пишут на Java это корпоративный бэкенды. Ну и мобилки (Kotlin). В то время как на C# пишут и бэкенды и фронтенды и десктопы и игры и CLI утилиты и чего только не пишут.


  1. Ioanna
    25.04.2026 14:07

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


    1. MishaBucha Автор
      25.04.2026 14:07

      Создаем свою секту по котлину значит)


  1. kmatveev
    25.04.2026 14:07

    Прошло уже больше полугода. Переход был полностью бесшовным.

    Эх, молодежь! Полгода - это вообще ни о чём.


  1. BugM
    25.04.2026 14:07

    • data class — и нет Lombok'а(понимаю, что в java есть прекрасный аналог - Record)

    • ?.let {} — и нет if (obj != null)

    • when как expression — и нет многоэтажных switch/case

    • Extension functions — пишешь "Kotlin".toSuperSugar() и кайфуешь, что не надо тащить утилитный класс

    Рекорды, нормальные notnull аннотации таки сделали недавно, switch expression.

    Последнее вроде удобно, но в любом проекте покрупнее стоит запретить. Ад с видимостью и конфликты того не стоят.

    Работающие гринтреды тоже завезли. Все корутины вместе с реактом пора на пенсию отправлять.

    Как-то несерьезны все эти преимущества.


    1. NN1
      25.04.2026 14:07

      Это в мире где все обновились.

      А на деле только вот сейчас работают над переходом на 17 с 11.

      Так что Kotlin вари таком раскладе здоров облегчает жизнь.


      1. BugM
        25.04.2026 14:07

        Обновить джаву точно проще миграции на другой язык.


  1. AstarothAst
    25.04.2026 14:07

    Не знаю кому как, а мне в свое время котлин показался write only языком - да, кода получается меньше, но он буквально провоцирует доводить это "меньше" до абсурда, после чего прочитать написанное становится не так-то и просто. Хотя, возможно я просто недостаточно долго на нем проработал.