succeed plateau FIT scat

That was my password at Meta. It told the story of my time there. Amazingly though, this is not the first time this sequence of events has happened to me. Even more amazing is that the exact same players were involved this time as last time.

In the summer of 2006 I joined Microsoft as an intern for a project code-named Oslo. 6 months later I would join as a full time employee in my first job after college. I thought this was a dream job. It was being lead by the creator of Visual Basic 1.0. My colleagues were nerd famous names, at the time, like Don Box (Author of Essential COM the definitive book not he subject, as well as major contributor to .Net) , Chris Sells (Author of many books on .Net), Tony Williams (Co-Inventor of COM), etc.

There were two problems though. The team was filled with brilliant minds from Microsoft Research. But coming from an academic setting, some focused on theoretical aspects that weren’t always relevant to building a product. Like theoretical software development technologies/methodologies such as Aspect Oriented Programming.

The second issue was that my role changed between the time I was an intern and a full-time employee. I went from working on the product itself to being asked to setup all of the performance testing for the project, which I didn’t have much interest in and I didn’t have the skillset for being a new college graduate.

In order to do performance work, you need to know A LOT. How does the windows scheduler work? How is memory shared between processes when they load the same DLL? x86 is non-deterministic, how do you average out the latency?

I did not do well on that team. I mentioned to my manager and my skip that I’d really prefer to be working on the shipping product and that if any opportunities arose to do that I’d love to move.

Eventually we needed something from the Visual Studio team, and we couldn’t get it because they didn’t have any bandwidth… unless we wanted to give them a few engineers. They sent their two lowest performing engineers. Myself and a friend of mine.

I LOVED working on Visual Studio. I was on the Visual Basic team working on the 2010 release. As my first project I was asked to fix something about the language that had been bothering me for years. Remove the need for the _ line continuation character from the Visual Basic language. I couldn’t believe my luck!

I enjoyed the new team and the project, I was performing well. But oddly I was still technically reporting to the old team even though I never really talked with my manager anymore.

Near the time of the annual performance review, the engineering manager for the VB team offered me to transfer to his team. I was young and naive and said I wanted to wait until after my performance review “to see if my old team would do the right thing”. Narrator: they didn’t. I got a bad review again even thought I was crushing it.

This all becomes important because for the first time in their history, Microsoft did layoffs. I had, shortly after my performance review, asked the VB Engineering Manager to transfer to their team but I was too late. There was already a hiring freeze in place and in January 2009, I got laid off.

I was pretty devastated, angry at the people involved. It shook me to my core because being a technical operator at that level was core to my identity at the time.

At Microsoft I made many mistakes, and while it took time I thought I eventually had learned the lessons of my time there.

Fast forward 15 years

I’ve joined Meta as an Engineering Manager. When you join Meta you actually have no idea what team you’re going to join. Everyone goes through the hiring process and then after they get an offer they do team matching/selection. It’s a cool idea! Although it made me anxious because of all the thing Meta works on, I was really only interested in Reality Labs but had no idea if they would have any openings.

Turns out that after a bunch of conversations with other teams a team from Reality Labs did reach out and that’s the one I joined.

Unbeknownst to me at the time, it was basically the exact same scenario I had landed in at Microsoft all those years ago – with the exact same cast of characters!

Don Box was once again heading up a research and development project destined to become a product (Orion). My former manager on the VB team was around leading up the internal development team for Hack.

A year in I recognized that the way we were doing things was unlikely to yield a working prototype. I had been in contact with my former manager and ultimately made a pitch to join their team as an individual contributor so I could learn the infrastructure I was working on first hand and add valuable tooling to Hack.

I thought the lesson of my time at Microsoft was to be more decisive in switching teams, so this time I switched quickly – and 1 month after being on the team, I was laid off as Meta did its second ever round of layoffs.


I still cannot believe this happened twice, spaced 15 years apart, with the same group of people.

I’m not a particularly religious man, but the idea that “God gives you the same challenges over and over until you finally learn the lesson” was definitely ringing in my ears.

It seems that the lesson wasn’t move faster or be more decisive, it was “fight when you’re right“. This time the layoff didn’t make sense to me and I knew it had to be a mistake. In fact there was only a single mistake in all of this that likely lead me to being laid off by a SQL query.

When I transferred teams I was also transferring roles from EM to IC, but we forgot to make that switch when doing the transfer. Normally this isn’t a big deal, you just put in the request after and it all goes through no problem. This time we kept getting blocked/timed out somewhere in the process that didn’t make sense. So I was now an engineering manager with 0 direct reports.

Hypothetical layoff algorithm:

SELECT e.EmployeeID, e.Name
FROM Employee e
LEFT JOIN Employee sub ON e.EmployeeID = sub.ManagerID
WHERE e.IsManager = 1 AND sub.EmployeeID IS NULL;

Sure enough I was eligible for re-hire, and so I went through team selection again and found another role.