Harry Rose, provides his programming expertise to Unity Technologies. Unity is one of the world's leading game engines and provides a platform for the majority of virtual and augmented experiences. We asked Harry, some key questions about getting into the games sector.

Explain your role like I'm 5 years old

In order to make a cake you need the right tools and ingredients, the ingredients are what makes the cake taste good but without the right tools (a whisk, an oven etc) you wouldn't be able to bring it all together.

If games were a cake then my role is helping to provide game developers with the right tools. They use their own ingredients, their game design, their art and their code. But use the tool that I work on to brings it all together into the final product.

Take us through your average day at work

My average day at the moment starts with a morning standup meeting with those in my team. We discuss what we did yesterday, how it went, any issues we encountered etc and what our plan is for today.

After that my day is normally a mix of coding and further meetings. Currently I'm working on a service which helps other programmers within Unity test their code against other teams that depend on it. For a service like that we breakdown the features we want into milestones and tasks, so my goal for the day is to make sure I'm contributing to us getting closer to our current milestone.

The actual work is quite flexible and I feel I have a lot creativity in what I do and the way I solve problems.

What was your educational and career journey into your current role?

My educational experience was actually quite an interesting one, I absolutely hated school and didn't do very well at all. I ended up only getting 5 GCSEs and failed by first year of A Levels. After I got the results for my AS Levels, I got in contact with with the university I was hoping to do my BSc with and explained my situation, they ended up letting me start that September with no A-Levels.

I feel incredibly lucky that they gave me that chance as it was during my BSc that I really discovered my passion for learning, it was the first time in my life that I'd chosen what I wanted to learn rather than it being decided for me. It was a two year year BSc at SAE London, which was quite intense as we had to make up for the missing year.

After my undergrad I went onto complete a single year MSc at Birmingham City university called "Gamer Camp". Initially I wasn't planning on further education, but what I really liked about Gamer Camp course was the simulated studio environment they had. I got to work with artists, producers and other programmers on game projects for PC, iPad and PS4.

Towards the end of the course, a company called Feral Interactive (who focus on bringing AAA games to various platforms such as Mac and Linux) came to interview all the programmers. I was really interested in working with them and after completing the interviews I lucky enough to be offered a job a few months before the end of my masters. 

I worked at Feral for nearly 1.5 years before the opportunity arose to join a small independent studio run by a friend called Semaeopus. There I worked on the upcoming stealth hacking game Off Grid for just under two years. After Off Grid I joined Unity which is where I've currently worked nearly 2.5 years

What is the most rewarding thing about your role

I love the technical challenges, I'm constantly learning which keeps things interesting and I also feel like I'm in the right place to make a real difference with what it do. It's so inspiring seeing what people make with the tools I work on!

What other roles do you work with the most

I mostly work closely with other technical roles, programmers like myself as well as product management teams that help the make sure we're approaching the project in the right way and communicating with the right teams.

What's the most challenging thing about your role?

Whilst I love constantly learning new things it definitely adds pressure at times, I recently started a new role in which I'm a significant contributor to a new project, for the project I'm having to learn as I go which definitely adds challenges. I wouldn't trade it for the world though!

What software or digital tools do you use the most?

For coding I use Rider, XCode and Visual studio Code and I'm of course using Unity too. We store our code in either git or mercurial depending on the project (It's mostly all git now). Within the company we use Slack for communication and Jira/Favro for planning and tracking our projects.

What are the key skills needed for you to work on to do your role?

Programming skills are a key part of my role, I'd personally recommend a nice mix of C++ and C#. I think it's also important to learn a lighter scripting language too (my go to is Python). Another required skill is problem solving, and critical thinking. Being able to breakdown a problem into smaller manageable components is invaluable. It's also a skill that's completely separate from any specific programming language.

 Communication skills are also important, working on any large project requires a lot of collaboration and coordination. You'll need to be able to make sure you understand what's being asked of you as well as being able to discuss when problems occur

What advice would you give to your younger self looking to get started in the industry?

It's ok not to know everything, you never will. You will however, get better at the process of learning. 

Maths is a large part of games programming, but it's different to maths in school as you're learning something that's directly applicable in a very interactive way. Like making a character move in a certain direction or making an enemy orbit a character, I found that made the learning process much more bearable as someone who didn't enjoy maths at school at all.

Do you have any links to good articles or videos that you think might give some tips or advice to someone starting in your role?

I can't recommend Game Programming Patterns enough. It's a brilliant book that covers a wide variety of game programming topics.

Gaming Programming Patterns

Game Engine Architecture is also a fantastic deep dive into all the various components that make up a modern Game Engine from a lead programmer at Naughty Dog.

Game Engine Architecture