My Financial Story – Chapter 5 – Dream Job Number 2: Videogame Development

This is the fifth chapter in my financial story series. In the previous chapter I tried to help robots conquer the world. Here I’ll show you how the funniest job in the world actually sucks. In next chapter I’ll go alone and conquer the world.

I’ve split this chapter in several pages to keep them shorter than the total 5000 words I ended up writing. At the end of the page you’ll find links to other pages.

Note: I have stolen copied been inspired by “the job experience” post series by livingafi. I loved reading his series and I’m trying to do something similar here, where I analyse both my work and finance history/goals.

I relocated to Milan in July 2007 with my former girlfriend. First task: find a suitable flat. Rents in Milan were expensive and my salary borderline. I did some research in May and June and picked 2 towns in the hinterland that were both well connected and very cheap. Acceptable range: between 400 and 600 Euro per month. In Milan you have to be lucky to get a non-shared room for that amount. In June I went couchsurfing in Milan to visit the apartments. I tried to avoid those handled by renting agencies due to extra costs and went visiting apartments rented directly by landlords. The rent market in Milan is not as aggressive as I’ve seen in other European metropolis, especially in the suburbs and the hinterland. You usually visit the flat, take your time, eventually negotiate the price and in the end it’s your decision (given that you can afford the flat and have a job proposal).

The visits were depressing. All the flats in the price range were crappy and far from train stations. The only one that looked somehow ok was a spacious 3 rooms apartment priced 400 per month but with a lot of infrastructure problems and far enough from the train station. I was going to take it when the landlord mentioned +200 Euro per month as condominium fees. I walked away.

I kinda wasted two entire days and still didn’t know how to proceed. If I had to spend way more for renting, what would I bring home at the end of the month? Would my monthly expenses be less than my paycheck? I need to be able to answer this question with a “hell yeah!”, else I have no choice but decline the job offer.

There was only one apartment left in my list, slightly out of range (700 Euro per month) but with extra expenses included, like heating and condo fees. It was close – walking distance – to the green line of Milan Metro and it was recently refurnished and painted. 2 rooms, 60 square meters. I liked it at first sight and blocked it.

Half of my salary for rent, it took me a while to accept it. Setting money for rent aside, each month I’d take home less than the PhD salary I was escaping from. Plus, my girlfriend relocated with me and she had no job. We would be living on my salary alone until she finds a job – which she never did.

moderncppI started working as a R&D engineer in GameCompany on July 1st 2007. R&D is the team responsible for building the game engine and the production tools. In this team I joined half a dozen superlative teammates. We were spending days discussing latest shading techniques, GPGPU, PS3 and XBox360 libraries, design patterns and good C++ coding practices. I was ecstatic! That magic room was full of Sutter, Meyers and Alexandrescu books, both in the shelves and in the air. I felt part of the elected guys who will build next-gen game engine for our future games, while a horde of “normal coders” in our building were developing today’s games. Rumor of a hellish life in neighboring rooms spread in the first weeks of my heavenly experience.

I had a chat with Charon, who worked in the game rendering team and started showing first stress signals: “well, RIP, I can’t actually tell if I really really like what I’m doing… what I know is that I’m working a lot. Saturdays, Sundays,… I never leave the office before 8pm… I’ve been here till 11pm last Wednesday for a very hard-to-reproduce bug. Game1 must go under submission in 2 weeks and we’re so behind, we are fixing less bugs than the amount of new ones that are being opened these days. Game2 has still 3 months of development scheduled but we didn’t even start, it will be a true hell.” Poor Charon, he was so enthusiast a couple of months ago!

logoLet’s quickly explain what is a submission (aka “the sub“): A videogame published for the main consoles (Playstations, XBoxs, Wiis,…) must pass a series of tests performed by the console manufacturers (Sony, Microsoft, Nintendo,…). This process is called “submission“. When you think your game is ready, you “go under sub” and if the game passes, then you have to publish it as it is (no further changes are allowed). If the game doesn’t pass the sub, you need to try again after a month at least (it depends on the manufacturer’s feedback). Another sub is necessary for each DLC, Patch, etc. The sub process is painful and very strange. They are interested in everything but the gameplay.

[Fun Story Once they discovered an hilarious bug on one of our games: a vehicle was riding clearly outside the designed track. They didn’t reported this problem as: “hey guys, a motorbike had been teleported within the walls of a building, and it can’t move and the game is flickering and behaving crazily“. No, they blocked the game because having the camera in that point of the game world made a t-shirt of an NPC (in a supposedly far-from-view crowd) with a copyrighted logo visible with sufficient details…]

Life outside the lucky island of R&D seemed horrible. Arrays of game testers, Q.A., that on their first day they couldn’t believe they were “paid to play games all the time” while after 2 months you can spot them at the coffee machine crying “I was told to repeat the same boring maneuver on all the 20 game levels once per each of the 30 characters and log the visible glitches… I don’t want to live on this planet anymore!

But on the island? Time for experiments, no weekends, no extra hours, very smart people around me. Anyway, I couldn’t be fully relaxed: I was the weakest one on the island (mostly due to lack of rendering experience and company related knowledge) and the smell the rotten world outside the magic door scared me.

gpg1One day, the malevolent dictator of the company, that we’ll call Shittone, approached me: “RIP, we are in the big shit, the real big shit. We are behind schedule and we don’t need all these people on our next-gen game engine. I have these options for you: 1) Menu/2D UI (that’s shit of the worst quality, a framework written by a mad man based on a Finite State Machine article seen on Game Programming Gems 1 that wasn’t designed to scale on a supposed AAA game), 2) ingame rendering, cause we are behind (that’s not super shitty, I’ll be working with Charon. Things break everyday and you can’t even fix all of them, in the meantime new higher priority issues appears). Which one do you want to pick?

I: “Well, Shittone, I’m having fun working on our tools, game editor, game engine,… I was hired to be part of R&D and I would like to work on some longsighted project. I don’t think I’ll be productive quickly – as you need – on none of your projects. We all know I’m not good with emergencies and bugfixes while I’m better with infrastructure and design.

Shittone: “We need to fix this. We can’t guarantee you’ll be working on ‘nice coding’ forever. You need to get dirty and learn how to quickly fix broken things because we are in the big shit.

I: “It’s not that I simply like ‘nice coding’. It’s more that as you can see we are in a urge and need 10 engineers ASAP on UI because we designed it poorly 5 years ago. I want to be the one who’ll make you save resources by improving the design of things.

Shittone: “Uhm, mumble, uhm… actually we need to implement the multiplayer version of game2 and the framework that we’re going to use for essentially all the games for now on. All from scratch. There’s a lot of design required. It will be a team of 5 in the grey area between ‘game’ and ‘R&D’. That’s the best I can offer, since we are in the big shit.

I: “Ok, it sounds fun!

I knew it was my first step out of the magic island and I may had never crossed that door again, but it was a matter of time. I didn’t have rendering skills and being a good system engineer wasn’t enough to keep me into R&D. I wrote threading systems, memory management libraries, texture streaming systems, new STL-like containers,… but that was not enough.