Wednesday, March 30, 2011

I'm a programmer and i can't play SpaceChem


I often wonder. What if I made some programing tool that behaved more like a game than a text editor? What if it was animated and challenged you to complete tasks? What if it rewarded you, not just for completing tasks, but how well you completed them. In short, I wonder if I could create a programing game. Would that game have such well defined goals that i would be driven to wire up data sources to data consumers ad nauseum? While inefficient, would my productivity skyrocket because i simply could not stop doing my work and doing it well?

I think SpaceChem has answered that question for me. The answer is no.

It's not that SpaceChem isn't brilliant. It is. I highly recommend everyone try it. It's a great puzzle game that puts you in control of advanced machinery constructing required compounds on an atomic scale. Along the way you learn a little something about chemical bonds and molecular structure. It's actually quite commendable as the game is practically overflowing with actual real world information.

Playing the game involves composing instructions for your machine using a finite set of operations organized in order on a timeline. This, the main mechanic of the game, is a visual programing language. The player is essentially ordering operations in a looping thread. As the game progresses, the player must manage more than one thread and synchronize operations between them.

My experience with the game went something like this:
"Wow, this is a weird and trippy interface."
"WTF is a waldo?"
"oh! i get it!"
"Hey, this is cool, but if i'm going to be programming, I could just be writing programs."

After discussing the game with some friends, I've come to the conclusion that this progression is not uncommon. You will recognize it as requiring the same thought process and midset as programming. You will have a moment of glee when you realize your skills will make you better at this game. You will realize that you either could be putting that thought process towards something more constructive, or you are not being given the escape from the stresses of the day that you were seeking.

So if it's so engaging, why wouldn't it work as a gamification tool? If SpaceChem was actually wiring up my data model, would it be more compelling? It's true that one of the reasons I can't get into SpaceChem is I am painfully aware that I am working and accomplishing nothing. That might not be true for everyone.

Myself, I have a plate of tasks that need to get done. I have projects at work. I have projects at home. Had I applied myself to them in the same way i play SpaceChem, i would be moving towards finishing those projects. I like my gaming time to be a mental escape. I'd like to solve problems using different thought processes than i get paid to use. In short I'd like a new kind of challenge presented to me.

Even if a SpaceChem like gamified tool were actually getting my work done, I still think i would end up shying away from it. I think it wouldn't take much before i realized that a good old fashioned text file of instructions would be a far more efficient means of coding. It's the same reason I prefer command lines over gui tools. Did you know that to this day, guis provide no way to move a directory to a new location while simultaneously renaming it? Even Interface Builder's little drag and drop lines to wire up actions and outlets seem a little overwrought to me. Sometimes i prefer to just write those designations write into the text files.

So thanks SpaceChem for teaching me some valuable lessons. I don't think i can be fooled into doing my job with a game interface. I don't feel like i need to experiment with a game interface to do my job.

By the way, if you are not a programmer and like puzzle games, i can't recommend SpaceChem enough. Really, it's a phenomenal game. If you are a programmer, try the demo. let me know if you feel similarly.