"In theory, there is no difference between theory and practice. But, in practice, there is."
IMO its best to think about a problem for a little while until you come up with some reasonable solution, then hack it up, then revisit your original decisions and see if you can do it better.