I used to think that building the plane on your way down was a bad approach to products, but now I am starting to understand why people do this more.
You dont know what your unknowns are, or what you will end up doing until you start building.
For example, yesterday I went through my web app that I am working on and change all my initial data types from prospects to contacts. After running through a few workflows, I realized that change makes sense in the long run.
I want contacts to be able to turn into prospects. It was a good start but ended up not being a good fit.
I would have never know that had I not just started and did the work. Planning for this for days might have have uncovered this, but I think that's an exception.
Its not until we are in the trenches building and running through workflows like our customers would, that we really figure out whats important.