Level Up
Good programmers continously learn. The defining characteristic about the top coders I’ve met is their complete and never-ending thirst for knowledge of almost any kind. The best way I can think of to describe them would be to say that they’re “interested“.
In the games industry especially, multi-talented people tend to be the ones that rise to the top. The people who essentially pulled Battlefield: Bad Company together during its darkest moments in production were the coder with an eye for game design, the ex-programmer designer, the artist with a feel for level design… and so on.
Looking at the famous people in the industry they tend to have been brilliant hackers that coded a game for the early PCs or Amigas in a basement somewhere, only to go on to become a lead designer for a massive latest-generation console game, not even touching the code. I firmly believe this is because of a never-ending desire to expand their skill set, explore new things, and as such not only aquire a view on how lots of things work, but also on how lots of people think.
Becoming a better programmer has a lot to do with a deep desire to learn, a thirst for knowledge. People often find me curious when I get stuck to a documentary about some esoteric subject like a World of Goo gooball to a cliff… but it’s yet another manifestation of this desire. It doesn’t have to even come remotely close to a subject about code or computers. So in a way, it’s no surprise that the best coders I know tend to also be musicians, artists or have other creative hobbies. World of Goo was made by just a few multi-talented people.
But a good programmer doesn’t stop at learning about things by passive reading or watching… they’ll inevitably have a deep desire to do stuff, and to keep exploring possibilities. And they won’t stop at doing stuff either, they’ll strive to perfect the art of whatever they’re doing.
At the same time, one of the first things one needs to learn is that perfection is ultimately unattainable. It’s this inherent conflict between “refactor” and “hack” that leads to systems improving in iterations, and each step towards perfection is a manifestation of the sum of the learning that’s happened this far.
On the flip side, one of the worst programmers I’ve ever worked with was a guy who (openly) refused to learn, and had lost all interest in learning. He said he just wanted to make cool games, and wasn’t interested in education. The result was that when the rest of the coding team would learn something about the system and advance a small bit, he’d remain behind.
The problem with programmer skill is that it’s incredibly hard to judge without at least peripherally working with the person in question and reading their code. The result of this was that this guy would be given a task, implement it quickly with no regard to all the rules and guidelines everyone else had learned to apply to prevent bugs — in essense he’d do what the rest of us would always consider as hacks. He was well regarded among designers and producers — almost seen as a miracle worker, because he was so quick at getting things done.
Then he left at 5 pm and the rest of us spent late evenings fixing his bugs by essentially removing what he’d done (which was always causing bugs that were hard to track down and pinpoint) and re-implementing the features.
What’s the lesson to take away from this story then? Well, first of all, keep learning! Don’t let yourself fall into a trap of thinking you’re pretty good at what you do, thinking that there’s no reason to learn C#, to look at functional programming or to learn to build levels or even that there’s nothing interesting about Penguins.
And, second, most of the people you work with have no idea whether the coders on your team are all excellent coders or if some are really bad. Shocking as it may sound, it’s up to you to tell them, because in the end you’ll inevitably be the one fixing the bugs at 11 pm as your ship date approaches.
1 Comment
Other Links to this Post
RSS feed for comments on this post. TrackBack URI
By Johan Svensson, Thursday, January 29, 2009 @ 3:45
I was pretty amazed when I learned that the main programmer of World of Goo also did the music. Such amazing-sounding music isn’t exactly the first thing that comes to mind when you say “programmer”.