Yeah, GDDs. If you're solo working on something like a 3-day jam project with sparse mechanics, your GDD might be more like an ideas list, or if you've a clear vision from the start you might not need one at all. But if you have a team on it, writing down a GDD lets everyone know what the design goals are. Working on a more complex and larger project, even as solo, not having a clear GDD where everything is planned is setting yourself to failure or at very least constant setbacks as you rewrite code. When you have multiple interlocking systems, for example an RPG that requires mechanisms for quests, items, characters, dialogue, UI, cutscenes and whatever else, it is essential to have planned all out or you're constantly redoing old code to make new pieces communicate with others. In a team, every coder needs to know what the code they write needs to produce and how it interlocks with other systems. Same goes for graphic and sound design. Version control like Git is pretty much the only way a team can submit code to a project in sane manner... Most of my experience in coding in a team is from work though, but in web development a design document is essential. (Doubly so as it becomes part of the contract with the customer, and you can then pull it out and say, this is how we agreed to do it.)
A GDD goes along with communication and tracking progress. If the team doesn't communicate or do updates, it is like trying to steer a ship in the dark. You don't know where you are, where you're going, if you're going, and where the icebergs are. You realize you're the helmsman of Titanic.