Observations from Outside Meta
This article is a collection of observations from the point of view of an ex-Meta (formerly Facebook) engineer of 14 years who is now working in other companies.
It will evolve over time as I work in different places and observe how things are done differently.
The good
-
Fast compilation time: Where I am now, compilation times are very fast. At Meta, building binaries often took a long time — 20–30 minutes from cold cache. Here it’s more like 1–2 minutes. This is a huge productivity boost. Monorepo and huge C++ dependencies really slow things down and produce multi-gigabyte statically linked binaries. That made building OS images and ramdisks painful and slowed down provisioning.
-
Open Source Ecosystem: It’s refreshing to work with widely used open source solutions instead of internal tools. Being in a closed ecosystem for a long time is not good for your career. Many internal tools have external counterparts, but using projects like Kubernetes, ArgoCD, Grafana, Victoria Metrics, and NetBox means I can:
- Find solutions and troubleshooting tips via public documentation and community forums.
- Contribute back to the community and share knowledge openly.
- Apply my learning across different companies and contexts.
- Leverage the collective experience of the industry instead of being limited to internal knowledge.
While Meta’s internal tools were powerful and purpose-built, working with open source tools makes knowledge more portable and collaborative.
-
I am enjoying Slack but I miss Workplace groups: Believe it or not I am enjoying Slack — it’s more responsive than Workplace Messenger and the integrations are great. I do miss Workplace groups, though. I feel like
slack
is too synchronous; I should try to treat it more like an async tool and use features such as saving threads for later.
The bad
-
I miss stacked diffs, the internal review flows, the internal Meta
hg
fork. I’m doing okay usingjj
, but GitLab has no official support for stacked merge requests. There is an experimentalglab stack
CLI I need to use. The diff reviewing experience is not on par with Phabricator. -
I miss monorepo: Finding and searching code is harder across multiple repositories. I also miss being able to make cross-repo changes in a single commit and the ability to perform large-scale refactors across the codebase.
-
YAML everywhere!: YAML on k8s manifests, YAML on CI/CD pipelines, YAML on config files, YAML in Helm charts, YAML in Ansible. I miss
configerator
(aka configuration as code). -
You miss a lot of internal tools, but the xfb2xfb github repo helps!
The same
- OS/Images build times: Building images is still slow, just as it was at Meta.
- Timezone differences: I don’t think I can get rid of that, it’s just the nature of the work… Still need to work on raising awareness about TZ differences and TZ etiquette.