For those who have worked on non-trivial projects, what processes and tools have you actually used and would recommend? This is mostly regarding small (online) team projects, but huge or solo projects would be fun to hear from too. I'm less interested in theoreticals or impractical ideals and more asking about stuff you have experience with that works for you. @Tigers and I are thinking of promoting our casual game project from Prototype to Game You Can Play, but I'm worried we'll end up with messy code again for lack of sufficient planning and maintenance. The particulars I worry about are: How can we cleanly plan the concept and where should we keep those designs? Is just writing ideas on GitHub wiki good enough, or are there better ways? What can we do to avoid writing the dreaded Mega Design Document? We don't want to waste time or "lose" features in swaths of prose. What's a good way to plan the basic architecture? I kinda want to commit key stubs as part of the planning, but how can we get to that point confidently? How far ahead/detailed should we plan? I realize wholly upfront plans are bad since things change, but I don't want to constantly shoehorn or rewrite the whole project either. How often should we do code reviews or mass cleanup efforts? What common "gotchas" have you seen that we should watch out for? I know this is a very vague, open-ended question, but most things I've read go full underpants gnome when it comes to actual process. Even a few small tricks to keep us on track would be awesome.