After a little over 11 years, it’s time for a much longed change: I’m leaving Google and I’m joining Microsoft as a Principal Software Engineer 😊 for Azure ☁. These job changes are effective as of this week, but my family and I already moved from New York City to Redmond, WA about three weeks ago.
Read on for a recap on my tenure at Google, the whys behind my departure, and how I ended up choosing the position in Microsoft Azure after mulling over offers from Facebook, Twitter, and Microsoft.
UPDATE (Oct 28th, 2020): Make sure to also read my follow-up post on the interview process with all of Facebook, Twitter, and Microsoft!
Quick recap of my 11 years at Google
My journey at Google has been long and, in fact, represents my whole professional career so far. You see: I was a proud student of the Google Summer of Code program for three consecutive years (2005–2007); I was then an intern in Google NYC (2008); and I was then a full-time employee in Dublin (2009-2011) and in NYC (2011–2020). Overall, that’s 15 years tied to this company in one way or another—which isn’t intrinsically good or bad, but is something I hadn’t been satisfied about for a few years now: going back to my own retrospective at the 6-year mark, I see myself already bringing this concern up.
During this long period, I was in three different storage-related SRE teams and then spent the longest time in the Bazel team as a Software Engineer (SWE). The first 6 years went into SRE roles and the other 5 went into SWE. Of these last 5, the last was spent being the formal Tech Lead (TL) of part of the Bazel product.
There are two things that I think are interesting to highlight about these role changes.
The first is everything I learned through my SRE work: I think that the experience I gained by being in this position was invaluable in understanding how Google works and making me more effective in my time as a SWE. Additionally, the skills gained as an SRE were key in doing well in the systems interviews I went through.
The second is around gaining the TL bit. The TL title at Google is honorary: it has no ladder value and, as everyone likes to say, “it is just a title”. But, honestly, in my case, being put in that position made a huge difference. Not because this gave me any authority, but because this made me feel much more responsible for my own time and deliverables, and also for the well-being of my team. I definitely started behaving differently after receiving this vote of confidence.
That’s all about me though. What about Google? Google has changed a lot over these years of course. Once again, this isn’t intrinsically good or bad. Some changes have been for the better and others have been for the worse, for sure, and I don’t have the space to cover them here. Regardless, I think Google continues to be an awesome place to work, but I can see how that might depend on which team and organization you are in. I’ve personally been very lucky as I have always been surrounded by respectful and fun colleagues and managers.
Which begs the question: why did I want to leave if it was so nice and I had been learning so much? It’s… hard to explain, but I have reasons.
The need for a change
My reasons for wanting to change were varied, but the primary one was: learning how engineering works at other places and broadening my technical expertise. I want to become a better and more rounded engineer, and I don’t think that’s possible by staying still in just one place.
📝 On the engineering side, it’s no secret that Google is incredibly proud of their own processes. You can see this in their SRE books and their SWE book. All of these detail fine practices, but they are Google’s practices. They have certainly worked and continue to work for Google, but to claim that Google succeeded because of them is a big leap; you could as well say Google succeeded in spite of them and be similarly accurate. Don’t get me wrong: I do believe these are great practices, but having been in the Bazel team and seen how other companies try to adopt them… well, the practices alone are not the silver bullet. What’s more: there are plenty of other companies out there that are doing very well with their own ways of running engineering, and I want in.
👨💻 On the technical side, it’s also no secret that Google’s infrastructure is very homogeneous, including a relatively consistent set of production systems, a reduced set of blessed languages, and a very solid development workflow. That said, a lot of these technologies are in-house and, while I’m convinced they were first-in-class a decade ago… things have changed a lot in the non-Google world. There are now reasonable alternatives to all of these technologies and ways of doing things, so I’m curious about them. This last decade has served me great in experiencing different technologies within the company and I’ve also put some effort of my own to remain current… but at this point I had a lingering feeling that I was plateauing in this area.
Mobility within Google is a huge benefit of this company, so of course I could have stayed and transferred to a different team and location. But I desired a more drastic change… “just because”, if you will.
So: when did I let my shields down?
A long time ago 🚨, honestly. My last real attempt at leaving Google was about 4 years back. If you do the math, this was just a few months after joining the Bazel team. I spoke to a few startups in Barcelona and I landed an offer, but the offer wasn’t good enough to convince me to move back to Spain. Luckily, my role within the Bazel team became more interesting very quickly, and that ended keeping me around for a lot longer than expected. I’m actually very pleased with the tenure I got in this team and what I got to achieve.
That said, over these 5 years in the team, the topic of moving companies and, specifically, leaving New York City kept coming up with my wife and friends. In fact, this topic had become a recurrent joke at this point: “you’re always talking of leaving but you are still here!"—or a frustration with my wife: “please make a decision already or stop bringing this issue up”—so I had to put an end to it.
What changed to make me finally take this step now? I kinda set for myself that 2020 would be a year of change. And oh my, it has been… for everyone 😰. But if COVID-19 has to be praised for anything, it has to be for pushing for change: I don’t think I’d have done anything had it not been for the lockdown and the transition to working from home (WFH).
Looking for a change
My job search was guided by two main factors: first and foremost, a location change. I was done with New York City after 9 years and 4 apartments in 3 different boroughs. And I knew I wanted to try living in the Seattle area for a little bit before moving back to Europe, which is still within my plans. Why Seattle though? Because it stole my heart the first time I visited 7 years ago and I didn’t want to regret not having lived here in the future.
With the location decided, the question was: which companies are in the area, have roles that suit my interests and level, and are going to help with relocating me and my family in these difficult times? Enough of them actually. Let’s take a look.
Right before the COVID-19 lockdown that happened mid-March 2020 in NYC, I attended a social event organized by the Facebook Production Engineering team. I was specifically interested in this company because my first manager at Google works there now and told me that there were some very cool infrastructure projects happening in Seattle. During that event, I had a lot of fun talking to various engineers and making new contacts, which got things spinning with the recruiting team.
But when the lockdown hit the week after, changing jobs sounded like a terrible idea 😰 because my position at Google was a super-safe bet. It took me a bit of time to become comfortable with the WFH routine, but once I did, I realized I had to make a move. In particular, I had been noticing plenty of acquaintances switching jobs during this difficult time. It felt as if the lockdown gave them the chance to pause and reconsider life choices—and it was time for me to do the same. So I finally replied to the Facebook recruiters and told them I was ready to move forward.
As for Facebook, I didn’t know what to expect. My interviewee skills were extremely poor, so I was pretty afraid of trying for a Software Engineering (SWE) position given the fame they have with LeetCode puzzle-like problems. Furthermore, I feel that my SRE position at Google was much more useful in learning how the company works than my later SWE position, so I was initially more interested in a Production Engineering (PE) position at Facebook than a SWE one. In talking to the recruiters, I was made aware that it was possible to apply for both SWE and PE at the same time, so I did that 😲.
However, as I was still concerned I would not pass the Facebook interviews, I had to look for alternatives in my destination area. And even if it had not been for my concerns, and as anyone will tell you, you need competing offers in order to have any leverage during compensation negotiations. So I looked around.
I looked for jobs internally at Google Seattle and Kirkland. There are exciting teams in both offices but either they weren’t hiring at the time or I did not qualify for what they were looking for. That said, I’d have truly enjoyed a position in the Fuchsia team if it had materialized. (I didn’t poke too hard though because I was already determined to leave.)
I knew Microsoft was in the Seattle area, obviously, so I searched for positions in Windows, WSL, Surface, and Azure that fit my technical interests and that matched my career level. There weren’t a lot of options, but I found a couple of fits in Azure so I sent applications for them through their careers site. I later learned that both external applicants and Microsoft employees look for positions in this same site, which is actually very cool; sounded very transparent.
I also knew Twitter was in the area, and in searching online, I found they had a position for their Engineering Efficiency (aka build) team. I seemed to fit the profile quite well given my past work at Google and that they were looking for a Bazel expert. So I sent my resume there too.
In the end, why Microsoft?
As outlined above, I applied for five different positions in the three companies that seemed most interesting to me in the area. One of these applications fell through before I interviewed, but the other four moved forward to the offer extension stage. Needless to say, coordinating all of these processes and going through them all was an exhausting endeavor.
Choosing among the four offers wasn’t easy in part because I didn’t know what I wanted. Recruiters kept asking “how will you chose?” and it was not clear to me what to say other than “uh, my desire to learn blah blah blah”, which is a pretty amorphous answer. There were too many variables to consider, and all of the positions I was offered were interesting for different reasons.
Choosing wasn’t easy either because, while some of the offers had great compensation, they down-slotted me due to my non-stellar interview performance… and having to prove myself all over again to justify my current level of expertise wasn’t something that I wanted to go through. Playing the promotion game is exhausting, but it’s still something I want to do.
I spent days agonizing over which offer to choose (and sleeping little). If money and comfort had been my primary driving factors, the answer would have been trivial, but these weren’t my primary criteria: I want to maximize personal growth because I think this is the winning strategy long-term, and that involved stepping out of my comfort zone.
And that meant Microsoft. Their offer seemed to fit these desires the best:
🔝 The position will put me in the right kind of organizational challenges and responsibility that I need to cultivate to grow right now.
🏫 I know nothing about Windows and surrounding technologies (like C#) but have been interested in them for a while, so this will be my chance to absorb completely different technology. After all, I’m a systems person and the Windows ecosystem is my blind spot.
🌲 Microsoft is huge in the Seattle area and, as far as I know, they are primarily located in this location. If I ever wanted to work at Microsoft, this was my chance before moving away from the U.S.
🏃♂️ I moved geographically so I wanted to have sufficient work-related contacts to build a local network of peers and friends… once we are allowed to meet people again. In particular, Twitter was weak in this area.
📢 Azure is a public product, so my work in storage will be directly seen by customers and, hopefully, I’ll have enough chances to interact with them too. I was told that Facebook had similar hands-on work to be done, and I believe it, but it’d all have been to serve internal teams and I kinda like the public exposure.
And so here I am. Ready to take on this new challenge, which starts this same week!
How will it go? I don’t know yet… but getting up to speed won’t be easy by any means. Having to engage with a new organization from a WFH environment will be difficult, and the expectations for a Principal Software Engineer will be high, so it will definitely take a lot of effort to blend in correctly. But I like difficult situations, and I believe they are key for growth, so I’m ready for them.
To conclude, let me tell you that I spent hours agonizing over the contents of this post. In a previous draft, I tried to narrate my whole interviewing experience with Facebook, Twitter, and Microsoft, which was a long process that spanned from mid-March to late August. During that period, I talked to 40+ different people and weighed in many different constraints to finally accept Microsoft’s job offer.
In the end, it was exceedingly difficult to cover all of these topics in a coherent and reasonably-sized blog post… so I scraped them all to focus on the results of my choice. I’d suggest to follow me if you are interested in those redacted parts as I’ll likely cover them in subsequent posts 😉. Links below!