the first stage is rapid prototyping where you build a rough working prototype of the final project with the core functionality. code organization should be avoided at this stage and focus should be on exploration and implementation. this way one can avoid surprises and find pitfalls earlier and fix them.
starting with a rigid structure is a bad idea as that sets you off in certain direction, which works for well known problems like compilers and regexp engines, but for more complex problems which don't have a clear implementation roadmap, it's like shooting a few of your toes off at the start of a sprint. delay design decisions even during the implementation stage.