There are different approaches to development. You can start to write a code immediately, make a layout and think about the structure and architecture while coding. This approach isn't efficient, it allows to start at once but not to keep sufficient development pace.
It often appears that you need to change something in app architecture. But it's expensive as you've spent a big amount of time for current solution and changes involve a big part of application.
It's one of the most popular problems. When you work on such projects you're thinking about rewriting it at all.