Меня зовут Маша, 33, тимлид Android-разработки в московском B2B-стартапе «ТрейдНоут». Мы делаем мобильное приложение для торговых представителей FMCG-сегмента (Coca-Cola, Henkel, Mars, Wrigley, региональные дистрибуторы), 22 человека в компании, MRR 17 миллионов. В команде я с зимы 2024, до этого 4 года в Tinkoff (тогда ещё Tinkoff) на Android-платформе.
Моя команда мобильной разработки - 7 человек, распределённая по России и СНГ. Я в Москве, Артур senior Android в Минске (UTC+3), Денис middle Android в Бишкеке (UTC+6), Олег senior iOS в Уфе (UTC+5), Катя middle iOS в Воронеже (UTC+3, как я), Никита middle Android в Москве, Лера junior fullstack в Москве. Разница часовых поясов между крайними точками - 3 часа.
Муж Даня, 34, frontend в одной из московских e-commerce-компаний. Детей нет.
В апреле в компании встал большой архитектурный вопрос: переходить ли на Kotlin Multiplatform (KMP) для шаринга бизнес-логики между Android и iOS. Сейчас две отдельные кодовые базы, дублирование бизнес-логики около 40% (модель данных, валидации, сетевой слой, парсеры). KMP - современный подход, но решение на 2-3 года вперёд с большими последствиями: если зайдём и не выйдет, переход обратно стоит 3-4 месяца.
Решение принципиальное, надо обсудить со всей командой мобильной разработки. Каждый на этом проекте 2+ года, у каждого мнение, основанное на личном опыте.
Как мы раньше принимали такие решения
До этого момента у нас было два больших архитектурных решения за последний год: переход на Coroutines в полном Android-стеке (октябрь 2024) и выбор фреймворка для тестов на iOS (январь 2025).
Оба решения принимались похожим образом:
- Я как тимлид готовила обзорный документ на 3-5 страниц.
- Назначала zoom-звонок на 1.5-2 часа на всю команду.
- На звонке давала презентацию 30 минут, потом обсуждение.
- Если не решили на первом звонке - второй через 5-7 дней.
Проблемы этого подхода:
- Звонок в 11:00 МСК = 14:00 у Дениса в Бишкеке. Самый разгар дня, но он часто на встречах с инфра-командой и пропускает.
- Звонок в 17:00 МСК = 19:00 у Олега в Уфе. Семья ужинает. Он периодически отказывался.
- Артур не любит zoom как формат - он медленно говорит, на нём плохо проходят его аргументы, потому что в группе обсуждение идёт быстро.
- Денис всегда молчит на звонках, потом письменно в чат через 2 дня присылает «я подумал, у меня другое мнение». Уже поздно.
- Я как тимлид модерирую разговор, теряя при этом время на собственные раздумья.
В среднем такие решения занимали 2-3 недели с двумя 1.5-часовыми звонками. Часто выходили без полного консенсуса, кто-то «согласен, но с оговоркой», и эти оговорки потом всплывали через месяц как архитектурные сомнения.
Архитектурный вопрос про KMP
Контекст для тех, кто не в Android-разработке: Kotlin Multiplatform (KMP) - технология JetBrains, позволяющая писать общую бизнес-логику на Kotlin и использовать её как в Android (нативно), так и в iOS (через сгенерированный фреймворк). Это решает дублирование логики, но требует от команды Android-разработчиков умения собирать iOS (нужно держать макбук, понимать xcode, ловить специфические iOS- ошибки в собранном коде). Это шаг с серьёзными последствиями.
Альтернативы:
- Остаться как есть, дублировать логику (текущая позиция, привычно)
- Flutter (всё переписать на Dart, отказаться от нативной разработки)
- React Native (то же что Flutter)
- KMP только для бизнес-логики, UI остаётся нативный
- KMP + Compose Multiplatform (включая UI)
В мае 5 я сидела за документом 5 страниц, готовила обзор. И поняла, что 2-часовой звонок этой команды о KMP закончится тем, что Денис промолчит, Олег скажет «я не за KMP вообще», Артур долго объяснит свои сомнения, и мы выйдем без решения через 2 недели и второй звонок.
В этот же вечер коллега по экс-Tinkoff Карина мне прислала ссылку на NeuroVerdict. Она там работает с апреля как тимлид, сказала «у нас распределённая команда, мы перешли на async-формат через этот сервис, скорость решений увеличилась в 3-4 раза».
Я зарегистрировалась 5 мая, попробовала на одной несложной задаче - сравнение библиотек для shimmer-анимаций. Получила 5 ответов + синтез за минуту, по делу. Поняла, как работает «расшаренные ссылки».
Что я сделала с KMP
Я подготовила не один документ для звонка, а 3 разных промпта в NeuroVerdict:
Промпт 1: «Сравнение KMP vs Flutter vs React Native vs дублирование кода для команды из 4 Android + 2 iOS + 1 fullstack. Бизнес-логика финтех/торговая, нужны интеграции с банками и платежами. Дать trade-offs, риски и реалистичные оценки сроков внедрения».
Промпт 2: «KMP в продакшене 2024-2026: реальные кейсы крупных компаний, метрики производительности iOS-сборки, известные сюрпризы на iOS-стороне, проблемы с интеграцией существующих iOS-библиотек».
Промпт 3: «Финансовая оценка перехода на KMP для команды текущего размера: время полного внедрения, рост скорости разработки новых фичей после внедрения, риски на инфраструктуре».
По каждому 5 моделей дали ответы + модератор синтезировал. Каждый ответ имеет кнопку «Поделиться» - URL вида neuroverdict.ru/shared/ [token], открывается без авторизации.
6 мая утром я в командный чат:
Команда, по KMP - давайте по-новому.
Я приготовила 3 промпта в neuroverdict, 5 моделей по каждому.
Не созваниваемся, не презентую. Прочитайте у себя в комфортный час.
Каждый из вас комментирует в треде в свой пик внимания.
Дедлайн на коллективное решение - четверг 11:00 МСК.
Если будут разногласия после этого - короткий звонок 30 минут в пятницу.
Ссылки:
[3 расшаренных URL]
В этот же день я уехала в Питер на конференцию (была заранее запланирована, не имела отношения к проекту). Команда сама.
Что произошло за 3 рабочих дня
Артур в Минске утром среды (10:30 по моему времени, у него тоже 10:30): «Я обычно медленно собираю мысли, мне нужно вечером. Сейчас выскажусь по первому впечатлению. Perplexity дал бенчмарки по KMP-проектам в продакшене Cash App, Netflix, ВКонтакте - убедительная база. Adoption растёт. Не вижу базовых рисков. Я за».
Вечером того же дня (по своему) Артур развёрнуто: «Прочитал внимательно. Меня смущает один момент в ответе Gemini - он сказал что Compose Multiplatform на iOS пока неустойчив. Это критично - мы тогда не сможем шарить UI, только бизнес-логику. С точки зрения объёма - бизнес-логика у нас примерно 60% дублирования, UI 80%. То есть KMP без Compose даст эффект в 60% от потенциального. Это всё равно много, но не "ура". Я за KMP только для бизнес-логики на старте». Подробное мнение, которое в звонке он бы не сформулировал так чётко.
Денис в Бишкеке к 11:00 утра четверга по своему (по моему уже 14:00, я отвечала ему через полчаса): «Я обычно молчу на звонках, тут проще. Согласен с Артуром, KMP только для бизнес-логики на старте. Дополнение - я смотрел Compose Multiplatform недавно для pet-проекта, на iOS пока неустойчив, проблемы с системными элементами (диалоги, кейборды). Через 1-1.5 года будет стабильнее. Голос за поэтапный подход: бизнес-логика сейчас, UI через 1.5 года, когда Compose Multiplatform созреет».
Олег в Уфе вечером среды (для него вечер) обстоятельно: «Я против KMP по одной причине - найм. На рынке senior iOS-разработчиков не очень много в принципе. KMP-разработчиков на iOS - ещё меньше. Если кто-то из меня или Кати уйдёт через год - замена будет 2-3 месяца дольше, потому что нам нужен будет не "iOS-разработчик", а "iOS-разработчик с KMP-опытом". Это аргумент против. Не "никогда", а "пока рынок не созрел"». Сильное возражение, которое он бы на звонке не успел развернуть.
Катя в Воронеже утром четверга (10:00 по нашему): «Я перечитала ответы. Меня зацепил Grok: "у вас команда 4 Android + 2 iOS + 1 fullstack, KMP даёт максимальный выигрыш когда команда симметричная или iOS-сильнее. У вас Android доминирует. Шаринг кода - симметричное решение для асимметричной команды. Возможно стоит подумать про обратное: на iOS написать тонкую обёртку над Android-логикой, вынеся бизнес-слой в backend". Это перевернуло мой взгляд. Я не уверена что это правильно для нас, но я хочу обсудить серьёзно». Категорически новый ракурс.
Никита в Москве к четвергу: «За KMP только для бизнес-логики на старте. Поэтапный подход - 2-3 месяца на инфраструктуру, 3-4 месяца на миграцию core-модулей, к концу 2026 будет работать. Согласен с Артуром и Денисом».
Лера (junior) в Москве к четвергу: «Я junior, мне сложно оценивать архитектурное решение. Но из синтеза модератора понятно, что у нас 3 за с оговорками (бизнес-логика да, UI пока нет), 1 против (Олег по найму), 1 переворачивает рамку (Катя по асимметричной команде). Это значит, что одного правильного ответа нет. Может стоит сделать спайк на 2 недели на одной фиче и проверить гипотезу?». Спокойное предложение, которое в звонке младший вряд ли бы предложил.
К 11:00 четверга у меня в треде 6 обстоятельных мнений (плюс второй комментарий Артура с углублением). У 5 из 7 человек - вариант «KMP только для бизнес-логики на старте». У Олега - возражение по найму. У Катя - предложение пересмотреть направление шаринга. У Леры - предложение спайка.
В пятницу 8 мая я подсобрала это в один комментарий: «спайк 2 недели на одной фиче (например, выбор поставщика - сложная бизнес- логика, 800-1000 строк). Если в спайке всё пойдёт быстро и без сюрпризов - идём в KMP только для бизнес-логики на старте, по плану Никиты. Если выйдут сюрпризы - возвращаемся к разговору, учитывая возражение Олега и переворот Кати». Согласовали в чате, 1 короткий звонок 30 минут на пятницу подтвердить и распределить задачи на спайк.
Через пять дней спайка
Спайк начали в понедельник 11 мая (Никита + Олег как pair). К сегодняшнему вечеру (пятница 15 мая) на фиче «выбор поставщика» переписали бизнес-слой в KMP, успели протестировать Android. iOS прогон запланирован на следующую неделю. Из того, что уже видно: интеграция с одной старой ObjC-библиотекой потребует переработки (2 дня вместо 0.5 запланированных). Остальное идёт по плану.
К концу спайка (26 мая) поймём окончательно. План пока такой: если прогон iOS пройдёт без катастрофических находок - идём в KMP для бизнес-логики, полное внедрение к концу 2026; UI остаётся нативным до созревания Compose Multiplatform (пересмотр в Q3 2027). Возражение Олега по найму учтено - команда не растёт в 2026, а если будем нанимать в 2027 - открываем позицию «iOS + KMP» с премией +15% к рынку.
Принципиальный архитектурный вопрос, который раньше у нас бы занял 2-3 недели + 2 неудобных звонка + 2-3 «несогласных с оговорками» - занял 3 рабочих дня обсуждения + 1 короткий звонок + полный консенсус всех 7 человек.
Что я для себя выписала
Расшаренные ссылки на ответы нескольких моделей - это инструмент для распределённой команды, не для одного человека. Один человек у себя в браузере открыл NeuroVerdict, прочитал 5 ответов, принял решение - это нормально. Для команды важно, что у каждого участника открыты те же 5 ответов в его удобный час, и он может комментировать прицельно: «у Перплексити в третьем абзаце вот эта цифра», «по ответу Клода я не согласен по такому-то пункту».
Это не «звонок, на котором все молчат». Это асинхронный thread, в котором каждый раскрывается в своём темпе. Артур у меня обычно молчит на звонках - в текстовом формате он дал самое сильное мнение. Денис вообще не любит speak-up - в треде он дал глубокий аналитический ответ. Лера-junior на звонке бы не предложила спайк - в треде предложила.
Раньше у меня была установка «архитектурное решение - это серьёзный звонок». Сейчас я понимаю - архитектурное решение это набор обоснованных мнений в одном поле, к которому каждый имеет доступ в свой пик. Звонок нужен для финального утверждения, не для рождения мнения.
Карина, которая мне всё это рассказала, в среду на корпоративе Tinkoff-выпускников спросила: «как KMP?». Я сказала «приняли за 3 дня вместо 3 недель, спасибо тебе». Карина улыбнулась: «ну я же говорила. У нас теперь даже спринт-планирования так делаются - расшаренный промпт по приоритетам недели, каждый предлагает в треде, скрам-мастер собирает».
Если у вас сейчас распределённая команда и регулярные архитектурные обсуждения - попробуйте расшаренные ссылки на ответы 5 моделей в NeuroVerdict. Один промпт, один URL, все участники в свой пик читают и комментируют один и тот же материал. У нас это сэкономило 2 недели + 2 неудобных звонка по KMP. На следующем большом решении сэкономит больше.