Ален нови, ностра алис! Что означает — ежели один человек построил, другой завсегда разобрать может.
Продолжая рассуждать о разработке и вдохновляясь мудростью кузнеца Степана, можно отметить вот еще какой момент: зачастую, как только бюджет получен, команда берется за переписывание старого кода, называя это умным словом «рефакторинг» и аргументируя тем, что вносить изменения в старый код крайне сложно, нужно все переписать с нуля, и тогда все будет красиво и вообще наступит счастье (Степан для этой цели разбирает вполне рабочую карету). Нужно ли говорить, что счастье наступит ровно до прихода следующей команды, а это случится в среднем через 2–3 года максимум (учитывая среднюю продолжительность работы айтишников в одной компании <2 лет).
Так вот, переписывание кода с нуля — это одна из самых больших ошибок команд и их руководителей. Гораздо лучше меня об этом написано в блоге Джоэля Спольски (автора Excel VBA, FogBugz, Trello и StackOverflow) в его статье
«Things you should never do, part I»
Если коротко, то вот основные тезисы:
* Программисты любят переписывать код, так как писать код гораздо легче, чем его читать.
Лирическое отступление: учитывая вышесказанное - как вы считаете, насколько современные AI Co-pilot’ы, которые пишут код вместо программиста увеличивают продуктивность программиста? Или скорее уменьшают?
* Старый код уже проверен временем. Если вместо простой функции a+b вы видите два экрана кода, то это не бред вашего предшественника, а скорее исправление ошибок, о которых вы не знали. Например, классический вопрос, на который мало кто может ответить: как определить,
високосный ли год? (И это далеко не всегда year % 4 = 0.)
* Есть несколько причин для переписывания (архитектурные изменения, неэффективный/медленный код, стилистические ошибки), но почти всегда это проще (но гораздо скучнее) сделать модуль за модулем в старом коде, чем с нуля переписывать все заново (что гораздо интереснее и приятнее).
Итого: как менеджеру определить, стоит ли переписывать код с нуля или нет?
Ответ: почти всегда нет, но если вдруг в редком случае есть финансовая целесообразность (например, последний носитель знаний старого кода на COBOL с AS/400 уже ушел на пенсию 15 лет и совсем не хочет работать), то может быть и да.