Interview: Brandon Dillon - Double Fine

Brandon Dillon has been in the games-industry since he was very young, interning at Blizzard as young as 14. After this he has interned and worked for ArenaNet, but later decided he was more passionate about adventure games. So where better to look for a job at Tim Schäfer’s Double Fine Studios.

What are the biggest mistakes novices do when programming?

Overengineering solutions to problems. Programming is challenging, and you get to solve difficult problems, but the best solutions to difficult problems are often the simplest ones. It’s easy to build more and more scaffolding in the process of trying to understand the problem you’re trying to solve, and it can be hard to work up the motivation to clean up your implementation after you have a working solution, but often you’ll learn even more about the problem you’re trying to solve by taking a working solution and whittling it down to a simpler, cleaner, shorter one.

Even at the professional level, what mistakes are most common?

In some ways it’s related to the first answer, but professional programmers (including myself) often incorrectly try to apply old solutions to new problems. Once you’ve found a really elegant solution to a particular problem, it’s natural to try to generalize it to solve lots of other problems. Oftentimes, this results in a less efficient or elegant system, and frequently it leads to an awkward solution. It’s important to internalize the things you learn along the way, but be mindful that “when you have a new hammer, everything looks like a nail.”

If you were to train someone like me, (who has a rudimentary programming knowledge) for making a game for ludum-dare due in 4 weeks and had a million dollars on the line, what areas of programming/concepts would you have me focus on, and what languages?

For any short game jam, the key is to use whatever you’re fastest in. I personally like to game jam regularly, and I use tools and engines that I’ve built from scratch for that purpose, but it’d probably be a really bad idea for anyone else to try to use it for a game jam. If you’re starting from scratch, I’d recommend learning one of the game engine frameworks designed for fast prototyping. Unity is well-loved and well engineered, plus it has lots of documentation and tutorials. It offers a bunch of different languages; it’s largely a matter of personal preference, but I like C# because it has good debugging tools built in.

If I was to focus on professional game-development in teams, how would the answers those questions change?

Working well with a team is a complete additional set of skills. When working with other programmers, I’d recommend particular focus on designing your code to have a clean, simple to use, and easy to understand interface. Getting good at talking about code with other people is also very important. When you build something, try grabbing someone and explaining what you did to them. Your communication skills will improve and you’ll probably learn things yourself just by talking about them. Working with people in other disciplines, like artists, is yet another set of social skills. The most important thing to do is to try to understand their work process and how you can design things that work well with it.

Are there any communities which greatly benefitted your learning-process ? (Online or offline)

I had the benefit of having multiple professional internships early in my career, so I got to learn from directly working with really good professional game programmers, so I strongly recommend trying to do some internships. If you’re looking for something you can do more in your spare time, I’m personally a huge fan of the tigsource community. It’s full of people who want to make games, and I find their focus to be a lot more practical and direct than communities that talk about software engineering in more practical terms. The skill levels there are also all over the spectrum, so you can definitely find people at the same experience level you’re at. When I was growing up, there was a community for game programmers called flipcode that was fantastic. It’s defunct now, but they still have an archive of really good low-level programming tutorials.

What is one book on programming you think everyone (that wants to program) needs to read?

The best book on programming is called Code Complete. It’s not about a specific language or technology or set of algorithms; it’s about how to think about and write clean code. It’s a very practical and well-structured book, and a good thing to read after you have some basic programming experience under your belt. If you’re looking for something more inspirational that can ignite a sense of wonder at what’s possible, I really like the book Code by Charles Petzold. It’s more abstract and metaphorical, but if it’s the kind of book you can get into, it’ll stick with you for your entire career. I hope those are helpful answers! I can be a bit of a windbag 🙂

Written on March 12, 2013