Kotlin Multiplatform может сократить время разработки на 30 процентов — об этом написали статью наши коллеги из компании Archer Software. Они подробно разобрали проблемы, которые возникают в процессе работы, и то, может ли кроссплатформенная технология их решить. Мы считаем, что материал нужный и полезный, поэтому публикуем в бло перевод.  Если учесть, что в мире ежегодно появляется 100 миллионов стартапов, то время вывода продукта на рынок теперь намного важнее стоимости. Пользователи становятся все требовательнее, поэтому разработчикам лучше выбирать нативные решения. Однако приложение сразу под три платформы: Android, iOS и десктоп — обойдется клиенту в три раза дороже. Но можно пойти другим путем и создать универсальный код, который работает одинаково на всех платформах.  Как правило, при разработке мультиплатформенных нативных приложений несколько команд работают независимо друг от друга. Конечно, им нужно общаться и обмениваться результатами, но в процессе координации возникает ряд проблем. Две независимые команды могут придумать разные подходы к решению задачи клиента, поэтому версии приложения для разных операционных систем будут выглядеть и работать по-разному. Особенно если у пользователя разные устройства для запуска одного и того же приложения, например iPhone, планшет Android и десктоп на Windows. Важно, чтобы удаленные коллективы могли быстро обмениваться информацией, тем более когда две команды одновременно создают приложение для разных операционных систем.  Например, клиент может дать одной из команд новую задачу, а вторая команда будет продолжать заниматься тем, что делала раньше. Получится два разных результата.  Каждая из операционных систем предъявляет свои требования к качеству продукта, в особенности — к пользовательскому интерфейсу, который должен максимально соответствовать конструкции устройств, использующих эту ОС.  Для каждой платформы используют разные языки, фреймворки и библиотеки. Но при этом разработчики должны построить два приложения с максимально идентичным пользовательским интерфейсом. В идеале код должен быть настолько понятным, чтобы любой специалист, владеющий определенным языком программирования, мог разобраться, как он работает.  На деле часто получается спагетти-код — запутанная и сложная программа. Поэтому заменить или усилить членов группы разработчиков сложно. Новичку приходится тратить слишком много времени, чтобы включиться в работу. Он просто разбирается с тем, что написали до него.  Процесс разработки нужно как-то синхронизировать. Кажется, что единственный выход — использовать одну кроссплатформенную технологию, которая способна хранить и применять код для различных операционных систем. Однако все не так радужно, как хотелось бы. Недостатки кроссплатформенных решений: Эти недостатки не настолько критичны, если знать, как с ними справляться. Чтобы ускорить разработку и облегчить взаимодействие между отдельными командами, наша компания использует Kotlin. Что такое Kotlin Multiplatform? Это язык программирования с открытым исходным кодом, позволяющий создавать максимально чистый код. С ним не нужно делать одну и ту же работу дважды. Например, если мы создаем приложение для Android и iOS, мы можем частично использовать один и тот же код. Kotlin для Android, iOS и других популярных операционных систем хранит фрагменты кода, которые можно использовать для двух и более версий приложения. На Kotlin мы пишем общий код, а затем компилируем его в нативные фреймворки с ссылкой на нативные Android и iOS проекты. Функции, которые неэффективно кодить с помощью Kotlin, можно прописать в нативной среде. Так ниже риск разработки двух или более решений для разных платформ. И это не единственное преимущество. Значительная экономия денег и времени. Разработчики при работе на Kotlin экономят 30–50% рабочего времени. Поэтому экономит и клиент: разработчикам не надо платить за то, что они воспроизводят один и тот же код несколько раз. Меньше ошибок. Kotlin позволяет создавать максимально чистый код. Однако, если ошибки все-таки закрались, их можно найти и исправить до начала исполнения. Это экономит время и деньги в процессе тестирования и контроля качества (QA).  Эффективная работа в команде. Kotlin помогает командам программистов взаимодействовать и фокусироваться на приоритетных задачах. Более того, он позволяет распределять задачи между разработчиками. Например, команда Android может работать над реализацией регистрации (user signup flow), а команда iOS — созданием поста (post create flow). На следующем этапе команда Android может использовать код, написанный командой iOS, и наоборот. Практически нативное решение. Код Kotlin очень похож на Swift и на 100% совместим с Java. Несмотря на все плюсы, есть также минусы, которые следует учитывать, принимая решение в пользу языка программирования Kotlin. Разработчики часто спрашивают, как можно бесплатно изучить Kotlin или сколько времени на это нужно. Изучать основы вы можете бесплатно. Если владеете Java, вам потребуется меньше времени, чтобы их освоить.  Тем не менее, не стоит ждать, что ваша команда разработчиков переключится на Kotlin через несколько часов. Переход потребует дополнительного времени и затрат на обучение. Так что лучше: Kotlin или Java? Это зависит от цели, которую вы хотите достичь. Конечно, для решения конкретных задач лучше нанимать программистов с опытом разработки на Kotlin Multiplatform. Но найти им замену нелегко, потому что технология не так широко распространена, как нативные языки программирования. Если вам нужно приложение для двух платформ и веб-версия, обращайтесь к экспертам по Kotlin, это беспроигрышный вариант. Мы в компании IceRock Development, как и наши коллеги в Archer Software, знаем, насколько он эффективен.  Наша компания делает заметный вклад в развитие технологии Kotlin Multiplatform: Приходите к нам, и мы покажем, как Kotlin Multiplatform может быть полезен вашему бизнесу!  Разработчики мобильных приложений на KMM