I saw an article on
Gamedev.net telling how to properly plan, I'll post the link if anyone is interested. I didn't agree with much of what it said, it basically said to plan out your program completely, and make every module and module interaction explicit in the design. The author also mention that he takes 2 weeks on this process.
I noticed something reading the comments though. It seems planning ahead really appeals to newer programmers. And I think its because a feel for good design isn't easy to come by, and using Casey's method, you really need that feel. Funny, I was the exact opposite, when I was newer, I tried the old OOAD stuff. Lots of planning, push coding to the final steps. It didn't work for me. How are you supposed to plan and design a program without code? I tried many times to do the OOP method, and the only time I really finished a program was using a "No-planning, just do it" method. Then I discovered Casey's blog, which really helped me a ton.
I think, really, when it comes down to it, there is no "best practice", I think OOP works for some, and OOP doesn't work for me because I think of problems, solutions and order differently. Still, I really wouldn't plan too far, even if you are doing a OOP approach.