Thinking before you start implementing the entire project is doomed to fail. Thinking before you implement each features/user story is usually rather important.
A waterfall model with short feedback loops iterating on small tasks is not the worst thing in the world