Home

Meta

Menlo Park, USA · Feb 2024 – May 2026

Despite a lackluster labor market since 2022, hiring activity picked up briefly towards the end of 2023. I was lucky to have joined that wave and ended up with a few offers to choose from. I was ready to explore Big Tech, and Meta was about as big as it gets, so I signed up.

Meta’s stock had a big surge in January 2024. To maximize my RSU grant — which was calculated based on a price window just before joining — I rushed through team matching, joined the first team I talked to, and caught the last onboarding group in February 2024.

The Work

Software Engineer - Wearables Productivity & Infra (Feb 2024 – Mar 2025)

Python Hack Buck JSON

In true Meta fashion, the team I matched with went through a re-org right around the time I joined, and my official manager changed three times in my first month. When the dust settled, I was happy to land on the team maintaining the CI/CD pipeline for Meta’s Wearables products (e.g. the RayBan Meta glasses and more), as I had worked on internal tooling and was passionate about developer experience.

After a few taster projects for my onboarding, my manager Neil introduced me to a large migration project that had not been progressing smoothly. As teams from multiple programs were re-orged together, a tech lead was needed to consolidate their respective migration efforts, and I was happy to step into it.

I didn’t know at the time, but this migration was a bit of a hot potato, as it had high complexity and uncertainty but lacked clear motivations or rewards. I just put my head down and got to work. I quickly put together the holistic picture of its current state, identified the areas that needed work, made plans, and started executing, while transparently communicating the progress and the challenges. Along the way, I helped rebuild some of the trust that was lost with the partner teams.

We made meaningful progress for the migration by the end of the year, but my limited knowledge of and interest in the device code meant that I’d never be able to connect the dots end-to-end and develop a bigger vision of what we were building.

Despite getting an “Exceeding Expectations” rating at year end, I wanted to work in an area where I was familiar with more of the stack.

Software Engineer - Facebook Search (Mar 2025 – May 2026)

C++ Hack Everything else is custom

Facebook Search was going through a phase of rapid growth, as an ambitious proposal — which included a good amount of headcount — had just been approved and funded by leadership. I spoke to the managers of a few teams here, and felt excited about the opportunity on the Retrieval team, where the work was focused on picking more relevant & engaging results from Facebook’s huge inventory of posts based on the search term.

The reality was a bit less comfortable.

As soon as I joined in the middle of H1 2025, I was tasked with collaborating with the Threads team and bringing some of the more state-of-the-art search technologies from Facebook to it, as my onboarding project. It was meant to be relatively straightforward, as the deep layers of Meta’s infra meant that the implementations were largely simple configuration changes. However, we underestimated the many nuanced product & usage differences between the products, and the changes required many experiments and iterations to get right. Compounded by the internal tooling differences and the slow feedback loop of having to wait days to see A/B test results, the project took all the rest of H1. Despite hitting the official goals, it took a lot of the fun and energy out of me.

I talked to my manager Devin about the struggles, and we worked out a better plan for H2. On the capacity savings front, Chun-Ho had a great idea of caching some retrieval results, which I took on to execute. The idea was simple, but getting all the way to launching it took many rounds of implementation → experiments → review cycles, and some of the reviews had what I felt were unnecessary pushbacks. Even after launching, this change was mistakenly suspected for a number of incidents, which all fell on me to address. The launched version ended up being a lot more conservative and didn’t yield as many savings as it otherwise could have.

On the product front, I took the simple direction of “Personalization”, did some research, expanded it into a fully scoped roadmap, and convinced a couple people to work on it with me. Despite only starting in August, we quickly got into a cadence, forming, validating, and testing one hypothesis after the next, and launched a few valuable changes. However, possibly due to noisy metrics, or possibly due to the launch of a few big features in other work streams, the overall effect of the personalization effort did not show up nearly as strongly as the individual changes suggested.

The only work that I felt a little more in control of was helping to reduce a number of models’ peak inference failure rate from ~10% down to <1%. This was a pure system-level debugging exercise that I was able to get through with high precision & confidence. I suspect this was also the work that got me scraping by a “Meeting Expectations” at the year end.

Exit

After two full years on two different teams, still feeling like I couldn’t contribute as much as I thought I was capable of, I took some time to explore external opportunities during my second parental leave. I got lucky again on the timing, and received an offer from Anthropic that was rather difficult to turn down, so I accepted it.

At Meta, it’s customary to write a “Badge Post” (posting a picture of the badge, hence the name), prior to departure. Here’s the first part of what I wrote.

Badge Post - a bittersweet end of an underwhelming journey

In all honesty, I don’t feel like I’m deserving of a badge post.

Every day, there are people leaving, and many of them just walk away. Somehow I always felt a badge post was like a hero’s farewell - you’ve got to have done something special to deserve it. And I haven’t.

Sadly, this is the sentiment that epitomized my two years of struggles at Meta - a constant feeling of not being good enough.

For a multitude of reasons, I never truly felt comfortable.

On Wearables Productivity & Infra, being a complete novice in Android & firmware, I wasn’t able to effectively connect & collaborate with the customers we served. The project I worked on had to be done for historical reasons, but was, at times, difficult to find convincing motivations.

On Search, I got stuck in the trap of farming incremental metric improvements based on noisy signals, without deep understanding of either the search domain or the system. I wasn’t able to get myself involved in a more systematic, transformative project, yet experiment reviews frequently felt as exhausting as a Ph.D. thesis defense.

The domestic challenges of a toddler transitioning to day care, the health and social implications that came with it, meant that I was rarely at my full tank of energy at work.

I don’t know exactly what burnout is, but this feels pretty close.

As a result, I found myself seeking comfort in a more familiar environment in the startup world for my mental health, and May 18, 2026 will be my last day at Meta. I’ll be in the office and open to chat - BUR in the morning and MPK-20 in the afternoon.

Takeaways

People