What It's Like Being A Programmer At Facebook

facebook employee hackaton 14

Photo: Facebook

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.

First off, engineers make up a majority of Facebook's staff.

The two largest teams are Engineering and Ops, Lee says.

The two teams make up about half of the company.

There are plenty of product managers, though.

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.

After that, Facebook employees get access to the database.

'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.

Like Google, it's a very engineer-driven culture.

Engineers present their work during monthly cross-team meetings.

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.

Gathering resources for a project is purely voluntary.

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.

Instead of arguing whether a feature is worth implementing, engineers just prototype it.

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.

This is controlled by an application called 'Gatekeeper.'

It's a big part of Facebook's 'hacker' culture -- rapidly build and ship products, and dump the products that don't work.

Everyone wants to work on the back-end processes at Facebook.

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.

Mark Zuckerberg reviews every code update to the News Feed.

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.

There's no official quality assurance group.

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.

By default, code updates go out on Tuesdays.

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.'

The operations team rolls out the code updates slowly.

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.

Think you have what it takes to work at Facebook?

NOW WATCH: Tech Insider videos

Want to read a more in-depth view on the trends influencing Australian business and the global economy? BI / Research is designed to help executives and industry leaders understand the major challenges and opportunities for industry, technology, strategy and the economy in the future. Sign up for free at research.businessinsider.com.au.