Time and Motivation
I am archiving older pieces I have written on other sites, making this the definitive home for all my work. This is one of several I am porting over from my GameDev.Net user journal. Enjoy!
Many beginners - not absolute beginners, but beginners still - ask questions pertaining to finding time and the motivation to stick with a project with large scope. There are a variety of non-answer responses, such as, "You should write smaller programs," or "Break it up into smaller parts, then treat each part as a project so that you get to complete several in turn." Those are useful bits of advice, but they don't answer the question.
So what's the answer to the question? You make it.
I'm a professional software developer. My day job might be killing me - this past week I had days of 9 am to 2 am and 10 am to 4 am - so I inherently don't have a lot of spare time, particularly not to devote to another programming project. I have a girlfriend, and I have to spend time with her. So when do I work on this resource?
I try to do things like program on the subway train, when coming back from work. (I can't do it when going, usually, because I go with my girlfriend, and the train is packed so I'm standing; balancing a laptop in my hands sufficiently to type while avoiding falling due to the train's movement... not my style.) Sometimes I'm too burnt out after work, so it has to wait until I'm rested, or late at night. And sometimes it goes several days, or over a week. On previous projects I've gone weeks without touching code. And my subway downtime is a peculiarity of those who live in large cities with developed public transit systems - a rarity in the USA.
The truth about when I code for this project? At work. I keep the project window open all day, and whenever I've got some time to spare, I throw in some code. I may not necessarily build - having a manager walk by and see a game of Pong on your screen is far more troubling than seeing you peering at an IDE - but I'll prototype and use the interactive shell to evaluate various conditions. I can also read up on documentation I need to implement a feature, and maybe even write a small snippet. I can work on non-visual aspects, like when I wrote the 2d vector type at the office.
If you want to do something bad enough, you'll make the time. Just remember to be fair: don't cheat your employer by falling behind on your assigned tasks. That's cheating yourself, too, by lowering your reputation.
As for motivation, I guess I really can't speak to that. I've been doing this so consistently for so long - I've tried to walk away from programming and games and technology at least twice, and failed. This is my life. People who ask about motivation may simply be in the wrong career. If you don't have a passion for this, then look around for something you do have a passion for.
What have your experiences been?