Я на всякий случай напомню еще, что код может усложняться по разным причинам. Если продукт большой и международный - это сразу сильно усложняет дело. Нужно пилить специфичные фичи для разных регионов, затачивать архитектуру под корректное включение/выключение этих фиче. Опять же, в любом более-менее осознанно развивающемся продукте зачастую одновременно работает целая пачка A/B-тестов, а это и усложнение, и по сути необходимость писать одну и ту же фичу n раз (в зависимости от количества вариантов)