Nothing new I can offer that hasn't already been said... Except to say the one lesson I'M STILL learning, myself: Keep It Simple.
By all means, BRAINSTORM like crazy. Have ideas and document them. But be ready and WILLING to cut OUT those ideas to the most basic. Keep them FEW and make them well. Otherwise, as I have learned the hard way and am still trying to work out in my own development skills, you will find yourself hitting so many roadblocks because you're not sure how to properly program an action or how to utilize a feature in C2.
Speaking of brainstorming and documenting, this is a problem I struggled with early on, too. Still rather do. I'm often so eager to begin the project that I haven't fully fleshed out all the details of my game - the WHYs and the WHATs.
Make sure you have a clear plan. Often called a Game Development Document (GDD). If you're familiar with that, then you're probably ahead of me! LOL And all just as good. Follow that plan and unless absolutely necessary - or if you're ahead of schedule or feel any changes would be minimal. Basically, it makes no sense to have a plan if you're not going to follow it. That's part of the reason why I have yet to finish a project - I had no clear PLAN. Ideas, but no plan to follow. So that's where I'm at now...
I offer these as "hard lessons learned"...not like I have any real authority on the matter. But I hope it helps.