I'm a full time C++ programmer by day, and an indie game developer at night. I enjoy making games, especially ones with interesting mechanics or twists. I've learned a lot of the pitfalls of game development the hard way, but have persevered and started an indie game studio with my wife and some friends called Fancy Fish Games, which I hope to one day make my full time job. I'm always interested in networking and sharing game development stories, so feel free to PM or email me if you want.
One thing I can say with certainty is that there is not enough time in a day. Between all the things I have to do and my research work, there is much less time remaining than I would ideally like to spend on Aero Empire. While I haven been getting a lot of work done, and do expect to finish on time (at it's current rate, the code will be done before the rest of the game), I have several pages of notes of things I'd like to experiment with and implement that I just haven't gotten the chance to do. However, because I'm trying to keep the development on schedule, most of these ideas are pushed to "potential additions" so as not to get stuck working on the rendering engine.
While experimenting with new ideas and improving upon the rendering engine is great, there comes a time when you have to move on, and get started on the gameplay itself. I sometimes feel like an artist - never content with the renderings, and with every little artifact sticking out like a sore thumb. The worst part is that sometimes I have an idea to fix it scribbled down, however, at the same time, I know that it's only a minor detail and is not as important as the game itself. I don't know how many times I've had to tell myself that the renderings are fine for now - and that I can come back and make adjustments after the rest of the game is done (otherwise, I could end up spending years doing nothing but improving the graphics engine alone, which I have seen happen to many other projects).
There is also the flip side, however, where you always move on to something new because it seems more interesting, and always leave everything half done. When you get down to the boring details of an engine (debugging is a big "boring" detail for me), you can't help but want to start something else that sounds more fun. However, if you do, you will never have a completed game, even if you've half-completed all pieces of it.
So where is the balance? You can't work on something until it's perfect or it will never be done, and you can't only half-finish each part or else it will never be complete. You have to tread a fine line, getting the game to a point where it works and it follows a very constrained feature set, having the perseverance to do everything that needs to be done, and the ability to step back and say it's done instead of adding every new idea that comes along. Sure, sometimes it's good to incorporate new and novel ideas, but if you aren't careful and incorporate too many, then you'll end up with too much to do and will never be able to finish everything.
Sometimes, just thinking about the preciseness and difficulty required to make a game makes me wonder why I enjoy making games so much. But at the end of the day, it's all worth it when you see the resulting renders, the pretty videos, and an actual working game: viewing proof of your hard work materialized.