It is commonly understood that it takes 15 minutes to get into The Zone, the state of being where you can do no wrong and everything just flows. Getting interrupted for even a moment can disrupt that state, requiring another 15 minutes to enter again. Still, once you’re in The Zone, hours can go by before you even notice. Lunch, dinner, and bed times all fly by before you know it. It’s great. On the other hand, leaving code alone too long can really disrupt your work.
I came back to working on Oracle’s Eye after leaving the project alone for a month. Normally when I start up a session, I can check out a copy from my Subversion repository. This time, I find that what’s checked in and what is checked out is different. Apparently I made some changes but wasn’t finished with whatever task I had. I didn’t want to check in changes that would break my build, so I left them unchecked.
Coming back to them a month later, I have no idea what I was trying to do at the time. I think I was working on improving frame-rate independent movement, but where did I stop? How do I continue? Now I have to decide between throwing out the work I did before and work on the last known, good, and checked-in code or sludging through the new code and trying to remember what I was trying to do. If anything, it shows that I really need to be more disciplined about working on the project. Leaving it alone too long results in wasted effort trying to remember what I was doing and what I need to do.
It is the complete opposite of being in The Zone. When working on any non-trivial project, it is perfectly fine to focus on one aspect. You might forget about some details in one component of your engine, but you’ll know another component like the back of your hand. You have to get that intimate with your code when you work on it so closely and frequently, and it is perfectly normal to forget details about a part of the project that you haven’t looked at in some time. If you leave the entire project alone, however, the entire project slowly gets forgotten.
If I was working on game development full-time, I probably wouldn’t have the problem of leaving a project alone for a month. Since I am working part-time, I have to fit game development into my schedule that already has a full-time job plus all of the tasks of living a life: laundry, cooking, transportation, reading, gaming, paying bills, eating food, having a social life, etc. It is very easy to feel too tired and say, “I’ll work on the project another night.”
To help, I’ve started to think about the end results. What will it be like when the game is finished? When will I get the first sale? How many sales will I get within the first month? How many people will play MY game? How many will give me feedback to make it better? What kind of postmortem will I write?
Each time I think about it, it motivates me to work on the project. Each day I delay is one more day that I need to wait before I can let someone play the game. Each hour I waste is one more hour that’s needed before I could see my first sale. When I let go of an opportunity to work on the project, I also lose the results.
Just thinking about what it will be like when I am finished is inspiring. I will need to remember to do so if I ever get into a slump again.