It depends on the quality you expect to have in your code. If you don't care about anything so long as it works, it's a tad easier to just jump in. However, many times you'll look back and wish that it was "prettier" when you're finished, or the "feeping creaturism" sneaks in ("gee, I could've added X to that"), or you've got to maintain the code in a changing environment. Then, you may wish you'd planned it better.
Of course, if there's more than one person involved, then you'd better plan, for sure.
The first thing to be planned is the plan ;-)
After the plan's done, then what? It's all about what you learned in making the plan. It depends highly on what the plan requires. Probably the database should be planned first, unless you're very good at database abstraction (which you should be, or try to become), in which case the database should be planned first 😃. This has been proven to me in designing an online clothing shop, which I ranted about some time ago (and stand by, beware, etc.) --- v4 <5?> is in the planning stage, and my company has got this contract again after a failed 'in house' build.
Everytime the clothing store owners said, "oh, and BTW, we've got these $foo and they have another quality $bar and dimension $baz", my last plan went out the window.
Online "communities" may be even more difficult, unless you're already a well-established participant in said community and know many facets of its organization. But's it's all about the data. If you can gather enough information, the plan comes fairly easily, and the coding is just about problem solving in some programmatic idiom.
Ah, I'll shut up now. I mean to actually write some code today....