Facebook’s engineers are its most prized possession. They’re given an enormous amount of autonomy and told to ship quality code quickly.So, what’s it like being a Facebook engineer?
Google employee Yee Lee wrote a huge post on what it’s like shipping code at Facebook that he’s compiled from talking to a ton of engineers.
It’s pretty much exactly what you might think it’s like — although there’s a little more supervision than first expected.
Granted, this post was written about a year ago, but it doesn’t seem like much has changed since the company has gone public.
The two largest teams are Engineering and Ops, Lee says.
The two teams make up about half of the company.
They are managers that make sure projects are getting shipped on time.
There are about 7 to 10 engineers per product manager, Lee says.
All engineers go through a 4 to 6 week training period, where they learn the Facebook way of fixing bugs and listen to lectures given by senior employees.
Around 10 per cent of the employees coming in to Boot Camp don't make it through, and are counseled out.
'With great power, comes great responsibility,' they say. Any engineer can check in code and modify the database at will.
Employees also get a list of fire-able offenses -- like sharing user data.
There are still a lot of safeguards to prevent this from happening, though, he says.
Product marketing managers and product managers attend these meetings, but aren't encouraged to speak up. 'There is actually feedback to the leadership that 'product spoke too much at the last meeting' if they do.
Facebook wants engineers to publicly own products and be the main point of contact for the things they built, Lee writes.
Engineers basically decide what they want to work on in the company. They go to their managers and say, 'these are the five things I want to work on.'
Product managers lobby groups of engineers to try and get them excited about their projects, but the engineering managers mostly leave each engineer's preferences alone.
Engineers will spend about a week building a feature in Facebook and test it on 'one per cent of Nevada' to decide if it's worthwhile. Usually it's tested on Facebook employees.
It's a big part of Facebook's 'hacker' culture -- rapidly build and ship products, and dump the products that don't work.
At Facebook, scalability and infrastructure are the most interesting problems for engineers.
So it can be hard to get engineers excited about working on front-end products like messaging, Lee writes. Instead, everyone wants to work on the News Feed algorithm.
That's a far cry from other consumer tech companies, where everyone wants to work on front-facing products, he says.
That's the most important feature at Facebook.
There are mandatory code reviews for all major updates, and all changes are reviewed by at least one person.
But Zuckerberg personally reviews anything that changes with the News Feed.
Engineers are responsible for testing their features, fixing bugs and post-launch maintenance -- not an official quality assurance group.
Facebook still has QA engineers, and all engineers are strongly encouraged to report bugs.
If you try hard enough, your code change can go up the same day you push it out, though.
There are review tools that 'pushers' have that tell how much risk there is with a code update. Facebook engineers have 'push karma,' which shows that some engineers are riskier than others.
Any engineer that's committed code to that week's release has to be on-site and present in an IRC channel before the release for a 'roll call.'
Facebook has about 60,000 servers, so the operations team gradually rolls the code out to a few servers to make sure it works.
It goes out to about 6 servers first, and then more. If a fix is needed, it's taken offline until the engineer that committed the code fixes it.
Then it's pushed out to the first six again, then the next level, and so on.
During the release, the operations team uses IRC and other forms of messaging to ping individual engineers if a code commit needs a fix.
If you aren't around to fix the code after you commit it, you get 'publicly shamed.' Lee doesn't go into a lot of detail about this, but he says you can get fired if this happens too often.
You won't get fired for accidentally breaking the site, though.