Вчера выяснили, что в вебе есть "наследие" в виде логин/пароль аутентификации. А сегодня давайте поговорим, в целом, про легаси в проектах.
Что вы, в первую очередь, делаете, приходя на проект, где "все переплетено, море нитей, но" ни одного авто-теста?
Есть мнение, что на проекты с легаси сложно найти разработчиков. «Никто не хочет разгребать старое дерьмо» и тд. Но кажется, дело не сколько в легаси, сколько в подходах к работе с ним
Расскажу на примере нашей команды
PS: Хотя бывает такое, что приходится бороться в одиночку. Если вы в такой ситуации, советую посмотреть доклад @SerdgYastreb - очень мотивирует
youtu.be/yADGRe4CO2U
Все начиналось с набора команды, способной работать с легосятиной. В требованиях было - понимание и опыт осознанного рефакторинга, грамотное код ревью. Проверял это демонстрацией плохого кода из проекта. Таким образом я мог увидеть реальную работу человека над настоящим кодом
Ну а человек мог понять, во что он ввязывается 🙂
Когда команда есть, очень важно поддерживать сплоченность против общего врага - легаси. Для этого мы проводим еженедельные собрания «рыцарей фронтенда»
this is how 90% of my projects go pic.twitter.com/max8lOYFkv
На рыцарских сборах мы обсуждаем насущные проблемы и пытаемся найти для них решения
twitter.com/chrisoncode/st…
Когда проблемы видны - их важно заносить в issue трекер. У нас для тех долга есть специальный лейбл «тех долг». Благодаря этому, когда у человека есть затишье по основному направлению, всегда понятно, что можно сделать полезного
@jsunderhood Создаю папку v2
Конечно, можно было бы забить на текущую реализацию системы и рядом строить прекрасный дивный мир. А потом, через пару лет его зарелизить
twitter.com/blvdmitry/stat…
Но мы решили пойти по пути непрерывной интеграции новой реализации в старую. Этот подход @mishunov назвал «Франкенштейн миграция»
Подробнее в интереснейшем докладе youtu.be/CaP5eAylYpI
Но как понять, что жизнь улучшается и легаси становиться меньше? В этом помогут разобраться метрики. Например:
Процент копипасты
Размер итогового бандла
Скорость сборки
Соотношение строк старой и новой версии
А какие метрики есть у вас?
Ну и конечно, всегда под рукой держим великолепное руководство по улучшению кода от @martinfowler