Intern Role Profile - Gaming Software Development
Role: Software Development Engineer intern
University course: Artificial Intelligence & Computer Science– The University Of Sheffield
Ahoy, I’m Topher and I’m an SDE at Rare Ltd.! Rare’s the creative force behind games like Goldeneye, Banjo Kazooie and Viva Piñata, and I’m currently working on a new, unannounced project (sweet thing #1 about being a Microsoft intern: Being on the inside, seeing stuff that nobody else has yet!)
I work primarily with the Engine team, writing really tight, fast C++ code to run on Xbox One, but in my short time here so far (coming up to 6 months!) I’ve jumped from integrating audio middleware (so stuff sounds great), to investigating localisation (so können Sie in vielen Sprachen spielen), to writing scripts that speed up the workflow from “Editing an asset” to “See it in-game”.
Why do I love my role?
My computer. Not even kidding, we’re talking 8-core, 32GB RAM, top of the line graphics card, three 1080p monitors, and a 500Mbit internet connection. Microsoft want you to be working as best you can, so they really don’t skimp on the tech. Having an Xbox One dev kit to deploy my code straight to and test one makes things that much smoother too.
The Second great thing about the intern programme – you’re not “just an intern”. No running around making cups of tea for other employees, no sir – we have a machine for that. By taking “tea-making” out of the equation, you’re left with real work that has real effects on the company. They’ve hired you because they think you’ve got potential, and they want to make the most of that.
Third thing I love about working here at Rare? The atmosphere. Everyone is passionate and excited about our work, and strives to make it as high quality as possible. In the engineering teams at Rare, there’s no ego, only the code-base. You disagree with how someone implemented something? Go have an open discussion with them, and raise your points objectively – nobody holds onto their code as if it were a baby too fragile to defend itself. If a better way to solve a problem is raised, it will be picked.
Alongside this, everybody is really chilled and fun. People are always open for talking, grabbing a coffee, or playing a LAN game at lunch.
What I’ve learnt
I’ve learnt more than a prankster at clown college. University sets you up with the theory (What’s a set? Why is recursion awesome? How would I polymorphically update a list of objects derived from an abstract base class and then free their memory?) and then being at Rare shovels the practical applications on top.
One of the key things I’ve learnt is the importance of writing a specification! People are usually very averse to writing them, viewing them as some huge monolithic lump of text that nobody reads. This couldn’t be further from the truth. The spec gives us all a place to agree on how things are meant to work (what behaviours the system will exhibit) and then we can go off and find our own ways to physically implement it.
Coupled with this is the importance of automated testing – being able to verify that your updates haven’t broken any of the existing tested functionality in a few seconds really helps you feel safe that everything is working as expected.
Another core skill I’ve been working on recently is being self-critical, knowing how to look back at my work and process, and discover what I could have improved on. For example I’ve learnt that I hadn’t been asking key people important questions that could have saved me a few hours of investigation.
What opportunities are there?
Microsoft and Rare are very big on giving employees opportunities to grow and shine. Every fortnight at Rare, a different engineer will give a talk on something they know a lot about and want to share. There have been talks on programming for x64, cloud gaming, and I was even lucky enough to get to give a talk on graph databases. This was great fun, I got to exercise my presentation abilities, and I had some great discussion with senior engineers afterwards about something they’d not come across before.
Other, more infrequent events happen, such as the Game Jams, where we spend a week or two in teams building whatever game we want. In particular I loved a day long hacking session, where we were taught how to attack an example multiplayer game, and how to defend against these attacks.
I’ve also had the chance to go back to universities and talk about my experiences, and was even invited to talk at the Launch Gaming Conference! (Unfortunately, I was unable to attend L)
Application hints and tips
My biggest and most important piece of advice for anyone wanting an internship, whether at Microsoft or not, is: APPLY! Far too many of my friends failed to get placements because they either didn’t apply, or only half-heartedly applied to one or two places. Apply with all your heart and soul, and employers will see that.
When applying to somewhere like Microsoft, you have to realise you’re going to be up against thousands of other students. You will have to be the very best, literally in the top 1% of applicants to get through. This might sound daunting, and it should, but don’t let this put you off at all. The best applicants are the ones who will fight the odds, who’ll let their passion, skill and confidence really shine through.
If you want to stand out from the crowd, it’s critical you have a portfolio. It doesn’t have to be decked out with years of work that would make Jon Carmack cry with pride, but even having just one or two completed projects, with some documentation on how it works really sets you apart. Somewhere like GitHub, BitBucket, or even Dropbox links to source code are all great bets. Just make sure it’s easy to find on your CV or application!
Finally, don’t just take my word for it – read the many other blog posts from other interns who’ve loved their time at Microsoft, and see what they suggest for applications.