Gamasutra is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
March 29, 2020
arrowPress Releases

If you enjoy reading this site, you might also want to check out these UBM Tech sites:


What Was I thinking? The Existential Cognitive Dissonance Of Updating Old Code

by Steve Fulton on 11/03/12 10:09:00 am   Expert Blogs

1 comments Share on Twitter    RSS

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.


I spent the last week updating an old game engine so that it could run on iOS.   Back in 2005, when I first built that particular game engine, I spent months crafting the code.   I recall the pride I felt when I look at my program listings back then.  They were filled with objects, events, reused functions, a particle manager I wrote from scratch, a sound manager, a level-ramping structure that was easy to update and expand, and many other pieces of fancy code that I was sure to reuse in the coming years.   Over the course of the project I felt I had become a coding artiste.  I was an adept at crafting algorithms that made the game sing.  I could weave magic and the game were producers like putty in my hands.  To me at least, it felt like objects and functions dripped off my fingers, forming sonnets of execution that that would have made other programmer weep, if I would only allow them to see my amazing, secretive code.  

Curiously, after the game was finished, I moved on.  My next project was completely different, and I started again, mostly from scratch.  While I barrowed some of the ideas from the code, I never reused that old engine again. While the experience inspired things I did later one, I never went back to that engine for anything major.  It sat on my hard drive gathering pixel-dust, becoming legendary in my own mind. Until last week when, like I said before, I dusted off the old game engine so I could update it for iOS.

When I looked at the code with my 2012 eyes I surprised to find one common denominator among all the masterful code I had developed seven years ago: 

It was CRAP!   

I mean awful, terrible crap.   My "state of the art" coding in from 2005 appeared so hacky, so make-shift, so inept, I could not believe it was the same "piece of art" I was so sure I had crafted years ago.  It was not "magic" at all.  It was almost-competent for the time I suppose, but nothing special.   In fact, I found something I could optimize in nearly every function and class.

I had run smack into my existential problem of cognitive dissonance when updating old code.    It's cognitive dissonance because when updating old code, I have two conflicting views swimming in my head: the code once formed a successful game, so it must be a good starting point, right?  However while trying to update it, that very code drives me nuts because it does not meet my modern engineering expectations.  At the same time, it's an existential problem.   Why? Because feels like a microcosm of life.  It's just like the mental exercise of "If I knew then what I know now", but amplified because I only have myself to blame.  It shatters an internal view of myself and my work that I might have held for a long time.   Updating old code, especially code I have not touched in nearly a decade is like a ride in a time machine.  A really crappy time machine that only highlights my mistakes makes me feel like an idiot.

And that's a good thing.

As a programmer, I get better every time I sit down and write code.  I learn more from mistakes than from successes, and I build upon both to get better and better at my craft.   The truth is that old code was probably pretty good for the time was written.  It solved a particular problem, it served me well, and it helped me continue to grow as a developer.  The fact that I now think it is "crap" only proves that practice helps me grow, and as a developer, I will never stop learning.  

Related Jobs

Heart Machine
Heart Machine — Culver City, California, United States

Technical Designer
Visual Concepts
Visual Concepts — Agoura Hills, California, United States

Animation Engineer
Visual Concepts
Visual Concepts — Novato, California, United States

Senior Server Engineer
Visual Concepts
Visual Concepts — Novato, California, United States

Gameplay Software Engineer

Loading Comments

loader image