What I Hate About Working At Facebook
worldofsu.com
worldofsu.com
"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"?
If you watch velocity on individual components, you'll probably see sub-linear scaling as Brooks predicts.
How could that even be possible?
Based upon the public statements about their build system and their revision control system and pain when trying to put it in Git I would be confident in saying that is false and that the source code is one big intertwined ball and no separate components.
Edit: Also based upon the way they treat public API which is always better than internal API even if they had internal separate components one could only imagine the horrors of api design (or lack of) you might find.
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.
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
What makes you think Facebook doesn't design and test code, or that the other concerns don't apply to them as well?
> 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.
(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.
It's very difficult to hold meetings that only interrupt employees for 11 minutes. In addition to this, emails are async so they have less interruption overhead.
So being able to write very well is important, it's a very underrated skill in many companies.
There's a big difference between "no meetings ever" and this.
After too many days of back-to-back meetings from 10am to 3pm I've taken to creating a repeating lunchtime meeting with myself. Then I discovered the people who don't care if you're available or not...they consider themselves important enough that you'll drop everything for their meeting.
In this case, I'd say there's no/negligible cost to missing the meetings on a no-meeting day, unless the entire group of people have decided that it is worth breaking the no-meeting rule. Of course, you should let people know that you won't be there in advance...
I think it's largely a knee-jerk reaction against bad meetings - hour long no-point crapfests - but they don't have to be like that.
1) They are as small as possible, typically including just 2 or 3 people.
2) Are always optional.
3) Typically last around 15 minutes.
It helps to have plenty of space/rooms where you can just pull someone aside to hash out a quick issue, and a mature, responsible team that doesn't need baby sitting to get stuff done.
I think everybody's goal should be to make meetings as small as possible. If you don't know why everybody there is there, then either they're redundant, superfluous, or lost.
One thing I like to stress in my meetings that I run is that everybody knows why they are there. Even if that's just to listen. Too often, people think that because they were invited to a meeting, they need to say something. This is what generates hour-long bullshit meetings. Sometimes, you just need them to shut up, listen, and take notes.
I've found that if, when you set the meeting, you send a note to them after the invite with, "Hey, I know you're busy, but I'd like you to listen in on this so you understand what's being discussed. I'll get your feedback on it after the meeting." Works wonders and keeps meetings short.
Some meetings useful, even helpful. But holding a useful meeting is not easy, which means there are many bad meetings. And that's what we should all avoid. Not meetings all together, but bad meetings.
I've been to great meetings that were facilitated well and had clear, productive goals. Those we should keep. And fortunately, when meetings are productive, there don't need to be as many of them.
But those hour long no-point crapfests, yea, no one needs those.
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.
(always avoid double negations)
This becomes apparent when you create a truth table for it:
!meetings != !communication
meetings | communication | expr
F | F | F
T | T | F
T | F | T
F | T | T
This is the same truth table one would get with "meetings != communication" so they should be logically equivalent."Meetings != communication" is analogous to saying "At meetings, communication doesn't necessarily occur."
In terms you would personally appreciate: (No Patrick Hernandez != No Dancing) similarly is not equivalent to (Patrick Hernandez != Dancing)
One says without Patrick Hernandez, there may be dancing. The other says with Patrick Hernandez there certainly is not any dancing ;-)
In short, I believe neilk should have used => instead of !=. Or just plain english. ;-)
We're not dealing in language, formal symbols exist to remove the ambiguity of language.
Plain and simple, the symbols used don't mean what the poster thinks they mean.
Jackalope.
If you read the above as anything other than a nuanced and well reasoned response thats your mistake, not mine.
neilk incorrectly used a comparison operator to try and point out the logical fallacy known as affirming the consequent. But thats not what was said.
At least thats what I think is happening here. I can't be sure because instead of using logic symbols they used symbols that are ambiguous at best.
As it is, it's just another geek trying to get attention.
Jonathan Swift (http://art-bin.com/art/omodest.html) is crap in comparison to this work of masterpiece (AKA "why I love my job").
As it stands, the satire is both obvious and contrived.
jamesbritt: I've heard of people losing their flag priviliges because of 'abuse' whatever that is
If so then there's a serious flaw in that kind of strategy since it erodes counter-balances.
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.
To me it seems like a passive-aggressive jab at those who complained about working at facebook, and left.
"It's just a joke" is just a lame way of saying something, without anyone being able to actually call them on it.
And to call this stuff satire is kind of extreme, too? Let's ignore the lameness for a sec: what, exactly, does it make fun of and shed light on?
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.
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.
If Zuckerburg is still playing a part in engineering, he should be the CTO of the company, not the CEO. Having a business minded person person holding the reigns of a company can help the shareholders, otherwise the stock price will have a good chance to continue its descent.
Oh, except for one making fun of said poster.
> "3. Mark Zuckerburg doesn't have great social skills/intelligence. Which wouldn't be a problem, except that he runs a giant social network."
I'm not calling you out for stating this without supplying the supporting evidence. I'd just like to know what you do. Is it with respect to his business missteps, or is there something else you see?
As a Python enthusiast who works in a N-hundred kLOC PHP codebase for a living, I have to say large PHP codebases aren't really a problem if they were written by competent people who took the time to think ahead a little.
Sure, PHP has it's deficiencies like any other language, but my day-to-day experience is more along the lines of "I dislike not having <feature that's somewhat unique to Python>"; I don't find myself thinking "wow, I hate PHP, it's such a terrible language and makes my life miserable!", as many people are prone to think with PHP.
PHP may not be your favorite language, but in good hands it's a perfectly workable language, and IMO its use should be a small factor in where you work.
That would be great...
Some advice, you could go out of Western countries and see how people live there.
Facebook has not yet exhausted mobile.
I'd also think commits are not a productivity metric.
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.
It's not like you can search for people with common names, or organize your own profile in any meaningful way, or search it. You can add stuff to the stream and that's that. I remember when they rolled out the timeline, and what a joke that was/is..
I get it, scaling is hard. Do you get that scaling is only required when stuff is completely broken? If facebook was a protocol and free code, there would be no scaling problem, there would just be a lot of servers. So yeah, they don't fucking understand the internet and like money, so they create problems for themselves which they then solve.
Awe-inspiring! That still leaves us with a set of features no CMS would be caught dead with.
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.
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.
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.
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?
Not as bad as a casting couch or a swimsuit competition, but still bad. Obviously, indisputably bad. I just hope that part of the article was not inspired by truth.
See the photo album: https://www.facebook.com/media/set/?set=a.10151055286951458....
There is a fully-working hot tub in the New York office that interviews are conducted in. I didn’t believe this until I saw the photos on Twitter. It was billed to me as a way to test candidates’ resilience under pressure. I was told that it’s used rarely...
...
I installed a hot tub (non-functioning) as a conference room in Facebook Seattle. Interviews are never done in them.]
Philip Su, the blog author, installed the (non-functioning) hot tub and was joking about it being used for interviews.
To be completely sure, I contacted the author and will post another reply when he verifies what's actually the case.
#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 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?
Is there something wrong with me or everyone else?!
Also I must say that as a daily Facebook user I haven't noticed most of these "thousands" of features being launched. They must be exceedingly subtle features or else they bundle them up for an annual release (which is actually a good idea).
In my experience, companies that fight to boost their stock prices in the short term end up making them plummet further in the long run. It's the companies that have the restraint to accept a loss in order to build toward a bigger reward that end up changing the world.
Look at Apple. They used to spend so much money on R and D that their stock prices were miserable. But shit, they got the iPod out of it, and look where it took them. If they had instead tried for short term profit, they probably would have ended up putting out another garbage iMac. Or a Zune.
And finally, you can't be so shortsighted as to overlook the impact of encouraging creativity an freedom. If you force beaurocracy on your employees you might end up getting more done at first, but as they start to lose the excitement that comes with being enabled and excited by a company that believes in their ability to be autonomous, the quality of their work will start to decline.
Short point: don't play devils advocate just because all your peers are stoked to work for Facebook. And especially don't do it to get hits on your blog.
True story, two weeks ago my team launched a feature and decreased latency. We hunted for an explanation and finally found out that some code that blew away our feature was launched coincidentally at the same time. It was a pretty unlikely scenario, and we have controls designed to prevent it, but it happened anyway. I wonder how many collisions like this Facebook will have to deal with as they expand.
I would vote for free healthy food though.
No way this is real:
The food is too good. What’s wrong with good food? Well, here’s what’s wrong: there’s too much of it. Three meals a day. Free. Cooked by award-winning chefs. And too many choices: salads, entrees, desserts, vegetarian food, soups, whole grains, usually a second dessert, organic stuff, barbeque, ice cream, fresh-squeezed orange juice. For someone like me with zero gastronomic self-control, this supposed “benefit” or “perk” is a complete disaster. Why doesn’t the FDA step in?
- Some of us have to pay for our food by the way, all three meals, so if you would kindly save the complaining (and grab seconds).
But also the bit about how it's code, code, code, ship, ship, ship, long-term product view, the engineers are involved, the company looks for innovation with the hack-a-thons. I do think it's mostly sarcasm. And with that, disclaimer: I could be wrong =D
Not surprised.
Not sure it was executed as best as it could.
Maybe this is one example of something that should have been 'peer-checked' before pushing to production.
Just saying.
The stock has been sliding in recent months. This sucks because stock options granted to people being recruited now will have a higher potential upside than similar grants made around the time of the IPO. New recruits should be the have-nots on the totem pole.
Though I'm also wondering if the whole thing is supposed to be tongue-in-cheek (if so, I'm barely getting it).
#3 "Zuck is too involved" states that rather than planning the long-term strategy of the company, the CEO should be "pumping up the stock price". and #4, too much focus on short-term.
That is the problem with most other companies, too much focus on short term, not thinking long-term about the company. A CEO's job is not to promote the company to investors, it's to move the business forward. That is done through products and marketing, not by 'pumping the stock price'.
that might actually be bad - eating too much has been shown to be detrimental to the health of a programmer who hardly moves all day...
Is he complaining that he's getting too fat from eating at Facebook's buffet?
> 4. Do not introduce banner ads that’s moving waaayy backwards...
Nothing against that. Also I find it a good thinh that he's still involved in the products ...
But what good products does he think does Facebook make? Quality does not really come to mind when I think about Facebook. This is common among my peers too. To us Facebook is the place where soccer moms get ripped off by clicking on pixel cows.
That's also why I'd never work for them. It's something my hacker honor wouldn't allow.
- "building great products" - "solving interesting problems" - "changing the world" and/or "transforming the way people view/do X"
It's pretty obvious they're just repeating what they learned in sophistry class. Or to paraphrase Zuckerberg: "they actually mean that. dumb fucks."