Think first, code second. If you launch into programming instantly, you’ll find yourself making design decisions without even realizing it; implementing a feature this way instead of that way will constrain what you can do later. Know where you’re going, at least in a general way, when you sit down to the computer; it will help ensure that you’re in charge of the tool, rather than the other way around.
Furthermore, once coding begins it gets very hard to zoom out and think about design issues. Moment-to-moment bug fixing, architecture, graphics and sound . . . an endless series of implementation problems start demanding attention. While it’s tempting to get something on the screen as fast as possible, use the time when those concerns are still in the future to focus on the design and make sure that it’s as strong as possible.