Hodgman, I forgot to ask you, but when you said this, "Also importantly, you've got to realise that your first attempts at game-dev are going to be flawed." Okay, well what is it that makes someones attempt at game development flawed? Is it lack of knowledge? Because if so, can't someone just come to a forum such as this or go to school to learn about their respective practice? Is there something I'm missing here? I get that doing this as a hobby is potentially unstable, but can't other team members pick up where other team members who took leave on the project left off?
It's lack of experience. You can't gain experience, except through... experiences.
It's entirely possible to spend 5 years on a project, only to get to the end and realise that there are so many bugs in your game, and the causes of the bugs are so widespread that it's virtually impossible to fix them all -- leaving you with no option but to start again.
Yes, a good education and peer-group helps to avoid stupid mistakes, but it's not going to stop you from ever misunderstanding something, making a false assumption, or going ahead with a plan without understanding the full ramifications. If it's your first time doing something (
anything), your chances of screwing it up are of course going to be much higher than someone with a decade of experience at doing that thing.
10 years ago, I thought that I was an expert-level C++ programmer, I was making awesome FPS games and felt I could make anything.
Every single year since then, I've looked back on some code that I wrote a year earlier, and noticed flaws in my technique, designs, and general vision. Even now in 2011, after writing games in C++ for over 10 years, I still look at code that I wrote in 2010 and shake my head at decisions that I made at the time.
This doesn't mean that all of my old code is
bad, it's just that the further you go back, the more flawed it is.
My code from 2010 is
slightly flawed in subtle ways, stemming from my vision/understanding of programming being slightly less developed than it is now.
My code from 2000 (
when I felt like I could make any game that I wanted to) is actually
extremely flawed, buggy, unmaintainable, unprofessional, etc...
At the time when these mistakes were made, I had no way of knowing how flawed my skills were, due to the fact that
lacking a skill robs you of the ability to realise that the skill is lacking. Without experiencing something yet, you've no way of knowing what you're missing.
I don't want to discourage you though! This is a long winded way of saying your 3rd project will rock the socks off of your 1st, and they'll both suck compared to your 5th.