Here are some things I learnt during my career in Facebook, and think could benefit someone new to the field.
As an engineer in Facebook, you have a great degree of freedom for managing your time, and you’re mostly judged about the “impact” you provide.
Ordered by decsending order of importance, these might help you make more of the time you spend working, thus increasing your “impact-to-effort” ratio.
Keep your diffs (or PRs) small. Makes them easy to read, easy to test.
We support stacked diffs, so you can submit multiple commits that make one change, but have each commit reviewed separately.
Have a pool of things to do, so when you’re blocked on one because of some external element (e.g. waiting for someone on the other side of the world to review your work), you have something else to progress on.
When you get blocked / finish that, you can check if your original task is suddenly unblocked.
Prefer investing in things that are impactful now.
There is no use solving a problem now, when that will only arrive in 1 year, since the requirements might shift.
Timeout and escalate
If you’re stuck on something for a large amount of time, escalate to an adult. Don’t sit for a week on a problem when it can be solved in 1 hour by a veteran.
If you time out too quickly, they’ll let you know.