Rachel! Thanks for taking the time to do this interview.
“I’m happy to, seems like you’re making a great site.”
What is your current title, and where do you work currently?
“I’ve been a Senior Software Engineer at Tangible Play for almost a year now, I started last February. We make a product called Osmo, which lets kids play educational games with physical objects in front of the iPad (www.playosmo.com).”
I’ve seen that video! The product seemed amazing. I wanted one for myself.
“I really like the product as well, the video on the website sold me on working at the company.”
This is not the first game company you’ve worked at, nor the first game. Could you name some of the game titles you’ve previously worked on?
“I’ve been working in games for a while now, since January 2004 at several companies: Wizards of the Coast, Cricket Moon Media, Zynga, EA, Breaktime Studios and KIXEYE before starting at Tangible Play. Some of the games I’ve worked on are: Magic the Gathering: Online (PC), Mafia Wars (Facebook), Dragon Age Legends (Facebook), Dragon Skies (iOS), Slots: Lucky Jackpot (iOS/Android), TOME (Web/Steam), and Osmo Tangram/Numbers/Newton (iOS).”
That’s a lot of titles.
“Yeah, and that’s just a few of them.”
Did you always want to work in games?
“No, I didn’t really realize I wanted to work in games until probably about the time I got my first game programming job. I was always interested in Math/Science/Engineering in general for about as long as I can remember though, at least since middle school. I did play games as a kid, mostly on the computer, and then stopped for a while throughout high school until I started playing them again on my Palm Pilot during college and then more during graduate school. There was a point where I was looking into buying a new Palm Pilot mostly to play games on and a friend pointed out that I should buy a Game Boy Advance instead. That is when I discovered I really enjoyed strategic games like Fire Emblem and Advance Wars.”
“I realized during graduate school that research, at least Computer Science research, didn’t interest me nearly as much as building real products.”
Where did you grow up?
Games were an interest, but not your initial choice of a career path. What did you want to do?
“I started out in college majoring in Chemical Engineering at Penn State. I had an opportunity during high school to intern for a summer at the Emulsion Polymers Institute at Lehigh University right next to where I grew up and the work I was exposed to in that field seemed interesting. By second semester of freshman year though, I saw what friends were doing in Computer Engineering classes and it seemed so much more enjoyable than the classes I had to take for Chemical Engineering. The work with logic seemed like so much fun and indeed I loved pretty much all of my classes. The requirements for Computer Engineering had a mix of computer hardware, computer science, and electrical engineering courses, so I had some programming but it still wasn’t my focus. I switched more into focusing on Computer Science toward the end of college and for graduate school, as while I loved the theory of Computer Engineering in the real world it seemed like it was basically going to be a more tedious form of programming and I might as well work with higher level languages. I got interested in Linguistics as well towards the end of college and ended up at the Language Technology Institute at Carnegie Mellon.”
Is Language Technology the study of computer languages or the classic languages as they relate to computers?
“It’s using a computer to translate between different natural languages, i.e. translating between English and French. I was focused on the machine translation side of things, but there were also people working on generating and recognizing speech. The program I was in was part of the Computer Science school.”
Wow, you had a fair amount of schooling. And your area of interest toward the end is pretty far from game development. How did you get your first job in the industry?
“So I had been originally planning on getting a PhD but I stopped after a year and a half of graduate school (and then took night classes later at the University of Washington and transferred them to finish my Masters). I realized during graduate school that research, at least Computer Science research, didn’t interest me nearly as much as building real products. It was actually a not very exciting sounding Software Engineering class involving building a website that made me realize this and start applying for jobs. At the time I was playing quite a bit of Magic: the Gathering including the online game and saw a job posting that I applied for. They were looking for 2 different positions at the time, a Senior Engineer to work on the new 3.0 version of the game and a Junior Engineer to work on the existing client and game rules engine. I ended up flying out to Seattle to interview and getting the job for the Junior Engineer position despite a pretty frazzling interview experience. It had been drilled into me in college to always wear a suit to an interview but I felt really out of place when everyone else was in jeans and a t-shirt. Also, I ended up being given a job application form I was still trying to fill out during a panel interview that ended up being scheduled to happen right before I needed to leave to catch my flight home.”
“I pretty much spend most of my day programming right now, as it’s a fairly small company with small teams. Lately I’ve had only 2 formal meetings or so a week, although I’ll message or go talk to people informally to discuss how things should work. That doesn’t necessarily mean I’ll spend all the time just writing code, there’s usually work involved in setting up the structure of assets and data files, running the game to test my changes, iterating and bug fixing. I’ll generally figure out the highest priority item at any given time, whether it’s a bug to fix or the next iterative step in a feature I’m working on and have some idea of what I want to accomplish in the day to feel like I’m on track.”
There is a fair amount to balance in your day. It seems like many things to keep organized. What sort of traits or skills are important to be a successful engineer?
“I really like using task tracking tools, basically whatever is available/everyone at the company is on board with (right now my company is using Asana) in order to have a list of everything I need to do in one place as much as possible and keep myself sane. Everyone is different and I’m sure there are people successful with other methods, but I think being able to stay organized and break tasks into something manageable is important. It is easy to get in over your head by trying to do a lot of work at once and then end up in a frustrating state where nothing builds at all. I usually try to split things up and iterate a step at a time so that I’m always working with something that runs and adding on to it. Also I try to find the right balance between spending time to get a good infrastructure that is easy to maintain and working quickly enough to meet deadlines and solve the problems at hand. Of course other technical skills are important too, having a good understanding of programming languages and problem solving abilities. However, organizational and communication skills are very helpful as well for being able to efficiently complete tasks and successfully ship a product.”
Incremental changes are key when making complex systems. Too many things interrelate and can be infuriating to debug later. How do you stay up on current trends? I imagine the programming space is constantly changing.
“It is, although I probably don’t actively do as much as I could to keep up with it. I have gone several times to industry conferences like GDC which are always inspirational and sometimes read programming books or take online classes to try to acquire new skills. Mostly though, I am constantly learning new things by solving the problems I need to at any given time in order to accomplish what I’m working on. Often that involves researching the specific aspects of the language or engine that are applicable at the time and I end up learning new skills. I am always learning new things from other engineers I work with as well and try to work on projects where I will have opportunities to grow in some way.”
Are there any tools or plugins you like to use in your everyday work? Something you can’t work without?
“Well not anything out of the ordinary really. Right now I’m making Unity games for iOS, so I use a Mac laptop and spend most of my time in Unity/MonoDevelop. I use XCode when I need to put a build on device or upload to the App Store and I use a combination of SourceTree and the command line to work with Git.”
“I’ve worked on a lot of projects and I don’t think there’s any time I can think of where I just executed a spec someone gave me and then we were done.”
What professional accomplishment are you most proud of?
“I would probably say some of my work at Breaktime Studios. I was the Lead Engineer on Dragon Skies and made a really cool racing mini game within it, with a pretty involved level editor I was really happy with. Also, while I was there I made a slots game which in itself wasn’t that exciting of a product, but the tech was really interesting. I took a C++ cross platform engine one of my coworkers had been working on and on a 7 week timeline made the first game that shipped using it and then flushed out the engine to truly be cross platform and shipped the game on Android as well.”
What’s the best development practice you’ve seen in action?
“Trying to think what you might mean by development practice.”
Well, it could be Scrum. It could be data structure in the code base.
“The first thing that comes to mind is that a data driven infrastructure where you can change game values on the fly is really great. Especially with mobile games where you’re dependent on a review process in order to make changes. We had at least a pretty good setup for that when I was at Breaktime Studios.”
Did you ever have a mentor sometime in your career?
“I don’t think I really did formally. When I first started at Wizards of the Coast, there was a Senior Engineer I worked really closely with who could have been considered one and I’m sure I’ve learned a lot generally from people I’ve worked with.”
Is there any particular lesson that you carry with you to every project?
“I think what I carry with me are a lot of little lessons as opposed to one big one. Perhaps a lot of it comes down to the idea that things are going to change. I’ve worked on a lot of projects and I don’t think there’s any time I can think of where I just executed a spec someone gave me and then we were done. There are always things that come up where something doesn’t feel quite right in practice, and iterations and tweaks are always needed, sometimes the game goes in a totally different direction than you thought. So I always want things to be as easy as possible to maintain and tweak (and ideally I want designers to easily be able to iterate and make those tweaks themselves so I don’t always have to go into the code and do it). But I also don’t want to spend too much time building up the perfectly engineered system. There are always deadlines and if things change it may no longer be a perfect system for the needs of the project or will potentially take a lot of work to keep it that way. Spending some effort to make things shareable or reusable in the future is good, but I tend to mostly do that by splitting out generic shared code for things I need to do anyway and not trying too hard to write unnecessary code for things that may or may not be needed later.”
Looking back, what would you say is your biggest misconception around game development?
“I think the amount of time that goes into making a game really shippable is something that took me a while to really process. When I was a kid I think I imagined games as being some really tedious thing to make because you need to keep track of everything and implement all the little details. Maybe it is in a way a lot of little details, but it came in a way that was surprising for me. I would implement the design of a game, feel like everything is in great shape and there can’t possibly be that much work left to ship it. Then what I thought was plenty of time would get filled with all the little things that would come up with putting in the real assets, flushing out all the UI positioning and animations, adding systems we hadn’t thought about yet such as tutorials and analytics, optimizing performance and fixing bugs. This bit me probably most noticeably in my second job. After Wizards of the Coast I was working at a small company called Cricket Moon Media using Flash for the first time. We did a lot of contract websites and games for companies like Disney. I think in my first 5 weeks on the job I shipped 5 games. I would keep getting games into a good place where I thought everything was in great shape on the programming side but it didn’t have all the art and final polish yet, think I was ready for more work and take on another project. It turns out there was a lot more work that would come up in tweaks and bug fixes than I expected. While I was successful in shipping them all on time, it was very stressful and required quite a few late nights.”
“I like to read, knit, play as many puzzle hunts and escape rooms as I can (http://puzzlehuntcalendar.com/), hike and play board games with friends. I play some video games, mostly for iOS and 3DS, but not as much as I should given the amount of amazing ones I still haven’t finished (like Fire Emblem: Awakening, Zelda: A Link Between Worlds, Paper Mario Sticker Star, and multiple Phoenix Wright and Professor Layton games).”
What advice would you give to someone trying to pursue a career at as software engineer in games?
“I think the best thing would be to make a game. It’s really great to have something to show when looking for a job and gives you more experience to feel comfortable with how a game is put together. Personally, I had been intimidated for a long time by the fact that I hadn’t made a game in my free time like other people had, even after I was already working professionally in the game industry. I never did when I was growing up I think largely because I thought I needed to have some epic idea for something nobody had ever done before, which I didn’t have. It wasn’t until I had been at Wizards of the Coast for a couple years that I realized I could have just made something that was already done before and that would have been a good learning experience.”
It’s not that strange. Sometimes you don’t think something is possible until you see someone else doing it. What do you think might have held you back? Was it just that you didn’t have a “great idea” to implement?
“I think a lot of it was. Partly, I liked doing other things with my time, like reading, when I was growing up. I did see other people who had made games in their free time, but instead of inspiring me it was more intimidating. Not because I didn’t think I could do it technically, that wasn’t something I really considered, I just didn’t have any idea what I could make and without some big idea I didn’t try. Instead, I had this perpetual feeling of being behind because in my head if I went into programming I would be up against all the guys who had so much experience. So I went into other types of engineering, and it’s partly why I went into Computer Engineering instead of Computer Science at first. I thought I would be on more even footing. (Although I did really love Computer Engineering as well).”
That thinking keeps many from starting. What is your take away from that period?
“That I really should not have been intimidated and that other people should not be either. I wasn’t ever as behind as I thought I was for not having done it and shouldn’t have ever let it stop me, and also it was always something I had the ability to do. Every time I was in a situation where I felt like I was behind for not having done things in my free time, such as in some classes in college, I ended up doing really well. In the end, I did make a game in my free time while I was at Wizards of the Coast, to have that experience. I bought a book about programming for the Game Boy Advance and a device that let me write roms to a cartridge and made a simple block game similar to ones I had enjoyed playing on my Palm Pilot. I realized then that it was not a big deal, that it was something I could totally do and wasn’t that difficult. I went on to a role at Wizards of the Coast where I was constantly prototyping games designers came up with. I felt perhaps a bit at a disadvantage there at first because other prototypers brought with them as starting points personal projects they had done. But, instead I found tools that let me get up and running quickly. I used XNA to be able to make games with low overhead. Probably in retrospect Flash would have been even better, but XNA worked well and was a good fit because I had been programming a lot in C# at the time, and I’ve now gone on to make quite a number of games (I’ve completely lost count of how many), often by myself or on small teams, in a variety of languages and for several different platforms.”
Would you suggest someone make a small game or a big game? I imagine, if you are by yourself, do something small and simple. If you work with other people you may be able to contribute to a larger project.
“I would say regardless, start with a small game. If you want to work on something bigger after or take something small and keep building onto it to make it bigger, that’s great. But start with something manageable, it will give you a better sense of the overall picture of how a game is made and the more you try to bite off at once the more likely it will be that you’ll get frustrated or not finish. Also, I would recommend not trying to reinvent the wheel and build an engine, at least not before you’ve made a game to really know what you want to do. There are a lot of great options out there. I’ve been working in Unity lately and enjoying it. Flash is pretty quick to get something running in, but it’s becoming less used and supported. I’ve been intrigued by SpriteKit as an option for iOS specific projects but haven’t actually worked with it yet. I’m sure there are plenty of other things I’m not thinking of as well. If you pick a platform or language you’re most excited about and make something you would like to play, it should be a good and helpful experience.”
If you could go back and do it again, what would you do differently?
“I really wish I had taken the Computer Graphics class offered in college. I had been interested in it but it was offered in the same semester as other classes I needed to take. I probably could have found a way to fit it in at some point if I had tried, but I had no idea at the time that I would end up working in games and didn’t give it high priority.”
“I wish I had a bit more fun in college and worried less about being really involved in organizations in order to have things to put on my resume. In the long run, I don’t think those really ended up mattering much and while I probably would have still done some of it I would have focused more on figuring out what I was actually enjoying.”
“There was a point after I had been working at Wizards of the Coast for a couple years that I applied for and was offered a job I didn’t end up taking, making DS games in New York and sometimes I wonder what my career would have been like if I had taken it. It would have put me on a totally different path of handheld console games, which I was really interested in, and still am. I don’t know that I would have done it differently though, things seem to have worked out well. I ended up fairly unintentionally aligned with some trends of the game industry. I switched to Flash programming because it seemed fun and different a bit before Flash games on Facebook took off, then got into mobile games because as a user that’s one of the things I like to play and the industry also moved in that direction. Now I’m working on an awesome augmented reality product and making educational games that I’m really excited about and still continuing to learn new things.”
Thanks Rachel! I enjoyed this talk.
“I enjoyed talking with you as well!”