I met Mike Vaganov when I gave a presentation on Project Management in gaming at PMI Silicon Valley. He teaches about gaming at DeVry in Silicon Valley – he's the real deal. He's been in the gaming trenches and he teaches on the subject – so if you're interested in a gaming career, or in teaching about it, let's see what he can tell you!
EDIT 9/5/2010 – We had an odd formatting glitch that has since been repaired in the interview.
1) Mike, what did you do before teaching?
Before teaching, I was a game programmer at a few mobile games start-up companies in the California Bay Area. I did all kinds of development: porting, original client development, client/server, build systems and automation, a little bit of mobile web, tools development, framework development, technical art, and some other things. I worked in a lot of many-hats situations, which is pretty standard for start-up companies and game development in particular.
My first job out of college was as a contractor, porting casual games for mobile devices. It was like an internship, but with less guidance and more pressure. In my first contract I was given this new programming technology to learn (BREW) and then told to make apps work on tricky mobile platforms, in a fairly limited time frame. The amount of stuff I learned about programming my first six months working professionally dwarfed what I had learned in college and high-school. That learning curve, which continued all the way till I started teaching full time, was pretty stressful at first.
After about a year of work, I was doing lead-engineer type stuff, including developing new frameworks, working on mission-critical client/server code, teaching new engineers APIs, being a point- man for third parties using our tools, and other things. I ended up meeting a lot of peers who have very similar stories.
2) How did you go from game development to teaching?
I tutored math and computer science in college, and discovered that I love teaching. I actually continued to work as a tutor for about six months after I graduated, while I was working at my first games job. Tutoring gave me a lot of time to study, and practice with what I was learning. The time I spent developed some good relationships with people at DeVry, where I worked and went to school.
As I was graduating, DeVry was developing the Games and Simulation Programming (GSP) curriculum, and they invited me, a year or so after I graduated, as an industry insider to their Industry Advisory Committee meetings to discuss the curriculum's validity. While I was there, I let it slip that, 1) they would have an incredibly hard time finding people in the games industry with Masters Degrees who would teach, and 2) I would love to teach part time and possibly even full time if they took away that requirement.
DeVry ended up not taking away that requirement, but they did offer me a part-time job as “adjunct faculty”, where that Masters Degree requirement doesn’t apply. Though I wasn’t full faculty, I taught for more than two years, with consistently good reviews from my students, and good student outcomes for the students who graduated from my classes.
I got hired full time at DeVry shortly after the iPhone app store got big in early 2008. I was working in the mobile games business at the time, and the iPhone was really making its presence known. Actually, that is a huge understatement. The iPhone destroyed the mobile games market as we knew it. What was once a technologically fragmented and stifled market place had its doors blown off by a high- powered platform with mass consumer appeal. But that’s another story.
My company at the time decided that all of the investment we had made in the old mobile market was a now waste, and that the mobile development team should be phased out. Almost all of the engineers were laid off shortly afterward. I was in the first wave. The application that I had just finished (which turned out to be two applications thanks to clever in-house scripting technology), had just passed Beta with no known-shippables, so I wasn’t needed anymore.
Luckily, I was still working in DeVry at the time. I called my Dean the day I was laid off, and scheduled a lunch with him, and my boss at the time, who knew my Dean from way back. As it turns out, the games industry is pretty small; my boss at DeVry, an ex-EA producer and programmer, had worked with my boss at LimeLife years before.
Anyway, the day after I was laid off, I basically signed up for full time work at DeVry, on the condition that I would take night classes to get my Masters Degree. I’ve been doing it, and loving it since.
3) What's it like to teach game development? Tell us about your schedule, daily activities, and more.
Teaching Game Development is a lot of fun for me. This is a multi-disciplinary field, so I get to do a lot of varied instruction, including lectures on: history, art and design, a bit of math, even a little psychology, and tons of computer science.
I get to interact with lots of people on a daily basis, a change from programming full time. Most of my interaction is with students. Sometimes I get to see that I have a real and lasting positive impact on them. It’s rewarding to see that, how a person becomes empowered after being exposed to something I explained. It’s a kind of satisfaction that I really missed when I was programming full time, something that I remember from tutoring.
And I love the programming, so teaching computer science courses is awesome. I really get a chance to hone my craft. Actually, I feel like I have this responsibility to write good code all the time now, because I know that my students are going to be emulating me. Writing good code makes me feel awesome, and getting to do it as a regular part of my job (rather than as a TODO for when my boss says I have time ) is awesome.
My schedule, as compared to full-time programmer, is pretty amazing. None of my classes start before 11am, and most of my classes don’t start before 2pm. So, I get to keep the sleeping habits I had as a programmer. Also, none of my classes last more than 4 hours, and the ones that last that long are lab classes. I still lecture all four hours though.
It’s hard to stop sharing knowledge about computer science once I get going. I always have an IDE projected on a wall behind me, so there’s a lot of programming that I can show. Also, programming has a lot of tangents that can extend a lecture for many hours.
Some days are longer than others, particularly when I have classes scheduled back-to-back, and have a night-class afterward. But I remember fourteen hour days at crunch-time at my games job, so it’s not anything really new. Grading is time consuming, but I mitigate that by giving very hard assignments, usually labs, that are easier to grade, and very few of them.
4) It seems more and more colleges and schools are teaching game design, development, and more. Where do you see the future for that going?
Personally, I see that our public school system is failing the US at a k-12 level at the moment. No Child Left Behind made our teachers teach to a test, indirectly ignoring some critical problem solving skills, and budget cuts from a turbulent economy have cut art and enrichment programs. The result is a generation whose most challenging problem-solving education comes from videogames. There is a sad expectation that the structured “real-world” can be slogged-through with minimal effort. My biggest concern is that future generations, in general, won’t have the problem-solving skills and educational rigor to be successful technically and artistically in a field as demanding as Game Development.
As a professor at DeVry, I welcome the competition other colleges can bring, as long as it is of quality. Some schools may implement a poor curriculum that only gives cursory glances into what real work in the games business is like, and then slap a degree in the students’ hands. That kind of education would bring down schools like this as a whole. But again, if we can’t get competitively educated high- school grads into these colleges and universities, students will lack some strong problem solving skills, and cursory and nominal degrees will be the norm.
Apart from that, there’s the problem of finding qualified teachers. Most of my peers in the games industry don’t have Master’s De
grees, or educational backgrounds, so there is a significant barrier to entry. Actually, the games industry is really skeptical of Academic approaches to game development in general.
The games industry is full of passionate people, who excel in lean, high-performing groups, without much structure. They put value on results, not on certification. That kind of view can be counter- productive for institutions of higher education. Ironically, game programmers are good at dealing with process, and designers are good at making systems for structured intellectual advancement, but the old institutions aren’t ready to have those elements of education changed as fluidly as game developers might want.
5) Do you feel there will be more opportunity, less opportunity, or the same opportunity for people in gaming to teach? I would imagine that there would be more interest in it over time. If someone wanted to teach game development and related subjects, how would you advise they go around it?
If you’re a games industry vet, and you want to start teaching, there is certainly opportunity right now. Like I said earlier, it’s hard to find really qualified game developers to be full time instructors, so there aren’t that many. Apply for an adjunct position, a part time gig. I know a few adjuncts who work full or part-time doing game development, then part-time teaching.
There’s usually an interview, or test lecture, so have something academic prepared. Bring your GPA, or letters of recommendation, just like a standard job. Be prepared for academic structure that the games industry is capable of functioning without. If you’re able to produce as a teacher at the same quality, and with the same passion that the games business demands, you’ll do great.
6) How much do your students "get" what game development is like in real life?
I believe there is a public misperception that game development is all fun and games. Sometimes I get the feeling that my students think we have magical game development tools that make game-play and development eventually as simple as dragging-and-dropping rules, and that we have gold-mines of art that magically inserts itself into the game, and that there is some scientific process that will make a good game. The truth is much harsher than that.
The first thing I teach my students when the come into my intro class is that Game Development is hard. Programming is hard. Putting in the kind of work and creative effort to create a polished piece of software is very hard. We have no standard tools, or infinite sources of art, or rules to compare a game against. In the end, its iterative development: the more cycles you put in, the better it gets.
Most of the time, we make the tools ourselves, and they are only as good as the programmer who built them. Most of the time, we make the art ourselves, and it never feels good enough to the artist. And we never know if a game is good until we show it to people, because it’s hard to find fault in our own creative children.
They start to get it after their programming classes start kicking their butts. The ones who don’t get their butts kicked seem to have a natural understanding for what it’s really like already. You work hard to create something you love, and have the humility to leave it when your work is done. You find your limit, and push yourself beyond it. The only way you’ll make the next-big-thing is by transcending the rules of today, so be prepared to work hard to see everything you ever saw as amazing become mundane.
7) What advice would you give people seeking game development careers?
Learn to be technical. Be comfortable with Algebra. Learn to Program C++. You can make dialog trees as soon as you know if statements. You can start making guessing games as soon as you know loops. You can start making roguelikes shortly afterwards. Practice programming, and try to make games. Find your limit, and try to discover why you have trouble understanding something.
Get good at games, and try to make content for them. For example: Play Dungeons & Dragons, and be a dungeon master; Play Magic the Gathering, and construct your own decks; Use level editors to make maps for games you enjoy. Do these before you start working; when you start working as a game developer, you won’t have nearly enough time to play games.
Learn to communicate professionally. Expand your vocabulary. Develop a good sense of grammar and spelling. Write concise e-mails. Write well structured 5-paragaph essays. Read good writers, in books or on the internet. Share information with people.
Be creative. Get comfortable with drawing at-least stick-figures. Sketch a scene. Make a map. Write a poem. Make a song parody. Do something that you don’t see done often enough.
These are pretty general suggestions, though the programming ones are more specific. I want to encourage technical and artistic growth for young developers. The games industry puts lots of emphasis on Technical and Artistic *Growth*. We want to make a new and better game.
Thanks Mike! We wish you well in your pursuits, and thanks for taking the time to share your knowledge!