Решён
Почему если что-то работает, то не трогай это?

Денис Воганов Архитектура ПО
11.1k
7

Постоянно слышу эту фразу от старших коллег. "Работает - не трогай". Но ведь это же путь к деградации?

Есть легаси код на проекте, написан криво, но работает. Есть сервер на Ubuntu 16.04, уже без поддержки, но работает. Есть скрипт на баше который никто не понимает, но работает.

Почему нельзя взять и переписать нормально? Обновить? Задокументировать? Почему все так держатся за это "работает"?

Решение
154
Участник • 2 ответа

Переписать можно. Обновить можно. Вопрос кто за это заплатит.

Бизнесу нужны фичи. Бизнес платит за фичи. Рефакторинг не приносит денег напрямую. Обновление сервера не приносит денег напрямую.

Когда ты придешь к менеджеру и скажешь "дай мне месяц, я перепишу этот модуль красиво" - он спросит "а что изменится для пользователя?". И ты скажешь "ничего, но код будет чище". И он скажет "нет".

Это не техническая проблема. Это экономическая.

Аватар Денис Воганов

Блин, обидно но правда. Получается единственный способ это продать рефакторинг как "снижение рисков" или "ускорение разработки в будущем"?

Аватар Игорь Новичок

Именно. Или дождаться когда легаси начнет реально мешать. Тогда бизнес сам придет с вопросом почему так долго делаете

124
Эксперт • 2 ответа

Потому что ты не знаешь всех граничных случаев которые этот код обрабатывает.

Тот "кривой" легаси возможно содержит 47 костылей, каждый из которых фиксит конкретный баг на проде, который случился в 2017 году в три часа ночи и про который никто не помнит. Ты перепишешь "красиво" - и через неделю прод ляжет потому что ты не учел что по пятницам в полнолуние приходит один клиент с кривой кодировкой в имени.

Это не путь к деградации. Это управление рисками.

Аватар Алина Рахимова

"по пятницам в полнолуние" - это прям из жизни)) у нас был баг который воспроизводился только 29 февраля

87
Эксперт • 3 ответа

Расскажу историю.

2019 год. Пришел на проект, увидел монолит на PHP 5.6. Ужаснулся. Убедил руководство что надо переписывать на микросервисы, современный стек, все дела.

Переписывали полтора года. Запустили. Первый месяц - даунтайм каждую неделю. Второй месяц - проблемы с консистентностью данных между сервисами. Третий месяц - уволился тимлид который все это проектировал.

Сейчас 2026 год. Тот монолит на PHP 5.6 до сих пор работает на части функционала. Потому что никто не решается его трогать после того что было.

Мораль: иногда "не трогай" это коллективная травма.

70
Участник • 4 ответа

Это называется принцип Честертонского забора.

Прежде чем сносить забор, пойми зачем его поставили. Если не понимаешь зачем он нужен - у тебя нет права его сносить.

Тот баш скрипт который "никто не понимает" - возможно единственный кто понимал уволился в 2018. И возможно он делает что то критически важное о чем ты не знаешь.

Сначала пойми. Потом трогай.

45
Эксперт • 6 ответов

Ну так никто не говорит что трогать нельзя вообще никогда. Говорят что трогать надо осторожно и с пониманием последствий.

Если ты:

  • написал тесты на текущее поведение
  • понял что код делает
  • имеешь возможность откатиться
  • выделил на это время в спринте

То трогай на здоровье. Проблема в том что обычно хотят "быстренько переписать" без всего этого.

38
Участник • 2 ответа

Ubuntu 16.04 без поддержки это не "работает", это бомба замедленного действия. CVE копятся, патчей нет.

Легаси код который работает - ок, можно жить. Легаси инфра с дырами в безопасности - нельзя жить.

Разделяй эти вещи.

23
Участник • 2 ответа

Да ладно вам. Если руки из правильного места растут - можно и переписать и обновить и ничего не сломать.

Просто большинство разработчиков не умеют работать с легаси. Лезут как слон в посудную лавку, ломают все, а потом говорят "видите, нельзя было трогать".

Умение работать с чужим кодом - это скилл. Его мало кто развивает потому что все хотят писать с нуля на модных фреймворках.

Написать ответ

Премодерация гостей

Вы отвечаете как гость. Ваш ответ будет скрыт до проверки модератором. Чтобы ответ появился сразу и вы получали репутацию — войдите в аккаунт.

Будьте вежливы и соблюдайте правила платформы.