Покончи с техническими долгами. Сейчас!

01 Feb 2010


Конспекто-перевод презентации Энди Лестера “Get out of technical debt now!”

http://petdance.com/perl/technical-debt/


...

Картинка про долги: http://petdance.com/perl/technical-debt/technical-debt.002.html

Признаки долгов

  •  “Разве у нас нет документации по расположению файлов?”
  •  “Я думал, у нас был тест на этот случай…”
  •  “Если я поменяю X, поломается Y. Я подумаю.”
  •  “Не трогай этот код. Прошлый раз, когда мы попробовали – потом неделю чинили.”
  •  “Полетел жесткий диск. Где там у нас бэкапы?”
  •  “Где же письмо про этот баг?”
  •  “Убери это в комментарий с пометкой XXX. Попозже посмотрим.”
  •  “Напиши комментарий с пометкой TODO. Попозже посмотрим.”
  •  “Убери в TODO. Вот тут, сразу над XXX.”

Цена (проявление) долгов

  •  “Не знаю, что случилось! Я всего лишь поменял одну строчку!”
  •  “Мы не можем перейти на новую версию (TemplateToolkit’a – вариант мой), все сломается”
  •  “Усовершенствовать код? Нет времени!”
  •  “Мы не можем дорабатывать этот код. Его никто не понимает.”

Проценты по техническим долгам убьют тебя

Так что или плати по своим техническим долгам, или однажды…

устрашающая картинка: http://petdance.com/perl/technical-debt/technical-debt.020.html

Когда ты не можешь выполнить проект, который должен — ты банкрот.

Решение простое

  •  Определи и зафиксируй свои технические долги
  •  Определи стоимость
  •  Расплатись с наиболее выгодными (Pay the most profitable)
  •  Прекрати делать новые долги
  •  Повторяй по необходимости

Просто – не значит легко

Определи свои долги

  •  Хаос
    пример: http://petdance.com/perl/technical-debt/technical-debt.027.html
  •  Все, что мы планируем сделать “попозже” – это хаос
  •  Проваленные тесты Проваленный тест == Сигнализация в автомобиле
  •  Непочиненные баги
  •  Хрупкий код
  •  Ужасный (ugly) код
  •  Код без комментариев
  •  Устаревшие комментарии
  •  Сакральное знание
    (Bus-sensitive knowledge – знание, чувствительное к тому, что кого-то переедет автобус? См. http://en.wikipedia.org/wiki/Bus_factor)
  •  Незакрытые уязвимости
  •  TODO и XXX
  •  Изъяны в инфраструктуре
  •  багтрекер? (или RT – это другое?)
  •  система контроля версий?
  •  бэкапы?
  •  скрипты под кроном, чтобы делать за тебя грязную работу?
  •  Зависимость от проектов с закрытым исходным кодом
  •  Jerks on the team (???)
  •  Jerks in management. Картинка из “Офисного пространства”: http://petdance.com/perl/technical-debt/technical-debt.042.html
  •  Остутствие стандартов кодирования Пример: http://petdance.com/perl/technical-debt/technical-debt.044.html Интересно, какие комментарии дает Энди в докладе…
  •  Единоличное владение кодом
  •  Неосознавание своих технических долгов
  •  Игнорирование своих технических долгов

Определи стоимость

Расплатись с наиболее выгодными

Выплати наиболее выгодный

  •  Выбери один
  •  Не выбирай самый легкий
  •  Не выбирай самый интересный (fun)
  •  Думай об улучшении, а не о совершенстве
  •  Просто возьми и сделай это! (JFDI)

И как я продам это своему боссу?

  •  Измерь (quantify) все эти штуки
    • Улучшенная мобильность
    • Улучшенное качество
    • Уменьшенный риск

//Едем дальше//

Инструменты

  •  fluff – App::Fluff
  •  Perl::Critic

Спасибо за внимание!