The funny thing about this list is that a few of the items, while intended as satire, are actually spot-on. Especially item #1:
"But the rate of source code commits continues to grow proportionally with the number of engineers. This is in clear violation of the law that Fred Brooks established nearly 40 years ago in The Mythical Man Month."
Whoop de do.
This might, just maybe, because no particular behavior of FB really matters all that much. You're not building a space shuttle launch program or even a spreadsheet that people rely on to give correct answers.
I'm sure that a business model that can allow 80 godzillion developers to fling spaghetti at a wall in parallel with a view to seeing 'what sticks' is quite a bit less subject to Mythical Man Month type scaling problems.
And is there anyone so naive that they don't understand the agenda behind "3 free meals"?
It's likely that the code is not coupled. Fred Brooks studied OS/360, which was essentially one big component. Facebook is, presumably, many separate components that don't depend on each other in any way, and so the "teams" are much smaller than "all of Facebook".
If you watch velocity on individual components, you'll probably see sub-linear scaling as Brooks predicts.
Question is how well peer-reviewed the code is before deployment. Facebook is handling a lot of personal data about their users. Security vulnerabilities may not harm Facebook as much as their users.
A lot of this is believable (i.e. can be taken for real, not satire) if you don't read into each point, because a lot of it is quite different from how Google does things:
1. At Google, code has to be designed, written, tested, and reviewed. You can't just start writing and shipping stuff, partly because there's so much infrastructure, and partly because you pay for shoddy code later. Google has long outgrown the kind of "start-up" velocity that you feel at Facebook.
2. Arguably, software does need to be talked about and debated. Google and many others hold meetings to make sure teams don't end up with 5 incompatible siloed components when what they really needed was a server and multiple clients. Teams have been bitten in the past by the "shit, let's rewrite all this except with a good design" problem. Certainly, they try to keep engineers out of meetings as much as possible.
3. Google doesn't have Larry and Sergey micromanaging things, and PR has been something that Google's struggled with. The role of a CEO is debatable.
4. Sure, although a low stock price isn't without consequences.
5. Several design changes have been made to food at Google: healthier snacks on the snack shelves, color-coding snacks, more plates of the smaller variety in cafes. Some people do get the Noogler 15.
6. Engineers can be pretty bad at making certain kinds of decisions, especially because they spend a lot of time heads down on a small components. (Have you seen the typical engineer-designed UI?) Google PMs that work between teams focus a lot on product decisions that affect the users and other products. Remember criticism that Google just makes a bunch of random, disconnected products?
7. Facebook has had some embarrassing "launches" of Hackathon products. One poorly thought-out launch can mean multiple criminal investigations and loss of user trust.
8. Social is important to Google, but it's hard getting people to agree that it's important.
9. Does it drive away candidates?
10. Trust is all fun and games until you give people in your PRC office extensive privileges to the internal network.
I can kind of see the logic behind the author's first point. When I write code for fun, I don't write design docs or invite friends over for design reviews. I just do whatever I want, mostly typing in lines of code, until I can't stay awake anymore. And it is a lot of fun. The problem is, it's ignoring things like "making money" and "not annoying users" and things like that. When you need to engineer instead of play, then you need to think about things like: "how can I not write this code". And that's why you need design docs and design reviews and meetings: to learn, to share knowledge, and to ensure that your time spent programming is the best possible use of that time.
If someone said, "your job is to write as much code as possible and push to production every eight seconds", that would be fun. I just don't think the company would last longer than ten years. At that point, that company would do nothing but extinguish fires, and a new upstart would be doing "more with less" and out-innovate them. Name the popular tech companies from twenty years ago that you interact with on a daily basis today. Yeah.
> 1. At Google, code has to be designed, written, tested, and reviewed. You
> can't just start writing and shipping stuff, partly because there's so much
> infrastructure, and partly because you pay for shoddy code later. Google
> has long outgrown the kind of "start-up" velocity that you feel at
> Facebook.
you are assuming it's impossible to design, write, test and review a small change or a small set of changes and get it into production quickly. The assumption is wrong, all you need is good people, the right processes (formal and informal, i.e. discipline) and the right tools. That's what continuous deployment is about
First, what are you trying to say? Are you being sarcastic like the original post? Or are you making genuine observations about Google and approve of them?
1. At Google, code has to be designed, written, tested, and reviewed. You can't just start writing and shipping stuff, partly because there's so much infrastructure, and partly because you pay for shoddy code later.
What makes you think Facebook doesn't design and test code, or that the other concerns don't apply to them as well?
I understand it's tongue-in-cheek, but #2 is actually worrisome:
> There’s even a “no meeting Wednesday” meme in the company, which you might as well call a “failure to communicate” death wish. Software needs to be talked about and debated, not simply written. It’s lunacy to be writing and shipping code at a blistering pace, instead of letting things bake a bit in committees representing broad swaths of all semi-affected parties.
There are a lot of companies where failure of communication is a very real thing, and where semi-affected (or totally affected) parties are completely ignored. In my experience, ideas for code do need to be talked about and debated, not simply written. Facebook has had a lot of very public privacy/other failures that could probably have been avoided if there was more communication going on.
If you're just writing code at a blistering pace, without a lot of communication, there's a good chance you're not writing the right code.
Meetings are a very expensive way to communicate. A concise, well-edited email is more difficult to prepare, but cheaper for the company. If something takes you an hour to write but the ten recipients can understand it in six minutes, you saved nine hours of time over having an hour meeting. That's like having an extra person on your team, without having to pay them or buy them a computer!
(That's why a textbook costs $100, but a semester of class costs $2000. Economy of scale.)
Of course, if you anticipate the discussion to mostly be back-and-forth, then a meeting could be necessary. But have an agenda and stick to it. If you just want to socialize with your coworkers, duck out early and hit the pub.
I work at Cloudera, and engineering has work from home/no meeting Wednesday. It allows people to work wherever they prefer and are most productive, and to have the whole day to focus with minimal distractions.
That said, we do still communicate as needed for the active work. But we do so in terms of emails, chat messages, and sometimes phone calls between only the necessary parties, without any long scheduled meetings or meetings that provide value in the longer term (eg. interviews or longterm planning meetings) as opposed to helping someone do the right work today.
It works great, we've been doing it for basically the whole life of the company, and I don't see it stopping.
Meetings are fine if they have an agenda, someone to enforce the agenda, no extraneous parties, are timeboxed and have a predetermined outcome should no consensus be arrived at. "We're going to shelve this unless we can come up with an acceptable solution within 30 minutes"
Good grief people - It's satire. The entire thing is meant to be funny. I didn't even think it was particularly subtle so I'm not sure how others are seeing it any other way.
Pretty obvious only an idiot would write up this rant on his personal blog while still employed at FB. I ignored the content immediately after realizing this. Click bait title. Lame.
He had me until the second point's header. Overall it was a fantastic read if just for the moment of realization. Still it would have benefited with more subtly or fewer items. Some point's like #4 had great potential but needed less sarcasm.
I haven't felt the need to downvote a post since PG stripped us of our ability to do so, but this is unmitigated crap. A poor attempt at satire in service to some large corp is not something that should grace the front page, and the resulting conversation helps no one. It's blog spam in a different form.
Wouldn't this be better as "10 things I love about working at Facebook"? Why not just drop the "hilarious" satire angle and say what is awesome directly. I hope I don't sound like the death of fun... It sounds a little smug as it is now.
I agree, and he's slyly discouraging serious debate of his points since Facebook is so "cool". Software actually does need to be discussed. Leadership is critical in any structure of any size. The thought that every brogrammer is making decisions makes me think that he's either overstating this fact (every programmer in the world makes some decisions everyday), or that Facebook is chaotic. The rate of source code commits is fairly meaningless: with 1 shitty rushed commit, you might have to check in another 4 to fix it up. So, with 5 commits in, are you 5x more productive? Hackathons are a great way of interfering with life outside the office. There are other (possibly better) ways to give people a chance to crank out good work on side projects. Like a sabbatical where you spend a few weeks working on something you think is important. The hot tub thing makes me think Facebook is a testosterone-heavy environment.
Maybe I'm just uncool and took his flame-bait. Facebook does sound like a great place to work. But these kinds of puff pieces have a naivete that makes Facebook look like a frat house with a dark side that is not actually discussed.
I completely agree. The article didn't say much new, but it came off as very smug. If the engineers at Facebook are that smug, I'm pretty sure I don't want to work there.
That said, it's good to here Zuck is still focused on building the company and not appeasing the critics. Long term value is what matters.
Real reasons why working at Facebook isn't that attractive in my opinion:
1. Giant php codebase.
2. All the excitement is gone post-IPO, they've reached an inflection point and growth is slowing down.
3. Mark Zuckerburg doesn't have great social skills/intelligence. Which wouldn't be a problem, except that he runs a giant social network.
4. The corporate mission of making the world more open and connected just doesn't seem very high impact. Facebook at it's core is a way to share photos and keep up with old friends, it doesn't really change social interactions.
5. Their focus is very narrow, they don't work on many novel exciting problems.
Must admit I've stopped after the firtst, but: With thousands of programmers, what real features have been released to facebook.com? I often ask myself what those thousands of programmers do, as a user (I know not customer in this case) I can't see it. All of them mobile? Ads? Image recognition? With thousands of programmers should't the output be (5 people dev teams, one feature a month) hundreds of features/stories per month? Could users live with that?
I'd also think commits are not a productivity metric.
A lot of our manpower goes into designing, implementing, and maintaining highly scalable systems and tools that allow the actual product teams to do their work. And of course there are plenty of teams that are simply focused on improving the scalability of existing features.
It's hard work to scale something as complex and inter-dependent as Facebook when you're operating at the scale of almost a billion monthly active users.
Features can sometimes only be visible in the aggregate. If facebook improves ranking of stories in a way that improves time on site and their user engagement metrics by 5% that will likely be invisible to nearly all users. Same for their ads. Plus they would be running many A/B tests, some making it onto the site, others only ever being seen by a small percentage of their users. Chat, integration of acquisitions, billing, APIs, 3rd party integrations, future products, etc.
I went from "I disagree" to "This guy is a moron" to "Oh, thank god this is satire" at #3. It's amazing that they can keep this environment after growing so big.
Too much code being committed? Too many decisions being made by engineers? Building a great product?
Wow, talk about navel gazing. I get the satire point, but...
This internally arrogant, externally ignorant attitude is why the stock is where it is. These ideals are not necessarily good for a mature business that needs to pay back the kind people that gave it money in the first place.
But more seriously, I think this is an all-too-human trait - once you are successful you start to greatly approve of yourself and look for reasons in your very DNA why you are where you are and then you start marketing that... when really, it was all a lot of luck and people seem to forget that pure chance is the biggest innovator and the bigger part of what they have actually done right is NOT spoiling the success that luck has brought them. There are and were a ton of companies with the same culture, the same great benefits for developers, the same productive environment but you never heard of them and they are gone now.
The stock price is where it is because various players hyped a $40B company into a $100B valuation. If you think that is a failure for anyone working at Facebook (except very recent hires who believed the hype when they evaluated their comp package), you are mistaken.
Satire is well and good, but i can't grok #9. Interviews in a hot tub? So... even for the women? Or is it used preferentially for high pressure engineers only (whom of course are all men)?
It may be just me, but I can't see the HR department in any state being okay with that. And if it's not for interviews... what's it for?
Maybe it was added later, but the article has a link to a photo album of a "hot tub" in the Seattle office. There's no water in it, people are just using it to hang out.
A not-so-subtle pretend recruiting/bragging piece, except perhaps it had the reverse effect on me.
#1 reason I won't want to work at Facebook so I can avoid smug, not-so-witty, immature douchebags like the author. With the stock price where it is, I guess FB might have to resort to these kinds of tactics to attract talent these days.
It would have been funnier if he took a few jabs at facebook. Good satire sometimes mixes actual insults with the satire. I don't know anything about the author, but this reads like something written by a third rate facebook recruiter.
Why make it impossible to read more than two lines, if the point is to show off how cool FB is?
It is fascinating, that I really want to learn the good things, but I cannot get myself to read through the satire. Normally, I would be able to skim through it; even that triggers a gag reaction. Anybody has the same problem?
I actually agree with #1. Code is the enemy of all codebases. Though i'm not arguing against the company culture that produces such productivity. It's just more a case of "with great power comes great responsibility".
Just a recruitment propaganda piece.
And actually what #1 tells me: "Come to Facebook, and have your share of ever growing giant smoking unmaintainable pile of (php) code."
php is maintainable if you actually know it and not just put it on a resume, Drupal runs the whitehouse.gov, Wordpress runs 15% of all sites and Facebook has the largest member base in mankind history, PHP is not hieroglyphics it is actually has roots from C...
I was way too naive to expect a Facebooker to not actually be drunk on the cool-aid and actually bother to offer a comprehensive good/bad overview of FB.
The thing is that had he actually did that, I would have a more positive view of working for FB. I would be impressed by the caliber of people who work there -- people who're capable of parsing out the nuances of a given situation and take a holistic view of the situation. Those people are the type who can work through difficult situations and salvage a bad one. Instead, I walk away with the impression that FB is full of immature toolbags.
I'd pretty much assumed that it was tongue in cheek from the title. I'm completely baffled as to how anyone can read more than a few lines without realising it's not serious.
Is there something wrong with me or everyone else?!
[+] [-] onan_barbarian|13 years ago|reply
"But the rate of source code commits continues to grow proportionally with the number of engineers. This is in clear violation of the law that Fred Brooks established nearly 40 years ago in The Mythical Man Month."
Whoop de do.
This might, just maybe, because no particular behavior of FB really matters all that much. You're not building a space shuttle launch program or even a spreadsheet that people rely on to give correct answers.
I'm sure that a business model that can allow 80 godzillion developers to fling spaghetti at a wall in parallel with a view to seeing 'what sticks' is quite a bit less subject to Mythical Man Month type scaling problems.
And is there anyone so naive that they don't understand the agenda behind "3 free meals"?
[+] [-] jrockway|13 years ago|reply
If you watch velocity on individual components, you'll probably see sub-linear scaling as Brooks predicts.
[+] [-] vilda|13 years ago|reply
[+] [-] beering|13 years ago|reply
1. At Google, code has to be designed, written, tested, and reviewed. You can't just start writing and shipping stuff, partly because there's so much infrastructure, and partly because you pay for shoddy code later. Google has long outgrown the kind of "start-up" velocity that you feel at Facebook.
2. Arguably, software does need to be talked about and debated. Google and many others hold meetings to make sure teams don't end up with 5 incompatible siloed components when what they really needed was a server and multiple clients. Teams have been bitten in the past by the "shit, let's rewrite all this except with a good design" problem. Certainly, they try to keep engineers out of meetings as much as possible.
3. Google doesn't have Larry and Sergey micromanaging things, and PR has been something that Google's struggled with. The role of a CEO is debatable.
4. Sure, although a low stock price isn't without consequences.
5. Several design changes have been made to food at Google: healthier snacks on the snack shelves, color-coding snacks, more plates of the smaller variety in cafes. Some people do get the Noogler 15.
6. Engineers can be pretty bad at making certain kinds of decisions, especially because they spend a lot of time heads down on a small components. (Have you seen the typical engineer-designed UI?) Google PMs that work between teams focus a lot on product decisions that affect the users and other products. Remember criticism that Google just makes a bunch of random, disconnected products?
7. Facebook has had some embarrassing "launches" of Hackathon products. One poorly thought-out launch can mean multiple criminal investigations and loss of user trust.
8. Social is important to Google, but it's hard getting people to agree that it's important.
9. Does it drive away candidates?
10. Trust is all fun and games until you give people in your PRC office extensive privileges to the internal network.
[+] [-] jrockway|13 years ago|reply
I can kind of see the logic behind the author's first point. When I write code for fun, I don't write design docs or invite friends over for design reviews. I just do whatever I want, mostly typing in lines of code, until I can't stay awake anymore. And it is a lot of fun. The problem is, it's ignoring things like "making money" and "not annoying users" and things like that. When you need to engineer instead of play, then you need to think about things like: "how can I not write this code". And that's why you need design docs and design reviews and meetings: to learn, to share knowledge, and to ensure that your time spent programming is the best possible use of that time.
If someone said, "your job is to write as much code as possible and push to production every eight seconds", that would be fun. I just don't think the company would last longer than ten years. At that point, that company would do nothing but extinguish fires, and a new upstart would be doing "more with less" and out-innovate them. Name the popular tech companies from twenty years ago that you interact with on a daily basis today. Yeah.
[+] [-] btilly|13 years ago|reply
[+] [-] ABS|13 years ago|reply
you are assuming it's impossible to design, write, test and review a small change or a small set of changes and get it into production quickly. The assumption is wrong, all you need is good people, the right processes (formal and informal, i.e. discipline) and the right tools. That's what continuous deployment is about
[+] [-] codeonfire|13 years ago|reply
[+] [-] brown9-2|13 years ago|reply
What makes you think Facebook doesn't design and test code, or that the other concerns don't apply to them as well?
[+] [-] crazygringo|13 years ago|reply
> There’s even a “no meeting Wednesday” meme in the company, which you might as well call a “failure to communicate” death wish. Software needs to be talked about and debated, not simply written. It’s lunacy to be writing and shipping code at a blistering pace, instead of letting things bake a bit in committees representing broad swaths of all semi-affected parties.
There are a lot of companies where failure of communication is a very real thing, and where semi-affected (or totally affected) parties are completely ignored. In my experience, ideas for code do need to be talked about and debated, not simply written. Facebook has had a lot of very public privacy/other failures that could probably have been avoided if there was more communication going on.
If you're just writing code at a blistering pace, without a lot of communication, there's a good chance you're not writing the right code.
[+] [-] jrockway|13 years ago|reply
(That's why a textbook costs $100, but a semester of class costs $2000. Economy of scale.)
Of course, if you anticipate the discussion to mostly be back-and-forth, then a meeting could be necessary. But have an agenda and stick to it. If you just want to socialize with your coworkers, duck out early and hit the pub.
[+] [-] jackowayed|13 years ago|reply
That said, we do still communicate as needed for the active work. But we do so in terms of emails, chat messages, and sometimes phone calls between only the necessary parties, without any long scheduled meetings or meetings that provide value in the longer term (eg. interviews or longterm planning meetings) as opposed to helping someone do the right work today.
It works great, we've been doing it for basically the whole life of the company, and I don't see it stopping.
[+] [-] neilk|13 years ago|reply
[+] [-] clwoodson|13 years ago|reply
[+] [-] msie|13 years ago|reply
[+] [-] ghshephard|13 years ago|reply
[+] [-] mcphilip|13 years ago|reply
[+] [-] andrewfelix|13 years ago|reply
[+] [-] nestlequ1k|13 years ago|reply
Jonathan Swift (http://art-bin.com/art/omodest.html) is crap in comparison to this work of masterpiece (AKA "why I love my job").
[+] [-] Danieru|13 years ago|reply
[+] [-] redthrowaway|13 years ago|reply
[+] [-] reledi|13 years ago|reply
[+] [-] Lewton|13 years ago|reply
[+] [-] the_cat_kittles|13 years ago|reply
[+] [-] jganetsk|13 years ago|reply
Maybe I'm just uncool and took his flame-bait. Facebook does sound like a great place to work. But these kinds of puff pieces have a naivete that makes Facebook look like a frat house with a dark side that is not actually discussed.
[+] [-] tedunangst|13 years ago|reply
[+] [-] SoftwareMaven|13 years ago|reply
That said, it's good to here Zuck is still focused on building the company and not appeasing the critics. Long term value is what matters.
[+] [-] soup10|13 years ago|reply
1. Giant php codebase.
2. All the excitement is gone post-IPO, they've reached an inflection point and growth is slowing down.
3. Mark Zuckerburg doesn't have great social skills/intelligence. Which wouldn't be a problem, except that he runs a giant social network.
4. The corporate mission of making the world more open and connected just doesn't seem very high impact. Facebook at it's core is a way to share photos and keep up with old friends, it doesn't really change social interactions.
5. Their focus is very narrow, they don't work on many novel exciting problems.
[+] [-] Uchikoma|13 years ago|reply
I'd also think commits are not a productivity metric.
[+] [-] nuclear_eclipse|13 years ago|reply
It's hard work to scale something as complex and inter-dependent as Facebook when you're operating at the scale of almost a billion monthly active users.
[+] [-] jfoster|13 years ago|reply
[+] [-] Domenic_S|13 years ago|reply
An interesting topic. If you look at commits on the same project for a long enough period, trends do emerge.
The time scale is important, because committing a 3rd-party library or a bunch of docs isn't really productivity, but it evens out over time.
[+] [-] ricardobeat|13 years ago|reply
[+] [-] kimmiller|13 years ago|reply
Wow, talk about navel gazing. I get the satire point, but...
This internally arrogant, externally ignorant attitude is why the stock is where it is. These ideals are not necessarily good for a mature business that needs to pay back the kind people that gave it money in the first place.
Enjoy your free lunch, as there are none.
[+] [-] kahawe|13 years ago|reply
But more seriously, I think this is an all-too-human trait - once you are successful you start to greatly approve of yourself and look for reasons in your very DNA why you are where you are and then you start marketing that... when really, it was all a lot of luck and people seem to forget that pure chance is the biggest innovator and the bigger part of what they have actually done right is NOT spoiling the success that luck has brought them. There are and were a ton of companies with the same culture, the same great benefits for developers, the same productive environment but you never heard of them and they are gone now.
[+] [-] Evbn|13 years ago|reply
[+] [-] jamesvl|13 years ago|reply
It may be just me, but I can't see the HR department in any state being okay with that. And if it's not for interviews... what's it for?
[+] [-] skystorm|13 years ago|reply
[+] [-] coopdog|13 years ago|reply
[+] [-] SqMafia|13 years ago|reply
#1 reason I won't want to work at Facebook so I can avoid smug, not-so-witty, immature douchebags like the author. With the stock price where it is, I guess FB might have to resort to these kinds of tactics to attract talent these days.
[+] [-] sbochins|13 years ago|reply
[+] [-] utopkara|13 years ago|reply
It is fascinating, that I really want to learn the good things, but I cannot get myself to read through the satire. Normally, I would be able to skim through it; even that triggers a gag reaction. Anybody has the same problem?
[+] [-] thinkingisfun|13 years ago|reply
[+] [-] coenhyde|13 years ago|reply
[+] [-] mda|13 years ago|reply
[+] [-] ojr|13 years ago|reply
[+] [-] xenen|13 years ago|reply
[+] [-] SqMafia|13 years ago|reply
[+] [-] emmelaich|13 years ago|reply
Is there something wrong with me or everyone else?!
[+] [-] bethly|13 years ago|reply