Editor's note: At Meta, thereās a tradition that when you leave the company, you make a badge post: a goodbye post with a photo of your badge, thanks, some learnings, and other sentiments. Here is an abridged version of mine. Note the original audience was Meta employees, particularly engineers or others who work on the FB product.
I worked on the Profile team. Profile is the surface that you see when you go on anyone's user page on the Facebook app or website.
I lose my badge a lot. I have ADHD and often misplace just about everything in my life š¬. After requesting temporary badges every day for three weeks saying Iād find my badge soon, I finally got a new one printedā¦and then I found my old badge the next day. So now I have two badges. š¤¦āāļø
My final day is August 19th, which is coincidentally also my 3rd metaversary. Iāve had an incredible three years here and feel so privileged to have worked here.
This is my (double) badge post.
If youāve worked with me, youāve probably had me send you a wall of text about one thing or another (sorry!). I love writing and write to think & reflect, and I hope youāll indulge me in reading (some of) one last wall of text until we meet again. ā¤ļø
What came before Meta
I started building products when I was 7. First I started making wacky Yu-gi-oh cards and board games, and then later at 11, IRC bots, phpBB and Wordpress plugins, private (not-very-legal) MMORPG server scripts, and websites. This was back in the day when you were pretty much forced to use PHP for web dev and deal with its absurd design choices and Flexbox, React, and Node all didnāt exist yet and you banged your head all day trying to make sure Internet Explorer 6 was working.
The internet has far and away defined more of my life than anything else. At 12, I was a shut-in, video-game-obsessed kid, pretending to do online school and marking assignments complete while logging in as my mom, who was far too busy running around keeping 5 kids afloat. My idols were video game streamers and competitors (like Day9) and my friends were folks on the internet I met playing games. I was not too hopeful of my future, and all 5 of us dropped out of school at one point or another.
Programming made me realize there was more that I wanted to do with my life and became my primary hobby. I went back to public high school for my freshman year, where I was a year older than my peers and behind two years of schooling, but I knew I wanted to build cool stuff and was driven by that!
I didnāt get into a target CS university. Ohio State probably sent at most 4 people per year to FB & Google despite a sizable CS program and massive university. At the time, most folks had never heard of LeetCode and would fail all the big tech interviews š. But I got super lucky and a referral from Dalton Flanagan, my freshman year peer mentor. If not for that referral, Iām certain that I wouldnāt be here.
My primary career goal was to work on people problems at scale ā and I wanted to be a software engineer at a big tech company to do so. My other career goal was to be an effective altruist via starting a Donor Advised Fund with structured giving principles. Working at Meta, Iāve been privileged in being able to to do both. š
What Iāve loved at Meta
ā¤ļø My favorite project: My favorite project at Meta was building out UI & infra for the Frames promotion campaigns for COVID-19 social distancing (2020), U.S. elections voting (2020), and getting vaccinated (2021). About two dozen people worked on the #StayHome campaign; we cranked it out in just 1-2 weeks and these frames became some of the most used frames of all time. Iām really proud to be able to say nearly a billion people on FB saw these frames somehow and it helped some folks decide to stay in or get vaccinated at the height of the pandemic.
āļø My other favorite project: When I started at FB, the web version was a hot, slow, messy pile of competing frameworks and design principles. I helped build out Profile for the new www.facebook.com aka āComet.ā I worked with a ton of awesome folks on Profileās new header, action bar, prompts & banners, and performance, and fixing revert-to-old-FB extensions, old security exploits, Blue-to-Comet migrations, and more. To be able to type āwww.facebook.com/meā and say, āhey, I did [some of] that!ā is pretty neat š.
Autonomy & Freedom: Iāve loved being able to contribute to products outside my direct space, whether thatās dogfooding and giving feedback on Reels or writing diffs for tools my team doesnāt own. Throughout my time at FB, Iāve also had a large degree of influence over my roadmap, coming up with my own projects and how to build them. Thereās an openness and autonomy here that I donāt think youāll find anywhere else. When I was an intern, I built a Chrome extension to address an internal security need. Despite being a regular olā software engineer, I often get to work on product design principles or put on my data analytics hat šµļøāāļø.
Scale: Throughout this whole recruiting process, a ton of companies have tried to sell, āYouāll have so much more scale and autonomy here [at this smaller company] and wonāt be working on a small project.ā Iāve never felt that the scale of projects at FB has ever felt small. Often, weāre deciding between Profile projects that impact 1M people a month to 1B people a month.
People: The people are eclectic, deeply caring, and hard working. The @ Meta employee groups are incredible. Iāve gotten to work with hundreds of people during my time at FB and learned so much. Part of why I joined is because of people like Dan Abramov and the entire React team (and Metaās open source contributions), and Sheryl Sandberg working here and following their work. Iāll deeply miss the people culture: the happy hours, off-sites, ping pong games, and coworker interactions.
Integrity & Social Good: Social products are full of nuanced social trade-offs, bad actors, and complex political choices. I definitely donāt agree with every decision taken, but I know thereās deep discussion and planning for what goes on here and tradeoffs discussed at the social, political, and economic levels and dedicated people working on integrity. When youāre the biggest platform, youāre also the biggest target, and we often forget that there are professional adversaries whose full-time job it is to spam and break FB or mislead or scam users. Somehow, I think Meta still does a pretty good job. Thereās still a long way to go and tons of work in progress, like making a more meaningful app and promoting higher quality content, but itās been pretty cool to see all the work done here ā from the impact of fundraisers & blood donations & frames to helping grow SMBs (small-to-medium businesses) to reducing abuse.
Compensation & Perks & Culture: Not just 6 years ago, I remember going to Aldiās and picking groceries budgeting the calorie/$ ratio, or sneaking into campus dining halls and stashing dozens of chicken breasts and veggies in tupperware containers for the week. Iād almost never go to the doctor or dentist ā which was both a mix of an east Asian upbringing & frugality but also out of financial necessity. To go from that to having free, incredible breakfast, lunch & dinner and world-class health care and being able to financially help my family, Iāve been continuously floored at how good things are (even when things are bad).
What Iāve done at Meta
Hereās some stats about my 3 years here. I write a lot more than I code š¬.
- šāāļø As a full-timer, started on August 18, 2019, longer than 72.6% (98K) of employees.
- š» Wrote 676 diffs containing 247K total and 50K significant lines of code, deleting 101K.
- š¤ Reviewed 1.5K commits (adding a net 284K lines of code), writing 134K words and receiving 1.8K comment likes. I was often told to review less diffs.
- š± Went through 4.5 performance cycles and 1 no assessment, promoted twice (E3 ā E5).
- āļø Had 4 fantastic managers (Olga ā Matt ā Olga ā Dan ā Allison) over 4 renames of the same team (Profile Expression ā Core Profile ā Profile Foundations ā Identity Foundations) and ~3? re-orgs.
- š Wrote 214K words in Workplace through 743 posts, 1950 comments, and 4 notes. This post adds 4K more š¬.
- āļø Edited 474 wiki pages through 559 revisions, reorganizing the entire Identity Engineering and Identity wikis. Most of this was moving stuff around, substantial pages edited is probably <40.
- š¾ Caught 590/909 Pokemon. I like my shiny Flygon the most.
Editor's note: There was a fun script that gave you a random Pokemon any time you'd complete a task!
- š Reported 259 bugs, fixing ~50+.
- š Submitted 8 referrals, of which only 1 got hired. (That one was Trey and we actually worked our last 4 jobs together).
- š Received 270 #thanks from 144 distinct people; sent 343 #thanks.
Editor's note: There was a thank bot system to thank folks who helped you or you worked with a "#thanks @X for Y" message. Kinda odd at first, but helpful to look back on for reflective purposes.
- š„ Mentored 6+ engineers, including 1 intern and 1 rotational engineer (who both converted and stayed at FB!).
- š Played dozens of hours of ping pong and smash bros!
Editor's note: During my time working at the office, I was just seconds away from a ping pong table and a TV setup with a Nintendo Switch for Smash Ultimate. š¤
What Iāve learned at Meta
These are some lessons and mental models Iāve learned here ā written how Iād probably tell myself starting at Meta three years ago.
Everything is a trade-off.
For every product, work decision, engineering or design choice, there are tradeoffs.
Our immediate perspective is always limited in seeing all tradeoffs because it comes with immense bias from our background and beliefs.
Often it helps to go, āFrom other perspectives, what are the pros & cons & other implications of this choice?ā
Perspectives could be: different user personas (young vs old, business vs creator, tech-literate vs new user), goals (raise the bar vs build quickly vs hit metric wins vs best user experience vs developer velocity vs design alignment), or approaches (data-driven, intuition, feelings, values-driven, consensus, mind-mapping, priority).
Then, discuss, debate, and engage with tradeoffs, prioritize, build, and iterate! (This is what design thinking is all about!)
Olga, my ex-manager, used to have me write a list of all the different things I was involved in to help me realize how much I was spreading myself thin. I remember spending a ton of time advocating building a unified recommendations unit (serving People You May Know, Groups You Should Join, etc.) and planning out every detail, but was too spread thin and wasnāt able to pick up the project back up again until recently. The trade-offs were that project would take more time, communication, and direction and be riskier if things didnāt come together, but would win a ton of scalability, reliability, and developer efficiency if done right.
Lean in and step up ā especially when you feel like nobody else is.
During my time at FB, Iāve worn a lot of hats, as a data analyst, product/project manager, product designer, and tech lead at different times. Most of these hats were not presented to me but something I decided to take on, even though I didnāt think I was capable of doing them.
āSuckinā at something is the first step to being sorta good at something.ā ā Jake the Dog, Adventure Time.
Yifei, my skip manager, recently told me, to grow, you should feel like youāre being stretched out of your comfort zone at least 20% of the time. Too much and youāll be overwhelmed; too little and youāll be bored.
Sound the alarm if you feel something isnāt right. Take ownership if you feel nobody else is. Ask for the role and positions that you want and then demonstrate that you can do it, or do this in reverse. Advocate for what you want to build to be added to the roadmap and then build it. Put on that hat and see what you can do with it! š©
If youāre swamped and spread thin, default your answer to No.
Thereās a quote I think about once in a while ā āhow am I complicit in creating the conditions I say I donāt want?ā
Are you often too busy, working extremely hard to pass deadlines, or working on things you donāt believe in? Say no more where possible, and explain the trade-offs and prioritization as to why youāre saying No.
Delay the deadline and fix your future projections. Delegate to others where possible or helpful. Decline the meeting you really donāt need to be at. Deny notifications and unfollow threads that are just noise.
Make decisions that reduce more decisions down the road.
Weāre most effective when we have deep focus and doing the stuff we enjoy and are good at, and when we have the proper time to do them. Often, doing more comes at the cost of quality, deep work & flow, or sanity. Doing less helps us be more.
Often youāll just have to do work you donāt enjoy. Thereās always maintenance or operations work that few want to do. Consider how to solve the problem at scale (at the team, org, or company level) so thereās less of it or itās handled more effectively. Other times, you may have to disagree and commit.
Read, listen, and engage.
Iāve never had a book reading habit as an adult until recently. I think a big part of whatās helped me develop the habit recently is (1) dropping books (or other works) that donāt stick or feel meaningful, (2) listening to audio books on walks and commutes, or reading and listening at the same time, and (3) building a habit via momentum, intention, and reducing friction.
Three of the most important books Iāve read that have helped my programming, mental well-being, and perspectives are:
The Pragmatic Programmer on building principled, engineering systems (book, github summary)
āDespite the best laid plans and the best people, a project can still experience ruin and decay during its lifetime. Yet there are other projects that, despite enormous difficulties and constant setbacks, successfully fight nature's tendency toward disorder and manage to come out pretty well. What makes the difference? In inner cities, some buildings are beautiful and clean, while others are rotting hulks. Why? Researchers in the field of crime and urban decay discovered a fascinating trigger mechanism, one that very quickly turns a clean, intact, inhabited building into a smashed and abandoned derelict. A broken window. One broken window, left unrepaired for any substantial length of time, instills in the inhabitants of the building a sense of abandonmentāa sense that the powers that be don't care about the building. So another window gets broken. People start littering. Graffiti appears. Serious structural damage begins. In a relatively short space of time, the building becomes damaged beyond the owner's desire to fix it, and the sense of abandonment becomes reality.ā
The Obstacle Is The Way on reforming perception, action, and will and Stoicism philosophy (book)
āThere is no good or bad without us, there is only perception. There is the event itself and the story we tell ourselves about what it means.ā
The Courage to Be Disliked on choosing happiness and perspective via self-determinism (book, video review)
āNo experience is in itself a cause of our success or failure. We do not suffer from the shock of our experiencesāthe so-called traumaābut instead we make out of them whatever suits our purposes. We are not determined by our experiences, but the meaning we give them is self-determining.ā
Other book & podcast recs can be found on my website!
Reading or listening to a book, post, or podcast is like surrounding yourself with a mentor. Itās like free (or cheap) access to somebody with thousands of hours of experience in something who spent hours on something to help you learn something! You might not agree with their perspectives & paradigms fully, but you can always borrow them from time to time.
Many human experiences are thematically similar and that includes work experiences. Reading coworkersā Workplace posts and engaging with my mentors & managers ā has helped me grow a ton as a person, product thinker, and engineer. š±
What I feel Meta needs to change
Every good badge post needs a hot take or two, right? š„
Itās totally possible my views here arenāt practical or optimize for the wrong trade-offs and even miss significant context (i.e. I have no idea what Iām talking about and Iām sorry in advance), but I love thinking about and building organizational culture, and thatās why I wrote this and want to discuss this with you. These are forces Iāve constantly felt a battle against during my time at FB and have tried to improve.
Note: when I say āweā here, I donāt mean my team or my org in particular but the entire Meta family of apps.
On metrics
āWhen a measure becomes a target, it ceases to be a good measureā ā Goodhartās Law.
In Hanoi, Vietnam, in 1902, the French government tried to control the rapidly growing rat population and put a bounty of 1c for each rat tail turned in. Rat catchers turned in tons of tails, but the rat population wasnāt dwindling. Instead, inspectors noticed a growing rat population and rats without tails. It was more profitable for rat catchers to just cut off tails and let the rats continue to reproduce, and the program was a failure.
I think the way Meta uses metrics is too often similar to this ā weāre inadvertently cutting off rat tails in our product development lifecycle. Too often, Iāve seen experiments and metrics evaluated in a short-term, isolated way that disregards the larger ecosystem. And in most meetings, I hear about metrics talked about far more than people and user experiences.
Metrics are an imperfect proxy for the actual goal of understanding and improving experiences for users; but often at Meta and in the industry, metrics have become the sole goal instead of the guide.
The idea of data-driven development and incremental A/B tests is that a bunch of small % improvements add up to a fantastic multiplying effect. However, in aggregate, a ton of competing A/B tests, low-quality, bug-ridden products, and abuse of attention levers donāt multiply each other ā they subtract, divide, and cannibalize. Meanwhile, just for the sake of measurement, we thrash users by constantly allocating different experiences to them and taking them away. We keep holdouts for months and years, rarely cleaning them up, preventing users from accessing key features and even bug fixes.
Often whatās lacking at Meta is putting ourselves in our usersā shoes and creating a culture of user empathy and delightful experiences. When weāre so directly focused on moving growth metric ABC or XYZ at all costs, we forget that users and user experiences are who and what matters. UX research, design disciplines, and product specialists are amazing at thinking about users over metrics. We should listen to them some more! š
On systems and Minimum Viable Products (MVPs)
We build far too many rapid MVPs and solutions. We focus too much on charging straight forward on short-term metric goals instead of building great systems and products. MVPs are supposed to be used to validate whether itās worth investing more in a product by getting early signal, but then we quickly move onto the next MVP and leave the last one in shambles, saying, āweāll fix it later.ā Years later, weāll eventually deprecate that poorly used product that never thrived because it was never worked on past the MVP stage and is full of bugs and tech debt.
For most products, I think what makes them delightful and gets users (especially gen-Z) coming back isnāt just because of an existing social graph or a product idea but because of details and execution past the MVP stage. Itās the reliability of every interaction and use-case, the invisible product & design details, and gratifying content algorithms. Itās the delightful connections between people and products, built by consistent product quality and empathy.
Meanwhile, building lasting engineering systems as opposed to one-off product work costs extra initial time and expertise but reduces cost of onboarding, maintenance, and improvement. Systems are far easier to document, to onboard to, to understand, to iterate and improve, because you donāt need as much specific product context and each component is logically developed. The Pragmatic Programmer is a great book on building engineering systems.
I believe strongly that folks should focus on building delightful, principled products and engineering systems instead of short-term experiments and MVPs, and have tried to do so in my projects here at FB.
If there was one wand I could wave and change something about Meta, itād be for the product and engineering culture to shift to do less, better, and focus on quality over quantity.
I know many of these things are actively being worked on at every level. I deeply believe in Metaās capacity for good and I know Profile is being left in very good hands! Itās up to yāall to keep sounding the alarm and to drive change. Hopefully adding extra signal and food for thought is helpful. š±
Whatās next?
After Meta, Iām moving to San Francisco to work at a startup called Notion!
The biggest motivation is adventure and curiosity. Iāve known since I started at FB that Iād go try something new & smaller in a few years, and now itās about that time. Iām excited to work in a new product space (productivity) on another product I use every day.
Iāll miss yāall tons! Profile & Meta has been an amazing ride and Iām so glad I landed here. Thank you to all of my managers and mentors whoāve played an incredible role in shaping me as an engineer and person: Olga, Matt, Dan, Allison, Mitchell, Yifei, TJ, Bobcat, Jeff, Devesh, Kristine, Harrison, John, Dalton, and Warren. There are so many others Iād shoutout and thank but canāt fit them all in this note. Thanks to everybody in Identity and Meta Iāve worked with in these past 3 years ā for challenging me, supporting me, and making this journey so special. ā¤ļø