#технический долг

3 постов
пост №1815

Встречали это «вечное противостояние» между продактами и разрабами? Каждый думает, что лучше знает, что делать с продуктом:

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

Раньше я думал, это — «здоровый производственный конфликт». Теперь я считаю, что это — признаки «бытовой неустроенности», того, что с разработкой в компании есть проблемы. К сожалению, 90% команд живёт в этом состоянии.

До конца недели я буду отвечать на вопросы о разработке в телеграм-канале «продуктовая культура». Если вопрос будет касаться взаимодействия продакта и разработки, отвечу я. Если вопрос со стороны технических специалистов про продукт, продуктовые циклы и всё это — ответит Валерия Розова, основательница курса «менеджер продукта».

Я приму участие в этом курсе — но об этом в следующий раз.

пост №1451

Закончил на днях технический аудит очередного клиента. Хочу поделиться историей, которую вижу буквально в каждом втором случае.

Начинается новый бизнес, сильно завязанный на софте. Первое время, все классно: один программист — хорошо, два — почти в два раза лучше. 10 программистов — можно делать вещи, о которых раньше и помыслить было нельзя.

Через 3-6 лет в компании уже 50 разработчиков. Продукт при этом практически не развивается, фичи доставляются разработкой в продакшен со скорость улитки. Добавьте к этому зарплаты разработчиков в 100-400 тысяч в месяц и вы можете представить, что чувствует бизнес. Почему так?

А происходило вот что: все эти годы, каждый раз, когда нужно было выбрать между «сделать фичу побыстрее прямо сейчас» и «сделать так, чтобы это можно было потом поддерживать, пусть и подольше прямо сейчас» — бизнес с разработкой вместе выбирали первый вариант. Логично, что рано или поздно гора неподдерживабельного кода становится слишком высокой и уже никто не может докинуть ещё что-то сверху.

Сложно винить в этом бизнес: они не обладают компетенцией, чтобы ясно увидеть, как копают себе яму. Сложно винить разработку: спорить с бизнесом очень трудно, они профессиональные переговорщики, а объяснять разработку не-технарям — редкий скилл, отличный от умения писать крутой софт. Вообще, этот процесс требует взаимного доверия и открытости, когда бизнес пытается вникнуть в разработку, а разработка — подумать о бизнесе, с помощью друг-друга.

В общем, искать виноватого смысла нет, а варианты решений следующие:

1. Если это допустимо, то перевести проект в режим поддержки, пусть зарабатывает сколько может, большую часть команды уволить или перекинуть на новый бизнес-проект. Этот вариант выглядит радикальным, но по сути — самый простой, не требующий изменений подходов к работе. Вариант со звездочкой — с помощью той же команды написать с нуля новое решение — конкурента старому, учтя уроки прошлого.

2. Если же вам нужно развивать то, что есть — то впереди вас ждут пот и слёзы.

Во первых, признайте, что это не случайность и не временные трудности, а капитальная жопа, выбираться из которой месяцы, если не годы. Быстрых и дешевых решений, к сожалению, нет. И нет, применение нового фреймворка типа эджайла или канбана — не поможет.

Нужно отдавать технические долги и приводить код в порядок. Технически, есть несколько основных подходов и обычно используется их комбинация. Подход первый: выделить изолированный кусочек проекта и переписать его «начисто», минимально затрагивая остальные части. Подход второй: начать писать тесты поверх функциональности, которая есть. И тд и тп. Это — исключительно сложная инженерная работа. В несколько раз сложнее, чем написать аналогичный проект с нуля. Плюс в том, что вы так потеряете меньше знаний, который вложили в продукт за эти годы.

Организационно, вам придётся выделять на это адское количество времени и сил. Речь о 30-50% времени ваших инженеров. Результаты, в плане увеличения скорости разработки, вы увидите через месяцы в лучшем случае. Другого пути я не знаю.

Также, имеет смысл добавить в команду новых опытных бойцов. Дело тут не только в технической компетентности, но и в отсутствии психологических «долгов», свежести и незамутненности взгляда, в четком мандате на перемены. Желательно, чтобы человек уже имел опыт подобного рефакторинга.

В общем, это — путь смелых.

Добавлю, что обычно, ко всем этим техническим проблемам добавляется ещё и нежелание признать реальность, когда бизнес требует, а команды регулярно обещают больше, чем могут реализовать. В результате, разработка постоянно существует в режиме пожара (какая уж тут инженерная культура, когда ничего не успеваешь!), а бизнес постоянно не доволен и не верит обещаниям программистов.

Приведение этого процесса в порядок — отдельная работа, но об этом — в следующий раз.

пост №1448

Мы перезапустили блоги на Снобе! Блоги — часть Сноба, где можно зарегистрироваться, заплатить и публиковать свои посты. Лучшие посты редакция продвигает на главной, вместе с редакционными статьями. У постов есть комментарии, которые могут оставить только подписчики. Это сообщество с богатой историей: в ходе работы я наткнулся на профиль Бориса Немцова!

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

Мы переписали эту часть сайта с нуля. Теперь, страницы быстро грузятся, хорошо работают в мобилах, не падают. По пути, в числе прочего, мы прикрутили нормальную рекурентную подписку — раньше, подписки нужно было продлевать руками. Главное: в процессе переноса, мы не потеряли ни одну статью.

Мы планировали завершить перезапуск блогов за 6 месяцев, а заняло это все 8. Когда я примерно в середине проекта завел разговор о том, что очень стыдно и как вообще быть, Марина Геворкян, издатель Сноба, ответила мне следующее: «вы за 4 месяца сделали то, что мы не могли сделать 4 года».

В общем, горжусь нашими ребятами. Герои:
- Никита Алёшников, бэкенд-разработчик
- Фёдор Борщёв, технический директор
- Михаил Бурмистров, ведущий фронтенд-разработчик
- Вячеслав Набатчиков, бэкенд-разработчик
- Всеволод Скрипник, бэкенд-разработчик, руководитель проекта
- Денис Сурков, бэкенд-разработчик
- Владимир Тарановский, фронтенд-разработчик.

Отдельное спасибо Марине Геворкян за доверие и Валерии Тищенко за отличную продуктовую работу.

Дальше со Снобом планы такие: перевести оставшуюся редакционную часть сайта на эту же техническую платформу. Увидимся ещё примерно через полгода :)

P.S. Федя опубликовал подробную техническую статью о том, что мы делали под капотом. Рекомендую технарям!

P.P.S. Постараюсь больше не пропадать и рассказывать о том, что и как мы делаем по работе.