Hacker News new | ask | show | jobs
by PragmaticPulp 1684 days ago
Thanks for the inside perspective

> Couple this with a culture that has masterminded a set of carrots and sticks that gets people to push themselves very hard all of the time, I’m completely burnt out.

Can you say more about the work/life balance?

I've heard Facebook's work life balance described as everything from a cushy "engineer retirement home" to a grueling crushing workload that few can handle.

Obviously FB is a big company and it can vary from one manager to another, but I'm interested in hearing more of your perspective.

4 comments

Obviously it’s a huge company with thousands of teams, but I’ve been an engineer on 3 different product teams and certain things have been the same everywhere.

I would say purely from a coding perspective the workload is typical ~40ish hours a week. The stress comes from the biannual performance reviews that grade you explicitly across 4 axis.

If you got your projects delivered on time with high quality code that’s just 1 axis. What did you do to improve the codebase? What did you do to help drive the mission of the team? How many code reviews did you do(they count)? What did you do to improve the team culture?

I think these things are all important, but everywhere else I have worked a lot of these are more implicit. At FB you need to have bullet points and evidence of these contributions every 6 months to get a satisfactory rating. Couple this typical giant corporation red tape (legal, marketing sign off, metrics reviews) to getting anything released.

Some people seem to not have trouble keeping up with it, but I find it exhausting. I’ve gotten good reviews during my employment here but it’s been grueling.

> How many code reviews did you do(they count)?

A friend who works at Facebook was telling me recently that since he gets judged explicitly on the code review count, he feels like he needs to immediately drop everything when a code review comes in so he can get to it before someone else approves and it gets merged. As you might expect, he finds that very disruptive.

Well, what would happen if everyone prioritized writing code over reviewing their coworkers' code?

Since junior engineers and new hires are not yet able to review code effectively, senior engineers end up reviewing a lot more code than they write.

I think recognizing and rewarding this behavior in performance reviews is entirely reasonable for any tech company that wants a sustainable codebase.

The problem isn't that code reviews get recognized and rewarded, it's that once a change is merged you can't review it, so people "race" to review changes before their colleagues get to it. That's not a healthy system. It's better to let people manage their time to promote flow, letting them batch up code reviews at a certain time of day if that's more effective.

I'll just add that nowhere I've worked has counted code reviews in this way and they still get done, so it's not a disaster when you don't officially penalize people for their review count.

Those extra axes seem easy to fake. Just "review" all code reviews you see - takes 5 sec per CR and your metrics skyrocket. Mission of the team? Write some bs docs with vision and ideas: nobody needs them, but you get to mark the checkbox. Team culture? Say you've organized a book reading club, even do a couple meetings - just bring a book there and mark the checkbox. Books don't actually need to be read. Want to score some diversity points? Say your book reading club studied "white fragility" - nobody is going to verify you havent and nobody really cares, but you get to mark the checkbox.
That wouldn't fly at FB. Doing busywork without producing impact doesn't count for anything. And CR comments are reviewed by managers - a bunch of LGTMs doesn't add up to much. It might unblock the team, but the goal is to uplevel the team, so meaty comments that impart knowledge are searched out.
I would have thought that people would start doing smaller and smaller change requests, collaboratively enabling each other to do more and smaller & quicker code reviews

True teamwork

What's the incentive for those managers to take you down like that? Even then, you can write prose in comments - semi-related thoughts that are very difficult to distinguish from actually valuable comments.
The incentive is the calibrations where the org leaders get together to compare notes and align on scoring. A manager who's not aligned would not only see their reports' scores forcefully shifted, but their own performance as a manager would be seen in a more negative light.
This sounds like some different version of hell to me.

But hey, if you can make it work - and it sounds like you do - then all the power to you! :) I must admit I do like seeing the middle digit you're raising in their direction there.

(Edit: Even though CRs ought to be taken seriously, for the sake of your fellow engineers).

Goodhart's law in effect.

I once had a job where a portion of our bonus was related to an automated code quality score. Needless to say, we reverse engineered the algorithm and scripted the (pointless, probably slightly harmful) changes to the source to maximise the score.

What did and didn't the score algorithm like?

(Did you reverse eng it during work time :-))

There were several components, but the parts that were I can remember were gamed were code duplication - someone figured out the minimum number of matching lines required for it to be detected and made minor changes in the middle of blocks - and number of imports. The penalty for .* imports was quite low, so we just ended up with wildcard imports everywhere.
Ok :-) I'm surprised they were looking for duplicated code, interesting
I feel like a lot of the anxiety around reviews is an unquenchable thirst for more. My understanding is that if you just meet expectations you get 100% of your bonus. If you're happy with your salary alone (which is probably higher than 99% of tech companies) then why get stressed?
Meeting expectations is a pretty high bar to start with. The next lower rating (Meets Most Expectations) is a cause of stress because two of those in a row frequently results in a PIP at Facebook.
I worked at a FAANG (not anymore), and my spouse and many of my friends still do.

There are two ways to do FAANG (very generally). You can care about promotion, or you can not. If you do care, then it's competitive and stressful because perf reviews (and often politics) will determine your fate. If you just want to cruise and have a cushy job, you can do that too, but just accept that you either won't get promoted (or will get promoted very slowly). You may have to transfer to a team where that's easier to do to get away with it, but it's very doable.

(There are some exceptions. If you go in at a very high level, the level expectations will be high and you still have to meet them. That might be what happened with the parent commentor, given the expectation to have broad impact)

The correct way to do it, if you can, is, quite obviously, #2. The comp differential that comes from "career" isn't life changing, but the stress that comes with that comp differential is very real and damaging to your relationships IRL, your family, and yourself. And even if you coast, you'll still be paid better on income/effort basis as well as in absolute, compared to the vast majority of non-FANG companies.

As rational and verifiably correct as that strategy is, I can't do this myself though. I either care about the things I do, or I don't do them at all. I feel as though my age might solve this issue.

How might the age solve the problem? (Retirement maybe?)
You learn not to give a shit and realize work isn't all there is to life. IOW you develop a more balanced, informed world view. You also learn to not do stupid shit, which saves a lot of effort.
Aha, age, as in life experience :-) I think I understand & agree, also about the stupid shit
Age happens to be the only way to obtain life experience, unfortunately, although the reverse is not true - a lot of people never actually learn of the deeper issues in their lives in that meta-cognitive way. Some just keep doing things more or less the same way they had done them when they were 20. That is a recipe for much regret on one's deathbed. One thing that helps profoundly to understand one's life in a deeper context is raising kids. You see exactly what you were at any given age, and you see the shortcomings (and sometimes advantages) of behaving that way. So you learn much more effectively. It's not the same if it's someone else that you can't observe 100% of the time, without a "facade".
I work at FB right now, and one of the more stressful things are the timelines for promotion. I think you have a year and a half to go from New Grad to E4, then 2 and a half years to go from E4 to E5. If you fall behind on those timelines, your performance reviews just start getting measured against E#+1 until you either get promoted or more likely fail. A lot of pressure is placed in those early levels to get promoted quickly and efficiently, with not a lot of opportunity to coast. As someone who's very ok with the compensation and responsibilities at E4, I don't really want to get promoted and it's exhausting. It means that "meeting expectations" isn't enough. I need to be exceeding expectations so I can prove I'm working at the next level. This often involves seeking out ambiguity for ambiguity's sake and making projects unnecessarily formal.

The other main "issue" is how incentives are structured, although this one seems to be working as intended. By focusing so heavily on personal performance and impact, Facebook can pretty reliably delegate project planning to their engineers in a bottom up fashion. Engineers will then adjust to ruthlessly prioritize only the most impactful work on the team. Velocity also gets highly prioritized. You don't have to assign many tasks, since engineers are afraid of the mythical "poor performance review". This leads many teams to feel chronically understaffed, and bad for choosing impact over polish on many projects. The flip side is that if your team is overstaffed, it's a struggle to find enough meaningful work to get more than a meets expectations (which may be too low depending on what level you are).

I have never heard of Facebook described as anything like "engineer retirement home". Google, yes, but not FB. When I was there, poor work life balance was everywhere - from individual contributors to managers, from engineers to product managers to all other cross-functional partners, from juniors to senior staff levels.
How many hours per week did the poor balance people tend to work?