Чуть ли не самая интересная часть работы на любом большом и достаточно старом проекте - это наблюдать как поживают ошибки прошлого.
В таком историческом разрезе всегда есть текучка кадров и тот знаменитый автобус периодически сбивает носителей информации, тех кто этот код писал, например. Уходят даже те, кто знал тех, кто этот код писал. Почти неизбежно появляются куски проекта, в которые всем страшно заглядывать. Хуже всего если эти куски где-то в фундаменте проекта лежат.
Рациональное поведение - просто не трогать. Никто понятия не имеет уже почему были те или другие решения приняты. Если тронешь, то все может развалиться у миллионов юзеров. Тут смелость прям нужна, чтобы взять чинить что-то такое, задевающие кучу разных фич. Многие очевидно плохие решения живут годами только потому, что их страшно править.
Тесты, документация, написанные требования, тикеты, чистая история коммитов - все это, конечно, частично решает проблему. С ними понимать решения из прошлого становится проще. Но почти любой растущий проект проходит ту стадию, где этого всего нет в том объёме, в котором хотелось бы (часто в этот момент тебя и нанимают), а пока появится жить и развивать проект тоже надо.
Тесты, документация и написанные требования, к слову, вполне могут разойтись с тем что в проекте реально происходит. Вот это настоящее веселье.
Жизнь сложная штука, короче, иногда чтобы сделать что-то хорошее реально приходится идти на некоторые риски. Попутно выстраивая культуру, в которой риски будут снижаться.