Business Week #34 - The path you choose
It's actually difficult to choose best path to develop upfront. This is why refactor is a phase so popular in software development. You need to accept the fact that it's nearly impossible to produce perfect software from scratch - usually it means having several iterations changing approaches, fixing validation with design patterns or updating naming to be most accurate and so on.