Часто можно услышать от разработчиков фразу «пока работает — не трогай». Это звучит как здравый смысл. Но это в корне неверно. Очень плохая практика, которая является на самом деле самообманом. Как бы аккуратно ни был написан код — он не живёт в вакууме. Фреймворки развиваются, стандарты обновляются, экосистема не стоит на месте.
Игнорировать это — значит сознательно идти к деградации: медленно, мучительно и дорого. И с каждым днём этот выбор всё сильнее бьёт по эффективности команды.
Каждое "потом" становится "никогда". А каждое "не сейчас" — будущим блокером. И чем дальше откладываешь — тем больнее возвращаться.
Давайте разберёмся, почему откладывание обновлений — это отказ от будущего.
Разработчики вынуждены тратить время на создание временных решений и костылей для работы с устаревшими компонентами, вместо использования стандартных средств и функциональности, доступных в новых версиях.
Пример:
Разработчики, использующие Laravel 5.0, разрабатывали собственную проверку, чтобы клиент мог просматривать только свои заказы в интернет-магазине. Однако менее чем через полгода в версии 5.1 были представлены Policies, ставшие стандартом. Вместо обновления как можно скорее, увеличение кодовой базы лишь увеличивало время на последующее устранение технического долга.
Большие разрывы в обновлениях создают снежный ком, который требует значительных усилий и ресурсов для обновления проекта. Это может привести к тому, что если вы захотите обновиться, придётся потратить на это несколько месяцев без внедрения какого-либо нового функционала.
Пример:
Разработчики “Яндекс.Еда” пропустили три мажорных релиза, и полное обновление заняло целый год. За время накопления технического долга поддержка фреймворка, пакетов и самого PHP изменилась.
Использование поддерживаемых версий также облегчает процесс найма новых разработчиков. Большинство опытных разработчиков предпочитают работать с современными и актуальными технологиями. Кроме того, знание того, что проект использует поддерживаемые версии, может быть важным моментом для кандидатов при принятии решения о присоединении к команде. Это также позволяет обеспечить более плавный процесс адаптации новых членов команды, так как они уже знакомы с особенностями работы с актуальными версиями.