«Кому это нужно, когда есть православная Java?» Почему компании (не) переходят на Kotlin

Java vs Kotlin

В октябре прошлого года компании хвастали переходом с Java на Kotlin. Но не всё гладко. Официально компании не хотят комментировать ситуацию, но одни свернули эксперимент, другие только поддерживают существующий проект, третьи провели исследование и сделали вывод о нецелесообразности перехода на Kotlin. DEV.BY выяснял у разработчиков, что не так с языком от JetBrains.

«Возможно, ещё раз попробуем, но только не знаю, когда»

Участник Belarus Kotlin User Group и идейный вдохновитель  School.kt  Кирилл Розов говорит: 

— В Android-разработке Kotlin практически смёл Java в угол. Я, например, уже начинаю забывать, как писать на Java в силу того, что очень редко приходится к ней возвращаться.

Программисты всё чаще говорят менеджерам: давайте писать на Kotlin, потому что этот язык решает кучу проблем. Но в «большой Java» люди привыкли к своим фреймворкам и почему-то не хотят переходить. Очень часто «стопором» выступают заказчики, которые боятся получить в результате нестабильную систему.

Кирилл отмечает, что хуже всего компании переходят на Kotlin в бэкэнд-разработке: «уж очень она неповоротлива».

Руководитель юнита в PandaDoc Сергей Плевко говорит, что изначально в их компании бэкенд делали на Python, затем два года назад «было принято решение внести какое-то разнообразие — пусть будет ещё и Java».

— В какой-то момент, когда мы писали очередной сервис, в нас разгорелось инженерное любопытство — а давайте попробуем ещё и на Kotlin.

Это ведь реальный опыт: не просто в книжках почитать, а самим сделать что-то. При этом мы не ставили перед собой цель проверить, а «если всё будет классно — то и перейти». Мы стартанули сервис весной прошлого года. Это была чисто бэкэнд-разработка. 

Что было здорово.

  1. Начать писать на Kotlin джависту довольно легко. Открыл мануал, прочитал три-пять страниц, и можно делать.
  2. Пришлась по душе идея с конвертацией целых классов на Java в Kotlin-код. 

Что было не очень хорошо.

  1. В Java практически не встречается багов, так работает среда разработки, а на Kotlin постоянно возникали какие-то мелкие нестыковки. Они фиксились быстро, за час можно было разобраться, в чём проблема. Но тратить целый час на что-то, что не касается твоей непосредственной работы, — согласитесь, неприятно. 
  2. Сам процесс работы со средой немного подтормаживает. Но если на Java он не раздражает, то на Kotlin процессор постоянно грузится и грузится — и ты почему-то наполняешься негативом: «Ну что так медленно!» Хотя, возможно, это связано с нашим проектом и с какими-то нашими библиотеками. 
Java vs Kotlin

В целом мы завершили проект, сейчас периодически что-то по нему доделываем. Но так и не нашли никаких плюсов, почему Kotlin следует использовать и дальше. Да, это интересно. Да, это что-то новое. Но никаких существенных плюсов. Идея избавления от нулпоинтеров лично мне не очень понятна — это какая-то борьба с ветряными мельницами. И я бы не сказал, что проблема стоит так остро, что её нужно прямо «решать-решать». А работа со сторонними библиотеками, наоборот, иногда добавляет лишнего геморроя — ты начинаешь «изголяться», чтобы обойти все ограничения Kotlin.

Это был интересный эксперимент, но мы поняли, что плюсов в том, чтобы писать бэкэнд на Kotlin, особо нет, а разрабатывать не так удобно, как на Java. Я иногда предлагаю: давайте возьмём другой проект, переосмыслим весь наш опыт и сделаем по-другому — проведём ещё один эксперимент. Но пока никто не загорелся этой идеей. Возможно, когда-нибудь мы ещё раз попробуем, но только не знаю, когда. 

И ещё: когда я впервые закинул эту идею внутри команды, её поддержали, руководство сказало: «На твой страх и риск». Но если бы сейчас ко мне пришёл, например, заказчик и попросил: «Хочу на Kotlin», я бы предложил ему сначала взвесить все «за» и «против». Потому что писать сервис на Kotlin, просто ради того, чтобы писать на Kotlin — это так себе идея. 

Я также предупредил бы его, что добавление мультиязычности в целом усложняет систему, поэтому оно должно быть оправдано. С точки зрения бизнеса в том числе. 

«Компаниям не интересны новые языки. Инициатива идёт снизу»

Лидер белорусской Kotlin User Group Руслан Ибрагимов говорит, что ему известно о нескольких случаях, когда компании поднимали вопрос о переходе с Java на Kotlin. И отказывались от этой идеи. 

— Причины две. Во-первых, все они посчитали, что Kotlin не даёт достаточно преимуществ перед Java. А во-вторых, сейчас одна из компаний находится в процессе миграции со своих собственных серверов на Google Cloud, и её руководство не хотело накладывать один большой переход на другой. 

Хотелось бы, конечно, детальнее познакомиться с результатами их внутреннего ресёрча — но, увы. Могу добавить лишь, что они даже не пробовали написать что-то на Kotlin — просто собрали «за» и «против» в теории. Знаю также, что в Onde сейчас проверяют идею полностью перевести систему на Kotlin, используя Kotlin Native для iOS и Kotlin JS для Web приложений, вместо аналогичных компиляторов для Java.

Тенденция такова, что компаниям в большинстве своём не интересны новые языки. Инициатива скорее идёт снизу: разработчики знакомятся с языком, влюбляются — и пытаются донести до команды и менеджеров, что «есть такой классный Kotlin, мы хотели бы писать на нём». В ряде случаев к ним прислушиваются.

Разработка на Kotlin, кстати, — плюс для многих кандидатов на вакансию программиста в компании: я, например, ни за какие «коврижки» не променяю Kotlin на Java

Java vs Kotlin

«Разработчики Senior+ воспринимают любой новый язык как что-то одноразовое»

Бэкэнд-разработчик одной из компаний (пожелал остаться анонимным) рассказывает:

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

Вторая причина заключается в том, что за всё время существования JVM-платформы широкое распространение получил только Java. А Groovy, Scala и другие языки, пережив непродолжительный всплеск в своём развитии, потихоньку угасли. Памятуя об этом, большинство разработчиков уровня Senior+ (а они могут быть как среди менеджеров, так и на стороне заказчика) воспринимают любой новый язык как что-то одноразовое, о чём через неделю все забудут. Такие люди уже всё для себя решили — и какие бы ни были у вас аргументы, в споре они всегда дают универсальный ответ: «У меня есть Spring, Guava и так далее».

Не знаю, почему так получилось (хотя в душе догадываюсь), но закоренелые бэкенд-разработчики даже мегапопулярные языки, как JavaScript, воспринимают как что-то несерьёзное. А Node.Js или Kotlin — да кому это нужно, когда есть православная Java?! И хотя с приходом Serverless часть этих людей потихоньку начинает переобуваться, процесс этот очень медленный.

Ещё один собеседник dev.by отметил, что «жирный плюс к Java добавляют ещё в университете — ведь Kotlin не изучают в вузах». Руслан Ибрагимов соглашается с этим, но с оговоркой:

— Университет даёт базу, но в реальной жизни мы очень часто используем другие технологии. А с другой стороны те же JetBrains серьёзно вкладываются в образование — что очень заметно в России: у них есть свои курсы по Kotlin в техвузах. Возможно, и у нас такие появятся. 

Java vs Kotlin

«Плюс для хайринга разработчиков: кандидаты отдают предпочтение таким проектам» 

Полгода назад разработчики Bamboo Apps рассказывали, что, когда выбирали язык для проекта от Jaguar Land Rover «Kotlin ещё был „тёмной лошадкой“ — заказчик решил не рисковать». Тем не менее команда сделала задел для перехода.

СТО компании Сергей Мищенко говорит, что «вопрос миграции затем поднимался несколько раз». А сам переход на Kotlin начал активно обсуждаться в конце зимы, перед релизом. Сейчас, говорит Сергей, компания приняла окончательное решение. Он признаётся, что тому немало способствовало заявление «Kotlin — first» для разработки под Android на Google I/O: 

— Мы в процессе миграции. Но для полного перехода нужно дополнительное время, и мы решили начать с тестов. Это не часть продакшн-кода, они не идут в релиз.

Для участников нашей команды Kotlin более удобен, чем Java под Android. Также это плюс для хайринга разработчиков, так как кандидаты отдают предпочтение таким проектам.

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх