It seems that a good balance would be to rapidly prototype as a method of understanding the solution (in fact, for most proofs I've done, this is exactly the method: do a few specific cases and try and generalize them).
This then lets you start hacking right away, but without loss of direction. It will also help you find the general solution.
Let me repeat a comment I made in response a similar comment above:
he Dijkstra argument is that looking at examples, learning about concrete cases may prevent you from thinking about the most general abstract problem, for which you may devise an elegant solution. So according to the Dijkstra argument the prototypes you create may bias/prejudice your thinking, and should be avoided if you want to get to an elegant/optimal/general solution.
This then lets you start hacking right away, but without loss of direction. It will also help you find the general solution.