Hello Filamentarians! For today’s blog, we went behind the scenes to find out what a day in the life of a game engineer at Filament Games is like. We interviewed Senior Game Engineer Allison Salmon about her career in both educational game development and at AAA studios, her role and responsibilities, and much more! Discover what advice Allison has for aspiring game engineers by checking out the interview below, and then head over to our careers page for our current list of job openings!
Introduce yourself! How did you get into software engineering?
I’m Allison Salmon, a senior game engineer at Filament. I’ve been working in the game industry for about 19 years now. I have a degree in computer science from UW Madison, so I intentionally went to school for computer science. I knew I was going into programming one way or another!
My first job out of school was actually doing special effects software, so not in the video game industry. But once that startup ran out of money to pay me, I applied for a job at Activision and got my start in video games. I was in the AAA space, but since then I’ve worked for all sorts of companies of different shapes and sizes.
This is actually the second time I’ve worked on educational games. The first time was for a group at UW Madison, and that’s how I got introduced to the educational games space. Some of the professors I worked with were the ones with whom the Filament founders took classes, and so that got me connected to Filament folks from then on. Filament was a company I was interested in working for a while, and about two and a half years ago, it worked out that I was looking for a job and Filament was looking for more engineers.
What is your role at Filament?
My role at Filament has shifted since I first started. Originally when I came on, it was a more typical software engineering role but as Filament has grown rapidly over the last couple of years, we’ve realized that senior engineers need to take on more leadership roles.
But because our projects are not very big, it’s not like I’m a lead on one project. I’m now leading on several projects with junior engineers who I help shepherd along on those projects. Senior engineer is kind of a floating position. Now, I’m also programming on some projects, but the eventual next step, once I finish programming on those projects, is that I’ll take a lead role across many projects. I won’t necessarily be writing as much code day to day, but I will be helping all of the junior engineers in my “pod.” I’ll help out with writing code, negotiating features, figuring out timelines and schedules, talking with other departments, and removing any roadblocks.
So I’m taking on more of a leadership role, and it’s a role I’ve played in other companies as well in the past. It’s exciting to be doing it again at Filament. I really like working with young engineers and helping them to grow in their career and their skills.
What does a typical day look like for you?
It’s a lot of multitasking! I’m typically in a lot of meetings, depending on the phase that each project is in. Generally, I’m going to be in more meetings at the start of a project, helping to figure out the architecture, helping to figure out the overall schedule of the project. I’m in meetings less while projects are in the middle of production, and then there’ll usually be another spike of them at the end. I’ll be back in meetings trying to help troubleshoot different issues that have come up, for example, “there’s this really weird problem coming up on this specific platform.” I’m helping with kinds of issues that junior engineers have not experienced yet. So, my typical day is split across meetings and projects. At this point, I’m still doing a bit of coding as well.
What sort of leadership responsibilities are involved with being a senior game engineer?
For example, recently, the engineering department had a couple of projects where the junior engineers were going to need to make RESTful API calls from Unity, as a form of networking. So I created a presentation that I then shared with a bunch of junior engineers about how to do that from Unity. We talked about the underlying network, how networks work, and what plugins we use in Unity. We also talked about best practices for designing your subsystem to communicate with the website backend and other things like that. That’s just one example of where I might actually write a lecture, give a lecture, or host some sort of conference talk.
How does your experience at Filament compare with your experience at AAA studios?
In AAA studios, you typically have a very specific niche. When I was working at a AAA studio, my specialty was technical certification for console deployment. I was really well versed in what requirements we needed in order to ship on Xbox or Playstation. I was responsible for making sure that our games complied with those requirements.
For a while, my specialty was network programming, more specifically multiplayer network programming. And so, at a AAA studio, that is the only thing I did when working on the games. It was always a little bit depressing in the sense that family and friends might ask “What did you do on this game?” And I’d be able to say, “See how it’s not crashing when you pull the network cable or save card out? That’s what I did.”
My work at a AAA studio was very niche and here at Filament, we have multiple projects running at one time, and we don’t really know day-to-day what’s going to come through the door in terms of clients, or what they might be asking for. There’s a lot of room to learn new technology, and to try and solve problems in unique ways. We can be working on anything from early learning apps for two to four-year-olds to medical apps for patients with traumatic brain injuries. There’s a huge range of things to work on here, and there’s more creativity involved. We do still keep design separate from engineering, but there’s still plenty of creative problem-solving to be done.
What sorts of projects are you working on right now?
I’d say the most recent example is a game that we’re finishing up with iCivics called People’s Pie, which is actually back by popular demand! One of the junior engineers in my “pod” was working on the code for that game and all I had to do was check in on her and make sure everything was going smoothly. You can see a brief teaser preview about People’s Pie on the iCivics website.
What advice would you give to an aspiring game engineer?
If you’re really looking to go into game engineering, like software engineering, I definitely would say that the fundamentals of computer science, in particular, object-oriented programming methodology is a solid foundation for learning how to write code that is reusable, extendable, modifiable, and easily debugged. For the last year, as a night job, I’ve been a remote instructor at the University of California – Irvine. What I teach is a three-course series in game programming, and that’s what we base it on.
When we do projects in Unity, we’re using those fundamentals of object-oriented programming, the four pillars of object-oriented programming in the SOLID methodology. Maybe that’s a boring answer, cause when people think of games, they think of fun, but I really believe that whether you’re writing a game or tax software, those fundamental principles of organizing your code are so important.
When it comes to engineering educational video games specifically, as opposed to commercial games, you are not just trying to make the game entertaining but also trying to fulfill educational goals informed by experts. It takes some skill and understanding and interpreting to know exactly what our clients are looking to get out of a game and what they want to teach through the game.
That’s really a skill separate from engineering, it’s more communication. Communication skills and understanding of specifications and pedagogical methodologies. So if you’re looking for a career in education games, it’s useful to have some background in education and theory of education, the idea of how things are taught. I was lucky that I did pick up some of that while I was working for my group at UW-Madison. I worked closely with students there and took a few classes there myself.
One of the most frequent questions I get is “how do I get into the game industry?” My advice for those wondering is that we are still an industry that wants to see the things you’ve made. No matter what you’d like to do in the game industry, whether that’s an engineer, artist, designer, whatever, have a portfolio going into your interviews.
You can start your portfolio as a student. There are almost certainly other people around you who want to make games. Sometimes the best way to make games is to just find those other people and make something together. We’re living in a really good time for accessibility of information, and game engines like Unity and Unreal are free to use so long as you’re not selling your game for any money. They have these big communities online where you can get information about how to use those tools.
It also takes a lot of self-discipline to go out and seek knowledge in areas that are not conventionally taught. There are so many skills in the game industry that are better learned through a tradesperson or apprenticeship-type model. I actually wonder if the game industry would do better with more apprenticeship learning instead of all formal education. So many things can be learned best with hands-on experience.
Stay tuned for more behind-the-scenes content from us this month on the blog. Keep up with us on Facebook, Twitter, and LinkedIn – and don’t forget to check out our current job openings!
More on engineering careers at Filament: