Как делать глубокий рефакторинг ПО, если нельзя останавливать разработку?
===========================================================================

 Уже более N числа лет идет разработка приложения. Им уже пользуются. Разработка идет по 2 недели, в конце которых происходит демо перед заказчиком - показываем что сделано. И вот нельзя ничего не показать. А в коде уже каша.  

Что делать?  

Где есть информация как правильно разрабатывать ПО чтобы такого не было?  

Как выпутаться из этой проблемы? 

 Сложность, запутанность кода -> одно из естественных следствий развития проекта.   

Как держать сложность в разумных предлах - об этом все эти ООП, SOLID, микросервисная архитектура и тд.   

Но суть везде схожая -> разделить один запутанный код на независимые части (функциональные блоки, модули, микросервисы), которые проще понять, проще развивать, переиспользовать, переделывать, или вообще заменять другими модулями.