Anna.Sokolov
New member
Всё началось с маленького «ну ладно, починим потом». Я тогда только-только возглавил команду из четырёх человек, и мы за пару недель выкатили MVP для стартапа — быстро, дерзко, без единого тест-кейса. Клиент был в восторге, а я, честно говоря, и не парился. Но через три месяца, когда мы попытались добавить новый модуль, всё рухнуло: каждый новый кусок кода падал как карточный домик, а деплой превращался в лотерею.
Техдолг копит себя тихо. Сегодня ты пропускаешь рефакторинг ради дедлайна, завтра — не документируешь решение, потому что «и так понятно». А потом ты открываешь файл, и тебе кажется, что код писали не ты, а какой-то инопланетянин, который ненавидел человечество. Я считал: каждый такой «халтурный» коммит — это минус 2-3 часа будущих страданий. У нас накопилось тысяч восемь таких часов.
Аналогия с ипотекой точная до боли. Ты берёшь кредит — и вроде всё круто, ты уже живёшь в квартире, не вкладываешь в стройку. Но ежемесячный платёж съедает 40% дохода, и ты не можешь позволить себе ни обучение, ни новые фичи, ни нормальные отпускные. У нас аналогично: команда потратила 70% времени на то, чтобы не сломать старое, а на развитие продукта оставались крохи. Бюджет сгорал, клиенты нервничали, а я каждый вечер спрашивал себя: «Зачем я это затеял».
Проект сел на дно в четвёртом квартале. Мы упали на 60% по плану, два разработчика выгорели и ушли, а заказчик уже тихо искал другую команду. Момент истины наступил, когда на планёрке я увидел, что из 12 задач в спринте 10 — это «починка», а не развитие. В тот момент я понял: если не действовать прямо сейчас, мы просто умрём.
Выбраться из ямы получилось только радикально. Я закрыл все новые фичи на два спринта и сказал команде: «Мы чиним. Только чиним. Без исключений». Написали карту техдолга — буквально на стене в комнате — и приоритизировали. Каждую пятницу вычищали 20% от самой страшной кучи. Через полтора месяца деплой перестал ломаться, а команда начала улыбаться на утренках. Не идеально, но дышать стало можно.
Если вы сейчас в похожей ситуации — вот что я бы вам посоветовал. Во-первых, признайте проблему вслух: не «ну это ж нормально для legacy», а честно — «мы в долгах и они растут». Во-вторых, выделите фиксированный процент каждого спринта на погашение — у нас было 30%, и это спасло. В-третьих, не ждите идеального решения: лучше убрать 20% кривизны, чем планировать годовой план рефакторинга, который никогда не начнётся. И главное — защитите команду от выгорания: техдолг убивает людей не кодом, а бесконечным чувством бессмысленной борьбы.
Коллеги, а у вас в команде есть «техническая ипотека»? Как вы её обслуживаете — регулярными платежами или просто надеетесь, что банк не придёт? Расскажите в комментариях, как вы боретесь с техдолгом на практике, и давайте соберём коллекцию рабочих стратегий.
Техдолг копит себя тихо. Сегодня ты пропускаешь рефакторинг ради дедлайна, завтра — не документируешь решение, потому что «и так понятно». А потом ты открываешь файл, и тебе кажется, что код писали не ты, а какой-то инопланетянин, который ненавидел человечество. Я считал: каждый такой «халтурный» коммит — это минус 2-3 часа будущих страданий. У нас накопилось тысяч восемь таких часов.
Аналогия с ипотекой точная до боли. Ты берёшь кредит — и вроде всё круто, ты уже живёшь в квартире, не вкладываешь в стройку. Но ежемесячный платёж съедает 40% дохода, и ты не можешь позволить себе ни обучение, ни новые фичи, ни нормальные отпускные. У нас аналогично: команда потратила 70% времени на то, чтобы не сломать старое, а на развитие продукта оставались крохи. Бюджет сгорал, клиенты нервничали, а я каждый вечер спрашивал себя: «Зачем я это затеял».
Проект сел на дно в четвёртом квартале. Мы упали на 60% по плану, два разработчика выгорели и ушли, а заказчик уже тихо искал другую команду. Момент истины наступил, когда на планёрке я увидел, что из 12 задач в спринте 10 — это «починка», а не развитие. В тот момент я понял: если не действовать прямо сейчас, мы просто умрём.
Выбраться из ямы получилось только радикально. Я закрыл все новые фичи на два спринта и сказал команде: «Мы чиним. Только чиним. Без исключений». Написали карту техдолга — буквально на стене в комнате — и приоритизировали. Каждую пятницу вычищали 20% от самой страшной кучи. Через полтора месяца деплой перестал ломаться, а команда начала улыбаться на утренках. Не идеально, но дышать стало можно.
Если вы сейчас в похожей ситуации — вот что я бы вам посоветовал. Во-первых, признайте проблему вслух: не «ну это ж нормально для legacy», а честно — «мы в долгах и они растут». Во-вторых, выделите фиксированный процент каждого спринта на погашение — у нас было 30%, и это спасло. В-третьих, не ждите идеального решения: лучше убрать 20% кривизны, чем планировать годовой план рефакторинга, который никогда не начнётся. И главное — защитите команду от выгорания: техдолг убивает людей не кодом, а бесконечным чувством бессмысленной борьбы.
Коллеги, а у вас в команде есть «техническая ипотека»? Как вы её обслуживаете — регулярными платежами или просто надеетесь, что банк не придёт? Расскажите в комментариях, как вы боретесь с техдолгом на практике, и давайте соберём коллекцию рабочих стратегий.