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.

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.

tsgSome background here: our company developed – and kind of self publish, since the publishing company and GameCompany were owned by the same 80yo guy – several games of the same kind. Essentially they were the same game with cosmetic changes. We’ll call them TSG(n).

I accepted the transition to the Networking team and actually liked it. We were not under pressure at first: the production team was focusing on TSG(1), for which multiplayer was not planned, while we were focusing on TSG(2), which was going to be delayed by few months. The tech lead of the networking team was a very solid developer with a lot of experience. Team members were pleasant people and we were in the same room with 2D Artists which were funny and crazy. Lunch breaks were spent playing some lan game in 10-15 people and making fun of each other. Amazing!

We built the Networking infrastructure for PC, XBox360 and PS3, plus the implementation for TSG(2). It was a 6 months project and only the very last month was painful, with extra time and a couple of Saturdays.

Fun Story: Game designers in GameCompany were generally frustrated guys. In a normal game company a game designer is the one responsible for the game content: how levels are built, which features should the game implement and how. They lay down ideas and make the game fun and entertaining. But when you essentially develop the same game over and over… there’s little to design! Anyway, there’s usually a negotiation(fight) phase between production and design since designers want to see the game with all the cool features they designed, while production wants the game out ASAP at the price of cutting features. The game designer for TSG(2) responsible for the multiplayer game was particularly frustrated since most of the innovative features had been cut out. But I liked one of them: having in-game audio chat between players. It was a late evening and I and Charon stayed longer hours in the office. We were playing the multiplayer game for fun – I mean making fun of the game itself, no way we had fun playing our games – trying crazy unplanned things. A lot of bugs. When you see a bug few days before the submission what do you do? Log it? Naaaah just pretend you never saw what you actually saw. Charon: “RIP, this game sucks. Just like TSG(1), TSG(0), TSG(-1),… multiplayer is cool though. Good job guys! But… I don’t know, it would be way better if you could talk to others while playingI: “well, I know. There’s the mistreated designer who’s really pissed off by having this feature cut. But XBox specs says that you must assume 3rd world internet connection of 56kbit/sec. We are using all the bandwidth to send game data around. We support 8 players and we send 300 bytes each other player 10 times per second… wait, we may be able to cut this and that and that… and there’s no need to send all the data to every other player 10 times per second… and we can send diffs instead of full states… Challenge Accepted!

Two characters communicating using tin phone.I spent a couple of evenings in the office cutting bytes till I compressed the data to 30-35 bytes and implemented logic to send data only whenever necessary.

I added ingame voice support up to 4 players speaking simultaneously, all alone. This happened in less than a week of my own extra time. I did it just because I felt passionate. I added a feature that has been cut, for free. I was so proud. I submitted the code and went home on Friday late evening happy. On Monday I saw the poor designer crying with happiness:RIP you’re amazing I love you!!! I was speechless this morning when I played the game… in game voice! Thank you thank you thank you!!” I was proud. So proud. Then Shittone came:RIP, what did you do? Why you did it? Do you know what it means? We are close to the submission and we are in the big shit. We don’t have time to test the feature. Now we think how to address it. You do it again and you’re fired.” I was astonished. First time in I-don-t-know-how-many years that I’m working with passion and… that’s how it’s considered by the company?

Since that moment I’ve been marked as irresponsible and uncontrollable. I had received a couple of spot bonuses during the first year and a good raise (from 24.5k to 28.5k Euro gross per year), but after that episode I received no more. No bonuses, no raises, no promotions, no taking part on any decisional meeting.

samegameTSG(2) was published with in game audio, a feature we continued working on. We added support for 12 players in TSG(3) and switching to pure p2p we reached 16 players in TSG(4) and added new multiplayer game modes. At that point the Networking was needed no more.

While in the networking team I kept spending time with the R&D guys, strengthening connections, discussing about the upcoming C++11 standard, sharing thoughts about systems and design… I worked few extra time hours per week to keep a foot in that shoe, fixing small issues and volunteering for minor features that they had no time to work on. All this in the hope to come back to the magic room. In the meantime few brilliant engineers left the magic room to explore the world outside: Sony, Electronics Arts, Rockstar North,… new brilliant engineer came, staffed directly in R&D. No way I’ll ever be pulled out from the waiting list. Newcomers were having precedence. Hope is the last to die. Death that happened in early spring 2009.

Networking team had to be dismantled. Features were in maintenance mode, with none allocated full time on them. At that time TSG(5) was late for the submission and I was not even asked what I would like to work on: “We are in the big shit, we need you in the menu rendering for TSG(5)“. No more R&D. No more half game half R&D. No more software engineer, I was now a code monkey. I asked a quick meeting with the 3 seniors left in R&D: the boss, which I’ll call Newton (very strong physician), God – the best developer ever met (too shy to conquer the world) he really knows everything and he wrote the PS3 engine alone – and Stroustrup, one of the strongest rendering engineers with a deep knowledge of the whole C++ standard, the most complete engineer I’ve ever worked with. The R&D triumvirate seemed sorry for me, they’d wanted me but production – i.e. Shittone – didn’t want to allocate more resources on the game engine. Rumors started circulating that we may give up maintaining in house game engine and buy a commercial one, like Unreal Engine. They were not safe too.

My experience with Menu rendering lasted for a month, during which my main focus was sending résumé to better game companies all around the world. I was not motivated and not productive. The best thing I did was a refactoring of a string framework for localization and i18n. Not that many bugs fixed. I’m not good with that. Fixing bugs quickly means exploiting every day several resign patterns. CommandoProtoTry and Detonator were the most popular. Encapsulation, type safety and all good coding principles raped on the altar of meeting the deadline. Cause we are in the big shit. Always.

wolfAfter a depressing month, Charon – who had become the head of in game 3D rendering (he’s now a lead while I’m a soulless, and he joined the company no more than a couple of months before me) – asked:Hey RIP, I know you’re getting depressed working with menus. I believe you! Who wouldn’t? Btw, we are in shortage of resources and have a lot of bugs. It’s not super fun, but it’s waaay better than that shit. At least you have daily interactions with R&D and 3D artists. We are responsible for the rendering pipeline of TSG(whatever), when the dust will settle after the sub, we need a full redesign of the rendering priority queues and you’re the best person here – the only one with good design skills. Let’s just keep up for a while with bugfixes and wait for the (big) shit to leave the fan

It made me feel valued. Within slightly less than 2 years I moved from R&D to begging to talk to R&D. I’ll report to Charon, which I helped writing his master thesis, which I helped passing the GameCompany C++ interview, which never read a code design book… but this was a slight local improvement with respect menus, so I accepted. Shittone seemed ok. I like Charon. He was clear that our relationship would never be boss/minion but we’d be like peers. Obviously he knew more stuff in the codebase he wrote. I had to ask his help a lot but that was ok. What wasn’t ok is the fact that in in-game 3D rendering you forget what your real life is.

workWhen as a kid I used to play videogames a lot, I dreamed about meeting actual developers and worship them. Bowing and waiting for their permission to exist. I considered them Semigods. I deeply played dozens of videogames for tons of hours and I’ve never met a single developer. Where were they? There should be a Fermi Paradox for them too! Now I know the answer: they were working 24/7 like robots to meet their deadline, probably hating the game they were working on.

Game 3D Rendering team was about being a customer of the game engine, built behind the magic door, and a client of the 3D artists who want their model rendered in the game. This was the “job description”, made simple, when far from deadlines. Before deadline it’s more “you wake up, open the bug tracker and see 150 new bugs. Most of them were feature requests, logged as bugs by Q.A. You read ‘Trees not rendered correctly’ and you have discovered we want trees in game. Then you go to artists and ask where are trees models and you discover they are submitted but the data manager didn’t build yesterday’s models so you go to him but in the meantime one of the game leads come with a more urgent issue: ‘hey, character X’s head is detached from the body. Fix it!’ and you discover that the 3D model was outsourced in china so you need to wake up earlier tomorrow to discuss with them but in the meantime another developer come ‘hey, performance issue when object Y is in the game’, so you discover that due to a bad LOD selection we are rendering a 12k polygon model even when Y is far from the view point, then the tech lead of the camera team complains that yesterdays the First Person camera worked while today it has strange glitches,…“. A hell. You work very long hours and weekends. You go to sleep with bugs in the head. It’s like working in an hospital’s emergency room: there’s no high priority issue that is not going to be set aside for a higher priority issue. It’s the celebration of anxious context switch.

The deadline never came, we were in indefinite crunch time, postponing submission for TSG(5) and close to beginning of submission for TSG(6). There were no light at the end of the tunnel. I started overeating to compensate with work related stress and gained ~10kg. After 4 months I burnt out so hard I needed a break.

gelateriaMost important of all was that TSG(x) sucked. I didn’t enjoy working on our games. They really, really sucked. I was not proud of been part of the team who built such uninteresting games. I lost passions for playing games in general. I used to spend a good portion of my time playing videogames. I did no more. I think it’s like working behind the counter of a Gelateria. From this side I guess I’d eat tons of gelato if I were behind the counter while probably whoever works there can’t even smell gelato anymore!

So I announced I’ll quit by mid of July 2009. I can’t keep up that kind of life and I have enough saved I can afford the risk of being unemployed for a while. That’s the kind of stuff I want my money to be useful for. not gadgets, not nice clothes, not a shiny new car… but the power of freedom. This kind of freedom to quit whenever I want. The bathtub is full, I can live without the tap open for a while.

As extra benefit, being not blackmailable gave me power. When Shittone came asking what the hell was I doing I explained him that I had fun here, long time ago, working in R&D, but I don’t enjoy my job anymore and I won’t be working more on this shit. He negotiated with me, tried everything to keep me in the company. He offered me a position in R&D, plus a small raise (from 28.5k to 30.5k) and a 1.5 months of sabbatical from mid July to end of August, first 15 days paid! It was that simple!

If you have the power to call yourself out and you’ve proven you’re valuable, they’ll do whatever they can to keep you. Everything is negotiable! Don’t believe when they say it’s not true!

sabbatOn my yet-another sabbatical I tried to work on two major goals: a bike trip from Milan to Santiago de Compostela and a better jobI failed on both. But as a famous cliché says: fail early, fail often. It couldn’t be more true that time:

  • I planned the bike trip to be the most frugal the possible: moving with the bike, sleeping in couchsurfing, eating mostly street food. I didn’t reach Santiago (I didn’t even reach Spain): my first bike trip ended in Marseille, France, after 10 days. But I met amazing and open people that hosted me, offered me meals, brought me to evening happenings, had with me deep and interesting discussions… plus I’ve spent less than 100 Euro for that trip. We could live with close to zero money if we choose to. We are already financially independent if we accept to live with so few.
  • I had a 5 hours interview with one of the best gaming companies in Europe. For the first time in my life a full, deep interview in a foreign language (English). They paid my 3 days staying in one of the coolest hotels in Frankfurt, Germany, to interview me for a position in their R&D team. Essentially it’s like playing soccer in a second category team in Italy and being tested to play with the Brazilian national team. I didn’t make it but I guess it was a close call. Most important of all, for the first time I felt truly and deeply tested in what I knew about coding, designing, math and physics. I finally discovered what I was missing to become a even more solid software engineer. I felt energized after that interview!

What I didn’t realize soon after my first 5 hours international interview is that the seed was finally planted. I can’t tell for sure what it’s about, but I started seeing my small Italian company to be too limited to make me happy. I can (and should) go exploring the world around me.

I recently broke up with the girl with whom I moved to Milan, not a healthy relationship, I was freeI had my car stolen in spring 2009, I was also carfreeI biked to work (15km each way) each day for the last 3 months. I did run to work once! In summer 2009 I felt really light. I lost weight – more than 20kg – I biked for 10 days in Italy and south of France spending close to zero. I felt light and free. Since I became single I lowered my frugality bar to the bare minimum, able to spend less than 300 Euro per month (+ 700 rent). I smelled freedom.

I didn’t want to come back to GameCompany.

backtoworkBut I obviously did… And even though I’ve made it back and once and for all into the magic door, that door seemed magic no more to me. I worked on cool stuff and I spent fun time discussing interesting topics with the few R&D colleagues left, but the rest of the coworkers looked at me like a thief. Like someone who’ve stolen something. Shittone stopped talking to me directly. When I went to game engineers discussing about game engine features they need, none wanted to talked to me. In their heads I was just a complainypants that got “promoted” because I went crying to the boss. They didn’t accept that I fought for it, I negotiated it and I conquered that spot. If I had obtained it it means I had the skills to do my job i.e. the company had vested interests in offering me that position.

It was a lost fight. I had bad feelings interacting with almost any other colleague. Showing them that the magic door is crossable in both directions forced them to rethink their miserable lives. Mediocre people are unhappy for other’s success since it shows them that they can change things if they work on it. It actually “forces” them to at least try something. If you fail, instead, everything is fine: “see? told ya! None can do that!”.

I started spending lunch breaks alone, reading books and coding on pet projects. I felt an alien, even inside the magic door.

So I sent résumé around and in November 2009 I went for a couple of interviews with big gaming companies in Europe and I finally I got an offer from BiggerGameCompany, UK. At the beginning of December 2009, as soon as I received the offer from BiggerGameCompany, I sent my month notice letter to quit GameCompany. This time they didn’t even try to keep me.

The British offer was 33.5k GBP Gross per year. Not a lot to live in UK. The agreed starting date in UK was February 15th, 2010. I sent my landlord a 2 months notice letter end of December, my last day in the 700 Eur per month apartment would be February 28th. Last work day with GameCompany had been around December 22st 2009, so I faced yet another ~55 days of sabbatical, not very far from the previous one in August. I’m dangerously starting getting used to not going to work

Personal and Financial update

2009 has been a magic year for me. A kind of personal revolution. Set aside the sabbaticals, the quitting, the bike trip, the broke up, the weight loss I also came back to theater acting, running & biking, pet projects and a very rich social life outside work.

Most important of all, I went deep into humanistic study for the first time in my life: philosophy, psychology, sociology, self development. Even religions! I’m a kind of agnostic but I enjoyed reading about different religions and philosophies. Books that helped me a lot were:

I read a lot. From philosophy, psychology and sociology (more general: from the search for happiness) I entered the world of sustainability and efficiency which led to minimalism and frugality. It wasn’t there sitting in my brain, but I thought accomplishing FI by consuming less. Way less. Ideally ZERO, like a zen monk. Not my way – I didn’t know at that time – but walking in those territory was fun and totally worthwhile! Here a list of resources I explored in that years:

I would call 2009 my subconscious epiphany. My true FIRE epiphany would happen roughly 5 years later.

Finances during these 2.5 years have been ok. My net worth was not growing as quickly as I’d liked but still growing even though my first year’s salary was very low and I had another person and a car to feed for almost two years.

July 2007 to December 2009. You can see the drop in August 2009 due to the sabbatical.
July 2007 to December 2009. You can see the drop in August 2009 due to the sabbatical (mainly rent costs).

Putting all together, 1991 to end of 2009

1991-2009 - the blue vertical line represent the beginning of the Chapter's period.
1991-2009 – the blue vertical line represent the beginning of the Chapter’s period. I simplified the lack of data during 2000-2004 with a straight line. Meaningless at this point.

Having 38k saved in the bank is amazing. If I would not have to pay for rent – say I’ll bring my stuff to my parents’ house and I go around the world with my bicycle – how long would the last? Years? How many?

Amazing questions!

Leave a Reply

Your email address will not be published. Required fields are marked *

Comment Spam Blocking by WP-SpamShield