How Facebook Ships Code
Hugh Pickens writes "The two largest teams at Facebook are Engineering and Ops, with roughly 400-500 team members each, together making up about 50% of the company. All engineers go through 4 to 6 week 'Boot Camp' training where they learn the Facebook system by fixing bugs. After boot camp, all engineers get access to the live DB and any engineer can modify any part of Facebook's code base and check-in at-will so that engineers can modify specs mid-process, re-order work projects, and inject new feature ideas anytime. Then arguments about whether or not a feature idea is worth doing or not generally get resolved by spending a week implementing it and then testing it on a sample of users, e.g., 1% of Nevada users. 'All changes are reviewed by at least one person, and the system is easy for anyone else to look at and review your code even if you don't invite them to,' writes yeegay. 'It would take intentionally malicious behavior to get un-reviewed code in.' What is interesting for a company this size is that there is no official QA group at Facebook but almost every employee is dogfooding the product every day."
That explains a LOT...
Then where can I get that shipped code?
Although, after reading that story, I don't think I want that code. It sounds like a textbook example of feature and focus creep.
It's not like anything really changes on it.
After boot camp, all engineers get access to live DB
So anyone who's ever worked at FB as an engineer will have likely downloaded copies of all their friends' / family's / ex-girlfriends' inboxes, chat history, etc.
Not surprising really.
Once and for all, programmers are not Engineers.
Programmers can not be held liable, have no professional license, no government accountable body, no code of ethics, no liability insurance, or other measures in place to directly protect the public.
Think about it.
If facebook was staffed by real engineers, a privacy breach would cost the engineer his/her license, and they could be personally sued, as well.
But then again, anyone in the good old US of A is an engineer. From the sanitation engineer who picks up my trash, to the beverage refreshment engineer who makes my coffee at Starbucks.
Engineer is just another cheap title, like CEO/CFO/CIO/CTO, etc, free to be used by anyone.
It's too bad much of the article is wrong.
Comment forecast: Bits of genius surrounded by a sea of mediocrity.
But will they catch unintentionally malicious behavior that gets un-reviewed code in?
Bear in mind how Facebook works internally. It's a large number of programs intercommunicating through a remote procedure call system. There's no one big "build". The interfaces between programs are well defined, and changing out programs individually is normal.
Yeah, I had to look it up. Never heard of the term "dogfooding" before.
It seems a silly word choice, since in context it carries no more meaning than the rather more conventional word "using".
Bow-ties are cool.
I'm just laughing (sadly) that web developers are considered engineers.
But hey, they call garbage collectors "Sanitation engineers" so why not Javascript and PHP coders...
Does idiotic ideas like sharing my private info with any random app that is easily setup to be malicious get through?
Why dont they have a checks and balances with the executives that should be smacked hared in the head for their bad ideas?
Do not look at laser with remaining good eye.
We get to read this story every few years. Some company makes a popular product and all of a sudden they are the authority on development. News flash guys, enterprise software wasn't just invented and we've been rolling out features to millions of people for years. In environments where any discrepancy can lead to serious legal repercussions. So just for a second, hear us out. We know what we're doing and we don't need to reinvent it every few years because the guys from Facebook, Basecamp, Hacker news, or any other place said we're doing it wrong. Our bottom line and years of quality deliveries say we're doing it right. What do these guys have besides a history of rolling out mistakes? Their value is based on hype, not their code quality. Some of us don't have the luxury to make huge mistakes and have our customers be okay with it.
Tiger Blooded Bi-Winning Machine
I know they're always looking to "streamline" Facebook, but sometimes really obviously good features vanish without explanation and leave users scratching their heads. These decisions would make more sense if you could see some way that FB was making life easier for advertisers or something, but often, the feature regressions are just nonsensical to the extreme.
A few:
- Facebook got rid of statuses. The one e-crack feature they're best known for. Gone with the new profile. Now they're just wall posts to yourself that quickly fall down the page. *facepalm*
- Photos are now uploaded in descending order. It used to be that a group of images would be uploaded like this: beachtrip-1.jpg, beachtrip-2.jpg... and so on. Now it reverses the order of an uploaded album. The last photos taken are displayed first. Posting vacation pics? Well your friends get to see the day you left and work their way back to the day you arrived.
- The "Reverse Photo Order" option was removed when the above "feature" was introduced. You can drag around photos to manually reorder them, but every photo that you mouse-over jumps out of the way and moves to different rows. It's a UI disaster.
- A few months ago I started seeing tagged photos of friends despite the fact they were in private albums of people I'm not friends with who also happen to have locked-down profiles where you can't see anything at all unless you add them.
This is still a learning process as they're one of the biggest guys out there usage-wise. It's hard to tell what's real and what's fake but I reviewed Beautiful Data for Slashdot a while ago and am reminded of a chapter by Jeff Hammerbacher about Facebook's database in the early days. Maybe the culture is still a little bit like those early days with the database where they spend more time constantly addressing data issues and trying to step up to the next <prefix>abyte? You can go ahead and presume all you want but I'm going to guess the developers are pretty busy dealing with some serious scaling issues. Past performance of the website reinforces this and, let's face it, the "chat" feature was and always will be a nightmare to use.
At a staff of 200, I would also wager that new features take a back seat and would propose that this is why we see Facebook's "upgrades" as being almost purely cosmetic (i.e. layout, markup, etc.).
My work here is dung.
It's easy not to have QA when your users aren't paying you.
Google's in the same boat - the websites aren't the product, the end users are. When your website is your product this crap won't fly.
Nowhere does this mention licensing of any kind. Licenses and liability to lawsuits are a recent invention and are little more than unnecessary government intervention in the free market for the purpose of restricting the supply of engineers. This sort of guild mentality has always been detrimental to the economy by forcing people to pay for something they don't necessarily want. It would have been much better if all this licensing nonsense disappeared and we could rely on the traditional reputation system that the free market uses to maintain quality.
Urgh. That means every competent insider can easily put disguised backdoors into the code to be used later. Ordinarily you want to severely limit who can do that. In fact one fundamental principle when operating high security applications is that development personnel must not have access to the production environment, exactly to not hand all eggs to everybody.
Obviously a young and highly risk-taking company. Not good at all.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Scaling a site to be the 2nd most popular site on the web is no small feat. I would imagine a good number of people on their tech team are designated to managing the load.
MABASPLOOM!
> I'd have thought that a team of 3-4 engineers could achieve the same effect.
This is very typical sentiment in people with little to no experience in running large sites. They believe a) What they see is all the exist, b) Scale does not matter, and c) The site never changes.
This lead them to the faulty conclusion that any high-availability, high-traffic site could be run by two people (of which they no doubt are one) live-updating PHP scripts on the fly. See Also: Dunning-Kruger effect.
Its for a different reason; GS created a vehicle with exactly 499 investors to specifically skirt a rules that requires any company with more than 500 investors to be publicly traded. The SEC woke up for once in their lives and started poking around, rather than taking the heat, GS created the vehicle overseas, and only offered it to non US clients. Shady and circumspect to say the least. Heres more info: http://dealbook.nytimes.com/2011/01/17/goldman-limits-facebook-investment-to-foreign-clients/
I registered for /. after years of lurking AND deleted my fb in the same day.
Back in 09, Blizzard said their programming team for WoW's engine, gameplay, tools, servers and UI was 32 people total.
http://wow.joystiq.com/photos/adgc09-the-universe-behind-world-of-warcraft/#2296009