Всем привет, у меня скорее менеджерский вопрос.
Вопросы:
1. Как объяснить менеджеру, что нужно переписать все приложение на современный стэк технологий?
2. Возможно ли как измерить ценность от смены фреймворка для конечного пользователя продукта?
3. Возможно, вы знаете какие-нибудь статьи о том, как принимать решения о миграции с менеджерской точки зрения? Я нахожу в интернете только материалы про технические преимущества в миграции на тот или иной стэк технологий.
Контекст:
Работаю фронтендщиком в продукте, по скраму, в команде с еще не сформированными процессами.
Фронтенд в этом продукте - это легаси SPA, написанный не текущей командой разработчиков, и у него есть некоторые проблемы:
1. Он написан на JQuery, со всеми вытекающими
2. При проектировании проекта не предвидели объема функционала, который необходим сейчас
3. Торопились, когда писали, в связи с чем применили не самые хорошие архитектурные подходы.
Из-за этих проблем наша команда сейчас испытывает следующие боли:
1. Для создания простого компонента необходимо большое количество boilerplate кода
2. Приходится поддерживать постоянно ломающиеся кастомные решения типичных фронтедерских задач.
3. Задачи выполняются долго, а когда выполнятся оставляют большой хвост из багов, которые никто не отловил.
Командой разработки пришли к выводу, что это симптомы того, что нужен рефакторинг и миграции на современный стэк технологий.
Проблема возникла в коммуникации с Product Owner, он не против миграции, но его в первую очередь интересует ценность, которую получит пользователь конечного продукта. И просит привести КАКИЕ-НИБУДЬ статистические показатели, по которым он сможет принять решение:
1. Стоит ли это делать?
2. Когда это нужно делать?
Очевидные ответы в духе:
1. Меньше кода нужно написать => Быстрее делается задача => Увеличивается Time To Market
2. Внедрение типизации => меньше багов на продакшене
Были отвергнуты как слишком не конкретные.
Развернутый ответ.
Начну с контекста (мало ли, вдруг кто-то из читающих не в теме что за хрен с горы отвечает)
У меня была 7 лет своя компания, поэтому я понимаю позиции бизнеса, сейчас я Senior Frontend Engineer в GitLab. 85% нашего кода - это jquery + bootstrap + HAML. Это больно, это тяжело поддерживать, нам приходится мейнтейнить некоторые библиотеки, которые уже заброшены создателями.
Начнем с кратких ответов на озвученные вопросы.
1. Как объяснить менеджеру, что нужно переписать всё приложение на современный стек технологий?
Предоставить ему понимание не только выгод от этого процесса, но и рисков, которые он несет. Поскольку риски почти всегда проекто-специфичны чужой опыт почти наверянка будет для вас бесполезен чуть более чем полностью, поэтому все "вот статья" являются оценкой сферических коней в вакууме, слабо применимыми к вашему конкретному проекту
2. Можно ли как-то измерить ценность от смены фреймворка?
Для конечного пользователя - нет. Потому что пользователь желает функциональности и ему все-равно что под капотом - почтовые голуби, магия или JQuery. Для бизнеса - да, если у вас есть скрам и правильные стори-пойнты (когда технический долг и баги не имеют сторипойнтов), то переход на новый фреймворк должен привести к увеличению velocity команды (сколько пойнтов команда закрывает в спринт).
Ок, вы скажете, но ведь вначале пока будем переезжать скорость вообще упадет почти до нуля? Про это мы сейчас поговорим чуть ниже
3. Возможно вы знаете какие-нибудь статьи о том как принимать решения о миграции?
Честно говоря не знаю, но и не уверен, что такие статьи вовсе нужны. Это классическая задача об инвестициях в производство и решается она просто, о чем мы поговорим ниже.
Теперь о болях:
1. Для создания простого компонента необходимо большое количество boilerplate-кода
Для решения этого точно не нужен фреймворк. Любая штука для кодогенерации + чу-чуть времени выйлет дешевле
2. Приходится поддерживать постоянно ломающиеся кастомные решения
Здесь аргумент принят и логичен
3. Задачи выполняются долго, а когда выполняются остается большой хвост из багов, которые никто не отловил.
Здесь у меня возникает вопрос - почему вы считаете что переход на новый фреймворк решит проблему "большого хвоста из багов которые никто не отловил" - увы и ах, фреймворк сам багов не ловит
Теперь по-поводу главного ответа на "стоит ли это делать и когда нужно делать". Ответ "когда" банален до ужаса - когда это имеет экономический смысл. Мы бы могли сейчас застопорить всю разработку гитлаба и переписать все на Vue (мы прибыльны, у нас позитивный кешфлоу, представьте насколько бы это ускорило разработку фронта в будущем), но в масштабах грядущего IPO/Direct listing в этом году - это было бы самоубийство в глазах инвесторов.
Стоит ли делать? Здесь поможет только эксперимент. Самое правильное решение - взять задачу, которую хорошо можно изолировать от существующей системы или наиболее проблемный кусок существующей системы. Разбить эту задачу на два этапа - "подготовительный" - вам понадобится написать какое-то количества кода допустим для взаимодействия legacy-приложения и какой-вы-фреймворк-возьмете и брать его в оценку задачи неверно, и "реализация" - когда вы реализовываете этот кусок на новом фреймворке. Дальше вы смотрите на результат, и отвечаете на вопросы, насколько это удовлетворяет вашим потребностям в скорости.
Фактически, ваше решение предлает продукт оунеру прийти в казино и всё поставить на чёрное. Естественно, его эта идея немного... нервирует. Предложите ему небольшой риск в рамках 1-2 спринтов, который он может принять даже если ставка не сыграет. Вы же получите конкретные метрики.
НЕСОМНЕННО эффект будет ниже, чем если бы "все сразу" было переписано, но важно что все это понимают. И 10 денег потраченные в течение 10 спринтов гораздо выгоднее чем 100 денег потраченные в один спринт.