There's a thought among game developers that when you are scheduling out your game, you figure out how long everything is going to take, add up the time, then double it. It's a sentiment that is simultaneously joke and wisdom, but it does raise the question, why are we so bad at predicting how long our work will take? I've been giving this a decent amount of thought lately. I've had to take on the task of scheduling myself, and, consequently failing to meet those schedules, why am I so bad?
When we start scheduling ourselves out, we probably think that tasks fall into two broad categories, things we know how to do, and things we don't know how to do.
As developers, we are good at estimating the time it takes to do work we know how to do. You sometimes hear devs refer to this kind of work as "plumbing", it's skilled, but procedural work.
Tasks we don't know how to do are work we relish. These tasks mean we get to learn something new! These tasks are harder to estimate, obviously, if you don't know how to complete them, how do you know how long it will take? However, I found my estimates worked out in balance. For everything that you learn that is hard to do, and consequently takes longer than you guessed, there are three things that are easier than you thought, thus quicker to do. Great!
So where does that double extra time come from?
The way I see it, the problem is caused by a third category of tasks, the things we didn't know we had to do. As your working through a game, you discover new things your game needs.
These could be gaps between mechanics or features, intersections between mechanics that aren't quite working. The space where I ended up implementing character customization was found through a gap in our loading mechanics. I'm so happy with how that feature turned out, providing us an introductory scene for each world, and a "Get Ready" mechanic previously not in the game.
Other times, you discover potential small tasks that return big value. Monumental Failure's co-op mode was an example of this. Co-op took about a week to implement and ended up being the most popular way to play the game. A week of work I didn't schedule, but a week well spent.
This process of discovering things about your game leads to a better game, but how do we schedule it?
If there is anything to take away from this post I want it to be these two things:
1: Schedule a lot of unscheduled time. Both to let you catch up, and give you the space to discover new features for your game.
2: Re-schedule constantly. If you get behind, or you find a new feature to implement, don't try and adhere to your old schedule, figure out a new one. Re-prioritize your tasks and adapt the project as you go.
What do you think? Should designs be more thorough, flushed out, and discovering features is my lack of inexperience? Are there factors I have missed? Better scheduling strategies? Let me know!
Thanks for reading,