Among other 20000 things, I'm creating a game design document for an online videogame (that's why I posted about adapting boardgames earlier this month).
Not having done others before, I'm learning a lot of things.
First one is that you may have your idea crystal-clear inside your mind, but writting it properly so others can understand what you want to do, it's not always easy.
Another important subject is thinking the game's premise in few lines, and why you think it's cool. In my case, the game forged about a simple idea, and now I'm expanding all with the feedback of the rest of the "team members". For example, the game mechanics are changing a bit, because at long-term the game may get boring and uninteresting.
Adding sample tables, lists of possible actions, "turn sequences" (even if it's a real-time game, showing a flow of actions/events helps to understand the mechanics), diagrams, and lots of samples helps too.
One thing I'm trying hard to acomplish is forget about technical details. We are aiming for a web-based game, but apart from that, right now I've only thought about architecture and development per asking of the rest of the team, and only did a fast-sketch of the server architecture I'm thinking about. I don't want to enter into class design, layers and communication protocols until the game idea is clearly defined.
The draft of the design document is still way from complete, but I'm enjoying this a lot :)
Oh, and there are chances that the game will be developed in Java, so maybe I'll touch it again, after more than 3 years since I left university (and with it, Java and C++).