I recently was asked to write a blog post about my job at nDreams, where I'm currently a Senior Programmer.
I was asked to not go too deep into the nitty gritty and keep it accessible for people not in the industry already, so it's not as technical as I would have liked, but I'm pretty happy with it.
I'm pleased that nDreams encouraged and let me discuss a few negative aspects of the Games Industry. Specifically I raised a constant frustration of projects being scrapped mid-development, which is very common. It's not something that I think can or should be resolved, as the reasons for cancelling a project are usually very sensible. However, I think a lot of people not in the industry may not understand how frequent an occurrence it is.
I also wanted to touch upon working overtime in the Games Industry. I know people from other studios who have been completely burnt out and left the industry because of a culture to work regular nights and weekends. While it is guaranteed to be needed at some point in any multi-year project, any regular demand is a failing of the Production team and team leaders for planning the project to demand it and for allowing the culture where it is expected. I am very happy that at nDreams it is very rare to want overtime from people, but I know many other developers are not so lucky.
Since the article was published, I've had a few discussions over one point I made regarding Coder advice where I said you should get a Computer Science education. This is just my advice, and to be a programmer in the Games Industry I don't believe you need a degree in Computer Science, nor do I believe you need a Computer Science degree to be a fantastic programmer in the Games Industry. But while you may start in the industry planning to be here the rest of your life, there is a pretty good chance you'll want to do something else one day, and having that education will let you have a few more options in a semi-familiar field.
I also got to dig into my screenshots folder and find some interesting images I had kept over the years. Most of the ones I've kept are hilarious animation bugs or for projects that sadly I couldn't use, but there were a bunch of The Assembly ones which at least look complex and interesting!
The article is here to read on the nDreams.com website:
However, I'm also reproducing it here for archival purposes.
What do you do?
I’m a Senior Programmer at nDreams, which means I’m often doing a lot of different things! Generally though, I write code to make our games work in the way our Game Designers and Game Director wishes the game to behave. Everything in the game requires code for it to appear in the game, whether it is how something is rendered on screen, how you interact with an item in the world, how you hear a sound, or event determining what a bullet can hit as it travels through the environment.
When I’m not writing code, I’m sorting out future work by estimating how long we think each feature will take to finish. I spend a fair chunk of my time discussing with producers and managers about how to plan our work for current projects and helping to organise this with the team, so everybody knows what they’re working on.
How do you fit into nDreams?
I report to the Technical Director, who organises the code department. When I’m on a project, I will lead and assist the code team, making sure everybody is able to do their work to the best of their ability. I also work with the project producers and director to plan work for the code team and ensure we’re delivering everything they need.
What kind of skills and experience do you need to be effective in your role?
People skills and the ability to be self-motivated are important to being effective as a programmer in game dev. We work together as a team, so being able to communicate is vital so that we can share knowledge and build our codebase together.
I favour collaboration skills and strong general knowledge of programming practices over mastering a specific game engine or technology. You never really know which game engine you’ll be using next and being able to work with any codebase you are given is a valuable skill.
Tell us about a typical working day
I’ll get to my desk and check my emails to see if anything needs my immediate attention. Hopefully nothing went wrong overnight, and I can get cracking with work! Sometimes though, whatever plan I had immediately goes out the window and I’ll need to jump onto some emergency bug fixing to get the game running again.
Once the whole team are in, we all have a stand-up meeting, where everyone on the team will stand around a whiteboard and discuss how their work is going. I can use this meeting to quickly raise any concerns or get some information about how other departments are doing, as I might want to know when to expect art to be ready for a specific feature.
The rest of the day I’ll usually get stuck in to whatever I’m currently working on - hopefully without too many meetings to distract me!
What about an un-typical day recently?
I was recently featured on a list of GamesIndustry’s “100 Rising Stars” which allowed me to attend a drinks event at EGX Rezzed in London with the other 99 nominees on the list! I had a little time before the event so got to mingle around Rezzed first, checking out all the brilliant games, which was great fun. Hanging out with other developers is always a blast too.
What do you love about your job?
I love the constant challenges each video game provides; every project is different and requires learning something new or applying your knowledge in a new way.
I also believe the people in the games industry are genuinely some of the most brilliant people you could meet. I look forward to the occasional opportunity to attend industry events, as mingling with other developers is always a pleasure. Pretty much everybody in the industry is here because they love video games. I don’t think you will find any other industry with this much passion for their work.
What areas do you enjoy less?
I think a lot of people who aren’t in the games industry don’t realise how many projects never see the light of day. For every released game, there are probably 10 prototypes, or half-finished games which for whatever reason just couldn’t be finished and released. Every one of these is invaluable learning, but it can be hard to put all your energy into something you really care about it, for it to never be finished. When a game does finally come out though, and you can see what you have contributed to make it happen, it’s a proud moment and totally worth it.
How did you get started in the industry? Why did you join nDreams?
I’ve always had a desire to work in the games industry. Years ago, I ran a fan-site for the virtual world PlayStation Home on the PlayStation 3, which allowed me to blag a free media pass to E3 a couple years in a row. I met loads of game developers, got to mingle at industry parties, and enjoyed myself so much I knew I had to get into the industry somehow. My fan site got me in contact with nDreams, who were making content for PlayStation Home at the time. I met up with (my now boss) Patrick and hinted that I wanted to work in video games – and a while later, I was invited over for an interview!
Why specifically nDreams? I love working for a company this size, we straddle the line between indie and AAA, which I feel is the perfect size to work my best without getting lost in a large organisation. We’re small enough that everybody’s voice can be heard, but large enough that we produce some seriously fantastic content.
Do you have any advice for aspiring Coders?
I always recommend the same two things for future game-dev programmers:
- Make games
- Learn Computer Science
I think the first point is valid no matter what you’re applying to do in the games industry. If you are making games (solo, with friends, in a game jam – doesn’t matter), it shows that you have self-motivation and passion for video games. The experience of working with others to make a finished thing is super important, and the skills you would have picked up from making a game (no matter how small or janky) will be of great help to you in larger game development teams.
It’s important you have a good understanding of how computers work, which is why I’d recommend getting some education in Computer Science. Games often have huge amounts of code, so understanding common programming styles and techniques will help you getting stuck in and will make sure you can contribute to building clean and tidy codebases.
A general Computer Science degree is also a good idea for general career comfort. The games industry can wear a lot of people out (especially if you work at large AAA companies, or anywhere with regular expectations of working overtime), so having a solid education to fall back on to get work in other industries should make life easier if you ever need a break.