Damacy

If you can play Katamari Damacy, you can learn to write code.

Katamari Damacy is a game where you’re the son of a narcissistic king who makes you clean up after all his messes. You do this by running around a 3-dimensional field of clutter and pushing a sticky ball that grows as you roll up thumbtacks and dominos and cats and people and trees and bridges and eventually entire landmasses.

It’s kind of nuts. It’s also a lot of fun.

It’s also hard to explain to someone who hasn’t seen the gameplay. So here’s some gameplay.

Super Mario RPG and Dark Souls make it a close race, but Katamari Damacy is probably my favorite video game. It’s one of those “simple to learn, tricky to master, addictive as all hell” type games. It’s bright and colorful and kid/grandma friendly. The soundtrack is bananas. And there’s this weird indescribable feeling of power that flows through you when you roll your newly giant ball back to a previously visited area and see how far you’ve come.

Learning how to program is exactly like this. A week and a half ago, I was thrilled about using the most basic Ruby functions, a puts putz on a print stint. I’m still a noob, but making strings of text appear on the screen is beyond child\’s play now. (I mean, come on, I even know what that backslash is used for!) I’ve moved on to more esoteric concepts, and my thinking has evolved. Looking at more than 50 lines of code no longer scares me, and I have enough of a baseline to think of new concepts in terms of concepts I’ve already learned, instead of resorting to bad analogies and mnemonic devices to hammer lessons into my brain.

And maybe Katamari Damacy is like life in general, and maybe programming is like life too, and maybe this is all just one big transitive property post that means nothing. But maybe you like games (like I do) and think you’ll never be the type of person who could get into programming (like I did), and maybe you’ll read this and be inspired to stretch your limits.

Maybe, maybe not. Either way, I get to make a list now, and there’s nothing you can do about it.

Here’s why Katamari Damacy is just like coding.

  • You have to do the little stuff over and over before you can move on to the bigger stuff. In the game, picking up one battery doesn’t give you carte blanche to start grabbing mouses all willy nilly. No, you need to get a couple dozen batteries before you’re big enough. It took me a few days of messing around with booleans before I felt like I grasped them well enough to use them freely and predict what they would do. Understanding happened first, comfort happened later. Mastery hasn’t happened yet.
  • Sometimes growth is incremental, sometimes it comes in bursts. In the video above, there are brief moments where the whole screen goes a bit fuzzy  and a glissando plays; those are the moments when you’ve “leveled” in size to the next milestone. Fifty centimeters, one meter, twelve meters, a hundred…you hear the sound and see the blur and you know you’ve grown. This can happen in programming, too. Once you grasp how an if/else statement responds to a language’s top-to-bottom processing order (aha, I need to set the most specific condition FIRST!), something shifts inside you and you’ve reached a new depth. But you’re still growing even when there’s no chime to remind you how awesome you are. In the game, and in programming, growth makes it possible to take on bigger and bigger challenges, even between the epiphanies. The growth is always happening, especially when you’re not consciously aware of it.
  • Sometimes hanging back helps you blast forward. The person playing in the video didn’t need to spend so much time circling around that tiny first neighborhood. They were big enough to ramp up to the larger city within the first minute or so, but they stuck around and grabbed everything they could. Then, when they moved on, they were able to spend much less time picking and choosing which objects were small enough for them to handle. Sometimes I need to slow my learning process until it feels like I’ve dawdled on one topic for too long, but the payoff is usually a quicker and smoother leap to the next idea once I’m done.
  • Sometimes you need to just press on and scale the wall. Ok, so maybe that last point isn’t always true. In the game, if you encounter a wall that is less than double your height, you can scale it like Spidey. All you have to do is press on into it after it’s stopped you, and trust that you’ll keep rolling. When I’m learning things in order, I frequently reach this moment of truth: “Oops, this can;t be right, I feel like an idiot. I mean, I got the last thing, but this seems miles harder. How am I supposed to tackle it?” And the answer, invariably, is to press on into the problem and trust that I’ll keep rolling. It’s almost like coding is a game that rewards the people who can see past a moment of zero motion and understand that progress is still being made.
  • Stuff will knock you off course. Until you’re big enough to snatch up the islands on which Katamari Damacy’s world is built, there will always be something on the map that is as big as you or bigger. And moving. And in your way. That’s part of the challenge that makes the game fun. In my new life as a programmer-in-training, time and effort are the ingredients of my stickyball. And there are always bigger things in my life that take up time or expend effort. By the end of the day, it’s usually a struggle to get into a lesson and make myself a stronger programmer. But I’ll only win the game if I drive through the challenge and commit my time to focused learning. Every day. No matter what.
  • The controls feel weird at first, but you get used to them. You play Katamari Damacy by working two thumbsticks at once, pushing them in the same direction to roll, opposite directions to turn, etc. It feels like controlling a tank, and there’s definitely a learning curve. But if you stick with it – and you’ll want to, because it’s all so colorful and fun in there – you’ll get the hang of the control scheme and gradually become agile in the game world. The gamer in the video is pretty good, adjusting the camera and making quick adjustments between smooth turns. That’s not overnight expertise. When you first crack into Ruby, the precision of the language is sort of baffling, from syntax and indentation conventions, to “=” vs. “==”, to that whole “computer does only and exactly what you tell it” deal…it’s like an alien world. But if you stick with it – and you’ll want to, because it’s all so limitless and exciting in there – you’ll get the hang of the language basics and gradually become more capable.
  • Your superego will rarely think you’re good enough. Poor Prince. Every time he rolls up a ball and presents it to the King of the Cosmos, he’s met with scorn or indifference. Well, almost every time. On occasion, the player knocks a level out of the park and wows his in-game dad in a moment that rivals the ending of Field of Dreams for its ability to produce hot man-tears in this blogger. But those are the exceptions that prove the rule: The King wants RESULTS, dangit, and he’s not easy to please. My own brain and its judgments are like a little King I’ll have to live with if I want to code well. If I can’t recognize that the inner voice screaming “NOT FAST ENOUGH” as I type lines on the screen is just a flamboyantly petty narcissist in Shakespeare pants*, I’ll start listening to my own doubts. And then I’m in trouble.
  • There is no way to beat the game. Sure, there are a finite number of levels, and a credit roll, and a maximum number of unlockables to unlock. But there are also time trials, and max size challenges, and friends to play against. And sequels, too! I don’t think there will ever be a point when I’ve “finished” learning how to program in any given language. Ever. There are too many frontiers to explore! Not to mention all the other languages out there, each equally deep and nuanced. And SQLs, too!

So, if you think you can’t code, you should head over to www.codecademy.com and click on one of the languages to learn. You’ll be surprised at how easy and accessible the basics are. It doesn’t hurt to try.

But if coding really isn’t for you, you should at least sniff around on Craigslist for an old PS2 and grab a Katamari game for it. The game’s that good. There are also Xbox 360 and PS3 variations. And one for iPad.

I own most of them. If you learned on thing today, it’s that I care about Katamari Damacy way too much.

Til next time. I gotta go figure out how to write Procs. They’re like blocks, but you can save them. Does that sound like Sanskrit to you? Two weeks ago, we would have been in the same boat.

Two weeks from now, you could be building a whole new skillset. Think about it.

 

 

*That’s just my superego, though. Your mileage may vary.