Code Reviews, Game Dev and C++ with Ólafur Waage

 
olafur.jpg
 

Introduce yourself! Who are you? Where do you work?

My name is Ólafur Waage, I am from Iceland where I grew up in a town next to the capital called Hafnarfjörður. Currently I am working as a programmer in Malmö, Sweden. At Massive Entertainment which is a Ubisoft Studio.

I have been there for the past 4 years now and I work on the Uplay team. Our primary focus is Ubisoft's PC Client Uplay. So we deal with programming the client, the services it connects to and any backend portals and tools that go into making a client at this scale work.

We also assist game teams with SDK's, tools, digital product and package management, consumables and even from time to time implement a feature in the client or services to help with their development.

I am mainly a C++ programmer, but I dabble in many languages.

 

Who or what got you into programming?

I never wanted to be a programmer. In Iceland, when you are 16 you either go to something similar to a high school in the USA until you are 19/20 or you go to a vocational school to learn a trade. Due to me being a very dorky personality, there was some heavy bullying, so I didn't want to go to the same school as the bullys. So I went to a vocational school a few of my friends were going to. I studied basic electrical engineering for two years and then started working for an electrician.

Studying it was very fun but the actual work was very boring, just laying cables. So I quit and started delivering pizzas and studying journalism at a school three towns over, still avoiding the main school path. Don't worry, this is Iceland, three towns over isn't that far.

When that was done I started working at a tech support call center for a phone company.

Here's the thing, during this entire time, I had always been programming a little bit. Being the dorky guy, I was very much into computers. And for age/year context, I was 16 in 1998, so the web was starting to bloom pretty heavily.

I never was a programmer in the hard core kind of sense, so I made websites for myself or for my Counter Strike clans in PHP. Copy pasting and modifying until it worked (sorta).

So after working at the call center for two years, a friend of mine told me that a company he knew were looking for guys like me. I applied, was called to come in the day after and was hired on the spot. (fyi, this is not always a good thing)

There I started my career as a programmer. I began messing a little bit with it in my spare time in 1998 but it wasn't until 2007 that I started programming full time. I later on went to University to get a degree in Computer Science.

 

I see you opened your DMs on twitter for code review? How has that gone?

As I said in the previous answer. I eventually studied Computer Science at a University. There I applied to be a Teacher's Assistant and basically was one for a couple of classes every single semester. I did it because I found that I really enjoyed teaching someone to program.

After I graduated and started working elsewhere, I missed teaching people but never did anything about it.

So when I started to use Twitter more and more, I saw that there was an opportunity here to reach out to people. So I decided last year to open my DM's to anyone starting their path in learning programming. That I would review any code they had and give them pointers.

Opening your DM like this has positives and negatives.

Let's start with the negatives so this question can at least end on a nice note.

Negatives:

Given enough of a following, you will get a lot of messages, and many of them are just bullshit. People posting memes, sending you porn etc. Thankfully that has subsided a bit.

On another negative note, a large majority of people who are legit asking for reviews, are people who already know a lot about programming. I have been given custom implementations of STL classes. I have been asked to give a security assessment of a safety critical bit of software. I have been given high level mathematics libraries and asked to find all the issues. Even though the tweet literally states "If you are learning to program and you have a snippet of code you want to get code reviewed? Then message me."

Thankfully when I explain this to people they have always been very nice about it and apologized. So hurray for that!

Positives:

I love love love when people message me when they haven't even started to learn. They have such a drive to learn that it's infectious, even through text. They ask about resources, pitfalls, etc. I usually point them to Khan Academy for the absolute basics, due to how visual those tutorials are. I think it's very important that you get visual feedback on what you are doing when programming.

For the others, those who have just started and have a code snippet, I did a collection of the most common mistakes I have seen and created a gallery of pictures describing them, which was pretty well received I felt.

 

What’s the programming scene like in Malmö, Sweden?

It's small but growing. Malmö is a small town so any scene is good. We have FooCafe Malmö which holds lectures and seminars very regularly. The scene is very large with mobile/web related companies.

I know the gaming related scene more than other tech companies in Malmö. Where we have Massive (The Division), Tarsier (Little Nightmares), Simogo (Year Walk), King is also here but I have no clue what they do in that office there!

We have The Game Assembly, a school focused on game design and programming and Malmö also hosts the Nordic Game conference every year.

 

Do you get the crunch periods working on the game platform like those working on the actual games?

Yes and no. Back when games mostly came out in the fall, we would try to have whatever features they needed (or we wanted to be out before a game was released) ready before then. So we wanted to have features out before October/November, which gave us the summer and early fall to develop them.

This is not the best strategy since people are on summer holiday and then you’re way too close to game releases while developing. So we would want to start before the summer or even if possible after the new year, to avoid crunch.

So we do get crunch periods even though we are a live product. But these are not crunches where you sit for hours after work for weeks on end. We’re very strict on not doing this and if something like that happens it’s a very serious thing that it did. Massive’s working culture is very against this.

 

What has been your toughest lesson to learn in your software career so far?

First thing I thought was how to deal with working with a team and all of that, but I feel that's a thing every industry has a problem with.

So what I will say that having to deal with understanding a lot of code. Not only what it does, what are its effects but also then look how this code interacts with other systems and then try to find out how you can make it better. Not only in performance optimization, but also looking at the design with hindsight as a weapon and simplify.

This is very difficult and something I think I will never be really good at, but I'm getting better with the years.

 

What would be your number one piece of advice for a successful software career?

This one is really simple.

Do not take your work home or work long overtime hours for an extended period. You will go insane.

And, if you are working where you have to do this to get projects done, then you will not survive in this industry for long. You are being treated as a tool to produce code and not as a valuable part of the company you work for.

 

Have you got any hobbies outside of your job? Do you think they help your tech career in any way?

I have a few hobbies that I rotate in and out of, depending on the mood I am in that season. And yes they definitely help my tech career, by either being directly programming related or something that stimulates my brain and keeps me sharp.

I have dabbled in lockpicking, physical puzzles (like wooden puzzles) and I love listening to any kind of Non-Fiction audio books.

 

What books/resources would you recommend?

For programming I love reading most of the C++ blogs and watching the lovely content some of them make. Links are in the shoutout section.

For non-fiction books, my must read suggestions are:

Mastery by Robert Greene

Mistakes Were Made (But Not By Me) by Carol Tavris and Elliot Aronson

Outliers by Malcom Gladwell

and

How to Win Friends & Influence People by Dale Carnegie

 

Finally, make your shoutout! What would you like the readers to go have a look at?

For you C++ Nerds out there. Check out ANY conference talk by Sean Parent and Chandler Carruth, no matter the video quality. These things are amazing.

Here are two to get you started:

CppCon 2015: Sean Parent "Better Code: Data Structures"

CppCon 2015: Chandler Carruth "Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!"

Also look at C++ Weekly by Jason Turner, dude keeps churning out content.

And if you are on twitter and not following these people, then you are missing out. (In no particular order)

Probably more, I'm sorry.