Plants vs Zombies

Everything important I know about writing software can be expressed in Plants vs Zombies.

My nephew introduced me to the game. The kid thinks I have brains of mush, because I don’t know the important things, like Mario Brothers and Zelda. Disappointment from a 4-year-old can be brutal. But I got the hang of Plants vs Zombies…obsessively even.

In case you haven’t played the game, here’s the gist of it: you plant vegetables and other plants to defend against invading zombies. There’s some hilarious zombies that played football, bounce around on pogo sticks and ride sharks in the backyard pond. You, on the other hand, get to have ingenious uses of squash, sunflowers and corn to torment the mindless beasts.

And that’s programming, in a nutshell.

It’s a game of order. You don’t just do anything, but you try things a certain way and see what comes next. Sometimes I have too much order, and it’s kind of a chore. Sometimes I don’t have enough, and things don’t really work out very well.

It’s a game of trial and error. You don’t have to get it right the first time. In fact, trying new things often is kind of when the fun starts.

It’s a game. Some managers try to take the fun out of everything. But coding is game-like. There are puzzles and problems and patterns…and plenty of times to show off a little.

But wait, what about languages and frameworks and patterns and stuff????

Nope, that’s not what coding is about at all. I mean, yes, you pick that up, and you can’t ignore that, but it’s about solving problems and trying things out.

Wait, can someone like me learn to code?

I was asked that a half-dozen times today over dinner. An old friend of 20 years has wanted to learn to code. I kept telling him he can do this. I don’t think he believes me yet.

There’s an aura of wisdom around some coders. I don’t want to deny that. But they picked up a text editor at some point and tried copying a line of code down to see what it would do. They didn’t stop there. Today, they’re solving incredible problems brilliantly.

It’s kind of like every level of Zombies. They don’t keep giving you easy levels after you’ve figured them out. There’s always a new challenge. That’s why it’s fun.

So how do I learn to code?

Well, you try something. Pick a language. Try Python or Ruby or even Clojure (ooh, Clojure…) or R if statistics are your thing.

I started with Turtle in the Eighties. I was frustrated that I couldn’t do much with it, so I kept going.

Bring a friend

Sometimes it’s more fun with a friend. I’ll show off my skills to my nephew. My kids love to see that I’ve discovered something important in their lives. If you can code with someone, or show the what you’ve done…that goes a long way to making it fun. Using code to solve a problem should be shared.

What about tutorials and degrees in Computer Science and bootcamps?

I have a love-hate relationship with all of that stuff. It has its place. Just make sure it’s place isn’t blocking you from trying things.

I have all the respect in the world for people who write tutorials. It’s not easy to write a good tutorial. I haven’t found a tutorial yet (seriously) that hasn’t fallen down before the end. They start simple, and they get you excited, and then they…I don’t know what, they fall off the road and get lost in the weeds.

I think the issue is the tutorial starts out all about the reader and usually ends being about the writer. If I’m writing a tutorial to show off how dog-gone smart I am, I’m not doing you any good, am I?

Computer Science degrees? Awesome stuff. Fascinating stuff. You’ll learn about limits and optimal ways of doing things and they’ll put you through the paces. This is good. It’s just not the same thing as coding. You may want to invest in your own deep knowledge some day, and a CS degree is an ocean of great knowledge. But we’re talking about learning to solve a problem with a computer, which is an entirely different thing.

Bootcamps…not a bad idea, not a wonder drug either. If getting past the initial humps is all that’s holding you back, enroll in one today. If you’d like something deeper and longer lasting, you’ll want to have a habit of trying things out. You’ll want that whether you go to a bootcamp or not.

What are you saying?

I’m saying that you start by playing around. You start by having an interest. You try some things. Keep it light and fun. You’ll get organized in your head. You may get stumped sometimes. Who am I kidding? You’ll get stumped every day (at least I do). But it can still be a fun and rewarding way to spend your life.