Вчера у меня был очень долгий разговор с СТО после ещё более долгого перепирания в комментах под пулл-реквестом для простой, но очень ценной фичи.
Фича была в OKR на ноябрь как "stretch" — это означает, что мы делаем её только если мы закончили всё, на что мы закоммитились. Но я решил всё равно её запилить заодно с другой фичей в том же файле...
Это всего лишь несколько строчек кода, у меня пара часов до конца рабочего дня... What could go wrong??
Мы оба согласились, что фичу лучше было запилить в другом месте (на бэкэнде вместо фронтенда), но упёрлись в камень преткновения.
Суть разногласия можно свести к фундаментальному принципу "что мы приоритизируем — скорость релиза или правильность кода?"
Его поинт был в том, что, добавляя лишний код на фронт, мы делаем код приложения сложнее, чем нужно. Это в свою очередь создаёт проблемы при тестировании и обновлении зависимостей (в прошлый раз он потерял 3 дня на обновления, сломавшие приложение).
Мой поинт был в том, что у нас есть возможность шипнуть классную фичу небольшими усилиями.
СТО: На бэкенде это почти так же легко, как на фронте. Почему сразу не сделать правильно?
Я: "Просто" зависит от того, кто делает имплементацию. Для тебя это просто, но ты занят другими, более приоритетными и сложными задачами. Я почти не писал код для нашего бэкенда и мне подтребовалась бы минимум неделя + твоя помощь, чтобы это сделать. Твоё время очень ценно и я не хочу тебя отвлекать.
Так как приоритет фичи низкий, мы отложим её на пару месяцев, а то и дольше. Таким образом, упустим возможность шипнуть что-то небольшое, но ценное "почти бесплатно" прямо сейчас.
СТО: Но это усложняет фронтенд... (мы начали ходить кругами)
Я: Этот код будет легко вырезать и заменить новым на бэкенде.
СТО: Зачем это нужно, если можно сразу сделать правильно?
Я: Но я уже сделал как сделал. Код на 90% готов. Давай шипнем уже.
СТО: Ок, но сделай X, Y & Z.
Я: Ок.
Этот диалог занял почти час с различными ответвлениями и эмоциональными реакциями.
Мне, конечно же, было бы проще, если бы СТО просто аппрувнул мой код и мы бы шипнули фичу вчера. Но, работая с ним, я начал ценить "правильность" кода, в котором легко работать и добавлять новые фичи. Если бы мы подходили к коду по-ковбойски (как я), то я бы не смог запилить эту фичу так быстро.
Работая со мной, мой СТО испытывает давление по скорости имплементации. Мы — не Амазон, где можно годами обтачивать код напильником. Нам нужны пользователи, готовые платить за ценность. Если бы мы оба были перфекционистами, мы бы до сих пор ничего не запустили в проде.
Таким образом, сталкиваясь упёртыми лбами, мы находимся в постоянном трении и учимся друг у друга. Периодические конфликты на уровне ценностей помогают нам лучше скалиброваться и начать больше ценить аспекты, на которые инстинктивно мы закрываем глаза.
@ilyabezdelev_blog #разработка