Sponsored By

Featured Blog | This community-written post highlights the best of what the game industry has to offer. Read more like it on the Game Developer Blogs.

"Overcomplicating Everything"

We often make things harder for ourselves as developers than they need to be. We know what needs to be done, yet somehow keep getting tied up in arguments or details that don't matter! The answer is hard, but not complicated: the answer is doing the work.

Chris DeLeon, Blogger

January 15, 2014

11 Min Read

Arnold Schwarzenegger is an incredibly inspiring person. At 20 years old, he won Mr. Universe as a body builder. For many of us, we could just look at that achievement and see that as the likely high point, figuring that might come to define our identity and life path. No, that wasn't enough though. He started a successful mail order business based on his recognition from body building. Here again, many people might see that as a stopping point - he became a millionaire well before he was a movie star. Still not enough, the guy picked up his life and moved across the world, becoming an actor. And, at least so I once read, his first agent(s) advised him to change his unpronounceable, unspellable, foreign-sounding last name, encouraged him to hit hard the speech therapy to drop his accent so that his voice could sound more American, going so far as asking Arnold to get plastic surgery to make his chin and face less boxy, because it did not fit the image at the time of how a handsome Hollywood movie star should look.

No. No. No. He found someone else to be his agent, because he was determined to succeed on his terms, with his name, with his voice, with his face, and he of course did. With flying colors. He helped define a whole new type of action hero, an image that future Hollywood agents could use as a measuring stick when encouraging new Hollywood immigrants to... maybe not change too much. Again like becoming Mr. Universe, and again like creating a successful mail-order business, anyone would have understood at this point had he simply accepted his identity within the world as a movie star, a beloved and extraordinarily successful one, finding a way to be satisfied with that.

He become governor of a state in another country than the one in which he was born. Not just any state: a state that has 4.5 times the population of his home country and 5.5 times the GDP of his home country. Borrowed directly from the Wikipedia entry on California Economics: "California's GDP is larger than that of all but 8 countries in dollar terms (the United States, China, Japan, Germany, France, Brazil, the United Kingdom, and Italy)." He became head of the executive branch of the 9th largest economy in the world, in a place he immigrated to in his 20's, and for 8 solid years because he won the re-election by a wide margin (if it started even partly as a joke, clearly he succeeded in quickly taking it quite seriously).

Hoo-oo-oo-leeeeyy schnike-ees. It's hard to really wrap our minds around the thought of becoming a mayor in a small city we grew up in. Oh, and he started a restaurant, and probably some other impressive things, but I suspect you're getting the point. Schwarzenegger is basically like Tony Danza on steroids. Ok, formerly on steroids. (Tony Danza, you see, has also done a lot of stuff, not letting his early career determine or limit his identity and interest in broadening his life experiences.)

This is all background, mere set up, though I suppose it has a bit of a valuable message in its own way. The reason I bring up Schwarzenegger is because periodically, he participates in an open online forum about weight lifting, offering advice and answering questions. And recently an exchange took place that I think is worth calling attention to here:

Q (Snowman24): When trying to cut weight after a bulk, what was your best method? In terms of cardio, diet, etc? Do you believe in ketosis at all?

A (GovSchwarzenegger): Pretty simple... I would add in extra cardio - running on the beach, swimming, and bicycling. I cut out bread, pasta and desserts. It definitely wasn't rocket science, but it worked.

Random observer (rainman1): I'm getting the distinct impression we [have] been overcomplicating everything.

Glorious. Here's a massive, highly active discussion forum where people come up with, deeply research, and argue over complex diet and workout schemes to optimize their gains, asking for advice on how to lose weight based on the lifelong experiences of Mr. Universe, a 7-time Mr. Olympia winner, a man that can still achieve heroic muscular fitness now in his mid-60's for continued action movie cameos, and his answer, basically: exercise more, and ease up on carbs.

Pure gold!

It's maybe just a little too easy for some slightly geeky people (if you're reading this, I trust that you're at least a little bit geeky. I'm geeky too) to judge some meathead, weightlifting jocks (I was sort of one of those, too) for overlooking the obvious, making it seem more confusing or difficult than it needs to be. However we videogame developers routinely fall into doing that exact same thing to ourselves.

We often know what we need to do next. Instead of just doing it, we get into a long-winded philosophical argument, tangential discussions about directions that we definitely are not going to go in, or bury our faces in Google trying to find everything that there is to know about this particular decision before we just, 99% of the time, finally get around to doing what we were going to do in the first place, in the same way that we were going to do it in the first place.

I don't know whether you caught the blog post for beginners that I wrote some time back titled Stop Trying to Learn Everything Before Starting. To be clear though, this is that same message for people of intermediate skill level that now pretty much know exactly what needs to be done next but keep finding ways to stall. I could have instead called this entry Stop Trying to Learn Everything Before Getting on With Finishing Your Game Already.

Generally we'll only actually try an alternative approach if that first attempt catastrophically fails us. Even then we're very likely to attempt the next most logical, convenient, or familiar thing that we can find practical information for. This isn't being lazy; this is how things happen at all at our scale. Given our small (or solo!) team sizes and the sheer amount of code, data, content, information, and decisions that we're trying to juggle to make videogames, it's often smart, or at least sensible, to be efficiency-oriented most of the time. Then we can better make it count when we deliberately do something specifically contrary to conventions and expectations for a meaningful reason.

In other words, assuming we're on track to realistically get much done, what we do typically has far less to do with all that extra discussion and investigation, and much more to do with what arises from acting on our ideas and reacting dynamically if they don't come together as expected. There's often simply no way to know whether they can come together as expected until we've tried acting on them. As you've maybe heard me point out before, the brain is not an emulator.

It's almost as though, somewhere deep in the recesses of our minds, we think that if only we could know enough about the problem at hand, one morning we'll wake up and the work will be done. My generation grew up hearing from G.I. Joe that "Knowing is half the battle" but maybe didn't hear often enough that the other half consists of taking action based on that knowledge. It's not as catchy, I know.

No amount of accumulated knowledge is going to substitute typing in the next characters that need to be typed, creating the files that need to be created, doing the bit of code refactoring that may be necessary to move forward on the project without tripping over bugs leftover from partial implementation of ideas tried but abandoned because they did not work. (That's just part of the process. Again, generally speaking, that hasty implementation is often the only and most efficient way to figure out what ideas are or aren't working. When they aren't working, abandoning them is far smarter than forcing yourself to use them simply because the work on them is partly done.)

Here's another hard fact, true for basically every developer, dare I say human being, that I have ever met, myself included, which I hope can be digested constructively here as a challenge to your skills and intellect: there are a great many things that you think you know how to do, but have never attempted, and in all likelihood you don't really know how to do those things. At best you know how to start, and have confidence that you can figure it out from there, but that vague potential is very different from having done it. Even understanding how individual parts work is not at all the same as knowing how and why they fit together, let alone being able to assemble them. Once we actually attempt to do the things that we only thought we understood, we quickly discover all kinds of lovely nuances and subtle complexities that weren't apparent on first glance. The upside of course, is that by the time we finish the attempt, we really will understand exactly what's involved in making it work. It'll become one more tool in our conceptual or practical toolbelt for future use, having shown ourselves that it's something we know how to do.

Note however that to "know how to do something" has way more to do with the "do" than it has to do with "know" - strange, right? If I ask whether you know how to do a skateboarding trick, I don't mean do you understand what the stunt is, I mean: can you do it. If I need heart surgery, I need a surgeon that "knows how to do" the operation, by which I mean someone that can do much more than just describe the procedure. If you haven't made a platformer game before, you maybe have all kinds of ideas of what you could look up or try first to get started with doing so, but strictly speaking, you really don't know how to do it, even if you just finished reading a book on the subject.

To people in our family - and to ourselves - we tend to look like our potential, what we seem capable of doing. To friends, we may be thought of from how we seem in the present: less pressure about the future, and not worried about the past. However to strangers, literally everyone else in the world, our abilities and our character are judged only by our past, what we have already done. So outside of the dozen or fewer people that know us best: if we haven't done it, as far as anyone else is concerned we can't, regardless of what or how much we "know" inside. There is only one thing that can change their minds about whether you can do it, and that's going through with actually doing it. Strangers can be very hard to persuade, however this turns out to be an extremely effective way of doing it.

Someone could spend years reading about how to do something, then be put in a situation to do it, but then be unable to translate that reading into doing. Meanwhile if someone else has actually done it, we know that we can generally count on them to be able to do it in the future, or benefit from real takeaways learned as part of that experience.

Let me balance this by pointing out that I'm a PhD student, I'm basically in the "20th grade" right now. I'm clearly not opposed to books or book learning. I love reading, and I read a ton. Knowledge is great! All I'm trying to stress here is that especially within the domain of a craft, knowledge alone cannot be a substitute for experience actually putting things together. Here's the crazy part: actually putting things together can in many ways be a lot less complicated than trying to study or talk coherently about them. I'm not saying that doing it isn't challenging, but what I am saying is that at the very least, doing it is a different kind of challenge than getting endlessly distracted by learning infinitely more detail about the matter at hand.

Sometimes we need to - get to! - play the role of grand architect on our projects, but for the vast majority of the development time we actually just need to be our own construction crew laying bricks, nailing boards, taking measurements, and lifting things into position. Even if you're the kind of person that's capable of governing the 9th largest economy in the world, there's still a time and place in life for simply being a brick layer.

If you feel like you or your work may be hurting from falling into this pattern, and I know a lot of people are affected by this, having been "overcomplicating everything" day after day, I urge you to catch and stop yourself next time this starts. Just get back to the compiler and do the work. The thoughts you had previously about where this project was headed are still just as valid, though of course even if you're having second thoughts there is no better way to prove to yourself whether the idea works than to simply try it and see.

Read more about:

Featured Blogs

About the Author(s)

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like