I was minding my own business working at a local software house when lightning struck.
Human activities, or activities that require direct human interaction, have inherent unknowns. Moods change in function of hormones, sleep deprivation, workload, personal relations and so on. And different people are affected differently by those factors, impacting mental processes and, therefore, productivity.
I am talking about this because I see how little this is understood on the game industry. Launch date push backs are more common than ever. Deus Ex: Mankind Divided and XCOM 2 are two high-profile examples. And while I have nothing against that practice, I want to talk about one of the reasons.
My experience with game design and development was chaotic and I could never foresee how long development would take. Suffices to say the team had a 6 weeks crunch of 16/7 to get the game out of the door for a competition. And then four years later I released it freely on the Internet. Why did it take so long? Because the game was missing a few things and I was not in a good place. Both as an indie developer and psychologically. Taking a month to find a bug caused by a programming language esoterism did not help with morale either. And then a game that could be ready in three months took pretty much five years to be released.
Of course most games are not that extreme on the delay. Lack of financial pressure changes production rithm and one man teams work very differently from teams of two people or more. Team dynamics is another variable to be taken into account.
The point is: it is very hard to predict the length of human work. And game development is fundamentally just that: human work. Even as tools all around get better and we become more productive because of them, without a human hand and the inspiration behind that, the tool’s potential is locked.
Now let me talk about how my expertise is affected by that chaos. Most programmers I know will agree that there is no such thing as a generic solution, but there are expansive approaches or very matured systems that contemplate most situations. To accommodate exceptions and expand on systems is a challenge on it’s own. There might be a few times where you been cut some slack and a piece of off-the-shelf software can solve your problem, but that is not why you are there generating sweat. You are there to solve specific problems, to iron out exceptions that make all the difference for people that will use the finished product. Those require very heavy human nature and creativity to solve, and can take a very long time.
The unpredictable nature of this work throws a wrench at planning and budgets. Time is money as the saying goes. And in this kind of project there are few things that can be predicted. You can measure how long similar tasks took, but each game is it’s own beast. Each texture requires a unique inspiration. The right word to be used on a dialog can take longer to write than took me to write this entire article. And those hurdles and needs can be predicted in occurrence, but never on how long it will take to solve them. A good game development process has to respect that. Or at least respect that enough to grant the development team enough time to yield a good game.
Besides, if you are making the exact same game, you are not really making something new. New is very close to unknown. That is the reason why there is so much code reuse, both in software in general and game development. New software is full of bugs, have plenty of edge cases and probably not nearly as many features as some old faithful engine or middleware. This may be used to increase how predictable development cost and time is, but comes at the expense of new approaches and innovations.
More important than trying to predict the time to make something is having a good bearing on exactly what you need to make, and beware the feature creep. The team wants to make a bigger game with the best intentions, but more features will increase the possibility space for delays.
So here are my thoughts on this. I believe that acknowledgment of this issue is the first step to find a proper solution. And I am not saying you should avoid the unknown. All I ask is that, if you want to create something new to you, that you consider this factor and allow yourself the time you need to accomplish the task, and make your best to keep your head above water when arbitrary deadlines are presented. There’s no easy solution, and even if there is, I cannot tell how long will take to solve it. After all, we are only human.