Сложные разговоры с разработчиками

20 ноября 2024 г.

Вчера у меня был очень долгий разговор с СТО после ещё более долгого перепирания в комментах под пулл-реквестом для простой, но очень ценной фичи.

Фича была в OKR на ноябрь как "stretch" — это означает, что мы делаем её только если мы закончили всё, на что мы закоммитились. Но я решил всё равно её запилить заодно с другой фичей в том же файле...

Это всего лишь несколько строчек кода, у меня пара часов до конца рабочего дня... What could go wrong??

Мы оба согласились, что фичу лучше было запилить в другом месте (на бэкэнде вместо фронтенда), но упёрлись в камень преткновения.

Суть разногласия можно свести к фундаментальному принципу "что мы приоритизируем — скорость релиза или правильность кода?"

Его поинт был в том, что, добавляя лишний код на фронт, мы делаем код приложения сложнее, чем нужно. Это в свою очередь создаёт проблемы при тестировании и обновлении зависимостей (в прошлый раз он потерял 3 дня на обновления, сломавшие приложение).

Мой поинт был в том, что у нас есть возможность шипнуть классную фичу небольшими усилиями.

СТО: На бэкенде это почти так же легко, как на фронте. Почему сразу не сделать правильно?

Я: "Просто" зависит от того, кто делает имплементацию. Для тебя это просто, но ты занят другими, более приоритетными и сложными задачами. Я почти не писал код для нашего бэкенда и мне подтребовалась бы минимум неделя + твоя помощь, чтобы это сделать. Твоё время очень ценно и я не хочу тебя отвлекать.

Так как приоритет фичи низкий, мы отложим её на пару месяцев, а то и дольше. Таким образом, упустим возможность шипнуть что-то небольшое, но ценное "почти бесплатно" прямо сейчас.

СТО: Но это усложняет фронтенд... (мы начали ходить кругами)

Я: Этот код будет легко вырезать и заменить новым на бэкенде.

СТО: Зачем это нужно, если можно сразу сделать правильно?

Я: Но я уже сделал как сделал. Код на 90% готов. Давай шипнем уже.

СТО: Ок, но сделай X, Y & Z.

Я: Ок.

Этот диалог занял почти час с различными ответвлениями и эмоциональными реакциями.

Мне, конечно же, было бы проще, если бы СТО просто аппрувнул мой код и мы бы шипнули фичу вчера. Но, работая с ним, я начал ценить "правильность" кода, в котором легко работать и добавлять новые фичи. Если бы мы подходили к коду по-ковбойски (как я), то я бы не смог запилить эту фичу так быстро.

Работая со мной, мой СТО испытывает давление по скорости имплементации. Мы — не Амазон, где можно годами обтачивать код напильником. Нам нужны пользователи, готовые платить за ценность. Если бы мы оба были перфекционистами, мы бы до сих пор ничего не запустили в проде.

Таким образом, сталкиваясь упёртыми лбами, мы находимся в постоянном трении и учимся друг у друга. Периодические конфликты на уровне ценностей помогают нам лучше скалиброваться и начать больше ценить аспекты, на которые инстинктивно мы закрываем глаза.

Итог «простого изменения» ради быстрой фичи:

  • 500 измененных строк кода в 8 файлах
  • 36 коммитов
  • 173 комментария (самое большое из всех наших PR за полтора года)
  • 2 часа на телефоне
  • Неучтенное количество сообщений в чате
  • Неделя календарного времени

Я многому научился за эту неделю через боль. Когда больно, учишься лучше. Нейронные связи выжигаются в мозге паяльником и никуда уже не денутся.

И всё ради вот этого - в Metacast теперь можно кликать таймкоды в описании эпизода и прыгать на интересный кусок подкаста.

Фича пока в бете. Выкатим через неделю.