On day one of my internship, we were told: FAIL HARDER. Oh, and welcome to Facebook.
This wasn’t quite what I expected… You want me to fail? Well, if you insist, I guess I can try… But we do have to fix our failures afterwards…right?
When I write code, it’s reviewed not only by my mentor and teammates, but by whoever owns the code I touch. This is pretty essential — when I’m writing code for new notifications, who better to tell me “I’m Doing It Wrong” and “lol” at my mistakes than the guy who wrote the entire notifications system?
And these engineers are fast. As in, I finish my feature/bugfix/whatever, triumphantly submit my diff, go get a victory snack (the extra-spicy chips if I’m feeling especially brave), come back and already have three people commenting on my code! Look at all the things to fix! I fix them, we repeat this process something like seven more times, and two hours later it’s “perfect!” Later that day, my code hits employees’ accounts. Later that week, the WORLD.
Of course, not every feature that’s hacked out is released to the world immediately. Details are deliberated, designs are revamped, and, from the Engineering side of things, our code needs to be polished.
Although I haven’t personally broken the live Facebook site, I’ve certainly broken our development environment for a good 20 minutes, and I’ve broken some employees’ Facebook accounts in various ways (apologies to any of my victims who may be reading this). Nothing like having a captive audience of testers who test your features all day long. And as an intern, there are few things more motivating to fix your mistakes NOW than complaints coming from affected users… like say, Zuck (true story).
Some days, I feel like Facebook is a giant spaceship, and everyone on board is working to make it faster and better, while we’re already en route to Mars. Aside from my absurd tendency to view my own life as if it is a movie (occasionally of the sci-fi genre), my mentor inadvertently fueled this perspective by making an analogy about our project via a Seinfeld quote:
“So I’m on the plane, we left late. Pilot says we’re going to be making up some time in the air. I thought, well isn’t that interesting… obviously they’re increasing the speed of the aircraft. Now, my question is if you can go faster, why don’t you just go as fast as you can all the time?”
And the Facebook ship is moving fast. Every project I’ve seen, worked on, or even heard about, has gone through huge changes throughout my 10 weeks here. Things are launched that I haven’t even heard of, not because anyone is keeping them a secret from me, but because there’s too much to keep up with. The work I’ve done this Summer is light years beyond what I had planned at the beginning of the Summer. But I’m a fan of change, and I’ve certainly improved my ability to get work done with things constantly in flux.
Facebook as a company is moving fast, but we couldn’t do that at the macro level without an environment where engineers can move fast at the micro level. Engineers like hacking on things, but we also like perfecting them, which is a thousand times easier when you can iterate quickly, get expert feedback, and PUSH.