К разработке приложения можно подойти по-разному. Можно сразу начать писать код, делать верстку, а структуру и архитектуру приложения придумывать по ходу работы. Этот подход не продуктивный, он позволяет быстро начать, но не дает сохранить нормальный темп разработки.
Часто возникают ситуации, когда требуется внести изменения в архитектуру приложения. Но сделать это очень дорого, т. к. потрачено большое количество времени на текущее решение, и изменения затрагивают большую часть приложения.
Это одна из самых часто встречающихся проблем. Когда работаешь на таких проектах, часто возникает мысль все переписать.