All your code are belong to us
And how video games have helped me as a developer.
I started playing video games on my 6th birthday. I got a brand new Famicom, and one of the best video game ever made so far — Zelda: A link to the past (Or just any game from the franchise). You have to read in order to progress in the game, so it gave me such motivation that I learned how to read within 3 months. I spent hours in front of a TV, reading out loud every single words and driving my parents nuts with the main theme of the game.
Years later, I was hit by the Final Fantasy phenomenon and played for hours trying to get all the Materias in FFVII, the Minotaur diploma in FFVIII, or kill Gaia in FFIX. I love RPG, point and click games, strategy, platform, adventure, sport games. I got SO mad at Sierra’s developers, making King’s Quest VII impossible to finish because of a bug with the Mother Nature tree. But I enjoyed finishing Broken Sword after hours of trying to resolve George Stobbart’s investigations. And of course, I eventually bought a classic Game Boy at some point and caught all of the 151 original Pokemons, all before the Pokemon Go hype.
Feels nostalgic doesn’t it? Well yes, a little bit, but this is not what I want to talk about today. I want to talk about all the feelings, emotions you have when you play a video game, from the moment you go to pick it up in the store to the moment you turn off the TV after the ending credits.
Playing a video game
Your turn on your console. You can’t contain the excitement. The new characters, a new universe. You take your first steps in the game, the graphics are astonishing, and the game play has been improved since last opus. First wins. First level up. Yes, this game is definitively a good one.
Then, the difficulties. The struggle. Ugh, this boss is hard. Game over. Ok, this time you’re going to do it, a last try and.. nooo game over again! HOW DO I GET PAST THIS GOAT GEORGE!?
Cheating. Shortcuts. Asking a friend who passed the level. Cheating even more. No shame.
It’s a long run. You want your memory card to contain not a good, but the best save ever. You don’t just want to kill that final boss, you want to DESTROY IT. You want to build the best strategy possible, so you aligned all the best players on FIFA 98 in order to beat Brazil 7–0 for the World’s cup finale, after of course dancing forever to the intro music, so your dad eventually gets mad and throws your Playstation out of the window, making you so angry that you run away from your house, but you’re only 10 so you hide in the little hut in the backyard, only for 10 minutes because hey, dinner’s ready.
Last attack. It’s done. Medal ceremony, France wins the world cup, ending titles. You made it. You look at your screen, shed a little tear. Time to say good bye to your team. You look back, months have pasted since you started. You start remembering when you.. “Dinneeeeer” “Oh yes mom, coming right away!” (Yes, I love food)
Maybe you’re starting to see what I’m talking about. All of these patterns, emotions, feelings… They help me every day, in my job, as a web developer.
A new project, a new game
Monday morning, you get kicked off in the conference room about the next project you’re going to be working on for the next months. It’s exciting. You get the brief, discover your role and the team. It’s like starting a new game, a new quest. You get a sense of what’s going to happen, how you’re going to code this or that part. You start seeing potential issues, but don’t want to think too much about it right now. You see some designs, think about this or that animation… A new story is about to begin. Aller on y va, go team!
const project = new Game();
Before starting, you take some time to step back and look at all the information and designs you have. What’s the best way to code this weird circle control for the video player? SVG? Canvas? What about this carousel? Ok, let’s come up with a structure that allows us to import SVG files directly in our handlebar templates. Set up a main canvas for animations. Like any RPG, you put a strategy in place before rushing into anything.
First days, first commits, first wins. You pull the latest version of your starter, but you want to switch to Webpack this time or use this new library. It’s your first steps and you don’t really know how to work with it, so it’s time to level up and spend some time on tutorials, articles, and playing around with prototypes. After you set up the main structure, you code a quick nav and set up the routing to have a simple navigation with a fade in/out transition between pages.
Then you add a breakpoint and a little bit of responsiveness. Time to deploy on dev for the first time. You go on Slack and proudly announce “Hey team check it out! :pray:”. It feels good. But of course, it’s immediately followed by a classic “…I found a bug.” Thanks L.
Adventure time
Time to get deeper into this. You have the PSDs, and start with a style guide, integrate the first views. Finally, it’s time for the first difficulties too.
How this layout will work on mobile? On a 13"? How did I just loose code with the last pull? Why did the other developer want it that way and now I can’t install this npm library? TELL ME WHY
Days, weeks pass. All the main pages are there, the main functionalities too. The client starts to see how it looks “for real” — aka on dev. Feedback.
“Oh, we don’t like this functionality anymore. By the way, can you add a crazy WebGL scene for the water drop instead of a PNG? Don’t worry we got your back, we find a codepen, please see link attached. Thanks.” #gameover
There’s always this moment when you have to build a tricky functionality with different modes, states, layouts, that has to work in 1000 different situations. You put your headphones on, this is your mission, your quest for today. You code, code and code again. 1, 3, 4 hours have passed “coding in the dark” and you decide to look for the first time on the browser. You CMD+R, and then:
Everything (almost) works! You feel so happy that you start running like a dog in the office, rising your fists up and singing “We are the champions”, while everyone looks at you and think “Oh God, these Frenchies are so weird…”
Stuck again. You look hours of a solution and just want to give up, but you decide to cheat and call a friend developer to help you out and find the solution just by explaining it (also called Rubber Duck Debugging). Or go on stack overflow.
The final boss
Usually the last 2 weeks of a project. Beta review just passed, you start QA rounds. You now have it clearly in mind, this monster you knew you’ll meet since day one is almost here, the beast you’ve been preparing for so long is about to show its face: the evil Push To Prod! (tintintiiiin)
Everyday starts the same: you meet with the team by the whiteboard to prepare the strategy for the day, then you go back to your Trello (or Github now) board to see the daily goals, and open your done-done to see your remaining ennemies. You see some low priority tickets, so you kill one of them just to warm up. And there we go, a wild high priority ticket just appeared! It’s a mobile type. You know, the easy ones.
Days are long, sometimes nights too. But it starts looking like the end. You implement the tagging plan, tackle down these last IE tickets. You’re tired, but you keep on working, you really want to refine one last time some hover state buttons, the same way you want your Pokemons to have the maximum level so they are pretty much invincible. One. Last. Time.
D day. It’s a usually a Tuesday, because the evil Push To Prod SHOULD NEVER appear on Fridays. The last commit. There it is. Your team magician O. deploys on prod the last build and like the Cloud’s Omnislash limit, smashs that DNS propagation button.
It’s live. The excitement again. The first email blast is sent out, you open the analytics page on the live section. 100 people are on your website. What page are they visiting? Are people hitting the /legacy page? 500 people. What’s the device most used by your visitor? 1000. You heart starts beating so fast. The first articles pop up, the first tweets appear on the Twitter search. 5000. All the emails have been sent. 20,000 users. O. looks on the servers with anxiety but everything seems ok. 17,000. 10, 000. 5, 000. It’s stabilized now.
You did it! The whole office applauds, you look at each other with a big smile on your face. The client sends an email to thank everyone involved, you spend the rest of the day on the analytics pages and keep an eye on your emails and twitter search (best free QA ever) in case something goes wrong.
You feel relieved. Proud. Proud to have been part of the team on such a project. Then you think about all these late nights debugging, all the hard work, all of the smart solutions you found, but also these regrets you might have because you haven’t had time. But it doesn’t matter now. Now, it’s live. After months working on it, your team did it, you did it, and yes, YES, YOU FINISHED THIS QUEST!… Until the next one.
Wow, much emotions, such feelings
These are more or less the steps I go through on a project, and it’s why I love my job. Video games definitely changed my way of seeing and apprehending things, and I use these experiences and memories every day. Not because I’m (obviously) a nerd, but because I realized I’m using my imagination to see things that would be less interesting otherwise. Probably (and I hope, please tell me I’m not crazy) other people feel exactly the same way too. Maybe you have other triggers, use other memories and feeling to get through your daily tasks. Maybe it’s sport? Or movies?
Our perception of the world is very personal and important. You might be a back-end developer and simply enjoy outputting an array of data because you made a smart database and clever join queries. You might be a doctor and enjoy welcoming someone new in your office, examining why this person is sick, and finally finding the correct treatment to make them feel better.
What ever is it you do for a living, it feels so good to enjoy what you do, and recall these childhood memories every day in your job — For me, that makes me feel really lucky.