Hello again! It has been months since the last blog post. I have been following this crazy marathon training program that has consumed all of my free time since then, but luckily it’s ending this week. I should be able to regain time afterwards to write and hack again… if what I’m describing in this post permits it in the near future!
After two years, it’s time for a change: I left Microsoft last week and I’m starting at Snowflake ❄ today!
Quick recap of my 2 years at Microsoft
My journey at Microsoft has been short… but interesting and messy in many ways. Let’s look at these from the lens of what I wrote 2 years ago when I departed from Google:
🔝 The position will put me in the right kind of organizational challenges and responsibility that I need to cultivate to grow right now.
This worked out… to some extent. When I joined Microsoft, I reported to the director of the front-end layer of the storage subsystem. From day one, this meant that my direct peers were all the managers in the team as well as other high-level ICs. As a consequence, expectations were high, but responsibilities and visibility were high as well. I got to work with these folks and other sibling teams right away, which exposed me to broad architectural and organization problems that needed tackling.
A blog on operating systems, programming languages, testing, build systems, my own software projects and even personal productivity. Specifics include FreeBSD, Linux, Rust, Bazel and EndBASIC.
The opportunities were definitely there, but things were messy because said director (and several of his direct reports) left just a few months after I started. What I was working on was suddenly not as important and the team took a while to recover from such departure. In the end, I refocused and started to tackle a different problem with successful outcomes, but it took longer than it should have for me to do this shift (which had other consequences as I’ll mention below).
🏫 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.
Check. If you have followed “recent” posts, I have moved on from macOS, and Windows is now my primary desktop environment. This was unimaginable just 2 years ago. When I joined the company, trying to get work done with the corporate Windows laptop was painful—not just because I had to learn how to work in a team and a new product, but also because I didn’t know how to navigate Windows fluently. To ease my way into the role, I ended up enrolling my personal Mac as a managed corporate device so that I could continue using macOS. But this was only a band-aid: accessing production could only be done from a secure laptop running Windows, and thus every time I was on-call I was extremely slow to operate. At some point, I had to move fully onto Windows to adjust, and it has been just fine. I’m now not using macOS at all.
But there is more. I’ve been exposed to C# and written a bunch of code in this language. This was, frankly, easy to do because it’s “just Java with a different coating”. For the kind of code I had to write, I could get by just learning by example and via code review comments. The language has some interesting details, but the real cool stuff comes from the runtime. However, as I mostly dealt with C++, I did not get to build a ton of knowledge in this area.
Separately, I’ve gotten to use Office. Going back to native apps was a breath of fresh air, honestly. But syncing documents via OneDrive, especially those with active collaborators, has been problematic in multiple occasions… Dealing with sync conflicts is something that just doesn’t happen when you use GSuite or even the online versions of O365, so I found myself using the latter in multiple occasions instead of the desktop apps. Oh yes, and I moved on from GAFYD and ended up with O365 for personal usage.
And of course, I’ve also ended up playing with Azure as a customer by building a couple of cloud-based services, and gotten an Xbox at home, which the kids have taken over.
🌲 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.
Microsoft is everywhere in the area and it is a gigantic employer (other than for the current hiring slowdown affecting all major tech companies) with a neat corporate mission, a great deal of nice products, and a bunch of excellent people.
That said, my rationale for being the “last chance” to work for them was not very convincing. This might have been true years ago, but my team has ended up being very remote-friendly due to the pandemic, which means being in the area is not strictly necessary any longer. In fact, we have a few folks that are permanently remote. This may or may not be true for other organizations within the company though.
Anyhow… I’m not sure I’m moving out anytime soon for other personal reasons. So who knows, maybe I’ll end up in the company again if the right opportunity shows up.
🏃♂️ 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.
As mentioned earlier, the team I joined is very remote-friendly, but luckily the vast majority of the people are local—which worked in my favor to accomplish this. That said, the pandemic made the situation very difficult because I could not go into the office for over a year and, even after the office officially opened, I did not get an assigned location due to logistics for many more months.
In any case, I ended up commuting semi-regularly to meet peers, which worked wonders. I really don’t mind the “working from home” situation and find it very convenient (and possibly an exclusive choice for the future), but it’s true that being present in the office and building personal connections over lunch is super-important to function well at a high-level role. There are certain kinds of talk that will never happen over VC.
📢 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.
This was literally true, but in the end not so rewarding. Even though I was working in public cloud storage, I focused on internal aspects of the product (intentionally), not features. These aren’t directly perceived by customers, so my interaction with them was only during outages and only after customer support had already exhausted all avenues to help them. Which, as you can imagine, is not the most satisfying kind of engagement.
In any case, Azure is huge and this goal is definitely something that can be fulfilled if you work on features, as you will be in contact with both PMs and customers to design and implement them.
The need for a change
Overall, my experience has been positive as it accomplished most of what I wanted to achieve. But things come to an end. I needed a change for a couple of reasons.
The first was to remove friction. Yes, I can now operate on Windows just fine and develop on it a-OK, but I’m not super-fluent. Obviously, this is fixable with extra time on the role (and if I switched focus to a more hands-on project rather than working on organizational issues), but this made me feel unproductive compared to some of my peers. On Unix-y environments, I can quickly hack whatever I need to solve a problem (especially during an outage!), and that’s something I’m not yet comfortable enough doing in a Windows environment. (Some things like RDP won’t ever be fast or ergonomic though).
The second is the big elephant in the room: comp. The original offer I got to join the company was very reasonable but it came with this large sign-on bonus over two years. This meant that the comp cliff after two years would be significant, and I knew that going in. However, due to the role, I was counting on having a chance to get promoted within the two years, which would have fixed this issue. Unfortunately, this plan didn’t materialize for some of the reasons outlined above, so I was left with the knowledge that this could be corrected right away by moving to a new company. The right opportunity showed up and it was very hard to say no. Honestly, it’s not really about the money for me, but major differences in comp and the need to support a family and pay off a huge mortgage cannot be dismissed.
There were other reasons why I wanted to move to a different project or team, but these two are why I ended up looking outside of the company instead of trying to pursue an internal move (which would have been much easier and less stressful).
So, hello Snowflake
In the end, an interesting opportunity did show up, and it did so at the right moment. In fact, three of them showed up, all very similar in role and quite exciting due to my personal interests. I won’t bore you with the details of the other companies, so I’ll just summarize what’s next.
I’m joining Snowflake to work on their “new” Developer Experience Productivity team, which has some major goals for the years ahead. I’ll go back to working with tools I know very well, tackling a large technical challenge. And my “customers” will now all be internal to the company, so I’ll have direct access to chat with them about their issues and how we can fix them.
A big portion of the team is local, including direct management, which will facilitate onboarding and building rapport. I’ll also be joining some nice folks I knew from before, and a much smaller corporate environment. In fact, I have visited the office in Bellevue and I got a similar feeling as to when I joined Google Dublin back in 2009: just a few floors with people that know each other and an opportunity to see and be part of tangible growth.
But this is a much smaller company than Google and Microsoft. When I left Google, I wanted to experience a different work environment and… to be honest, Microsoft hasn’t been it. The two companies are incredibly similar, to the dismay of many. Snowflake, however, seems like a sweet spot because it is significantly smaller but it’s also stable enough.
This is now the second time I’ve moved from storage infrastructure to developer tools, and it may not be the last. I enjoy working on many different aspects in technology, so it’s fun to “spice things up” once in a while and change topics—but in the end, I end up frustrated with the tooling and start chipping away to make things better in that area, which makes me swing back into this area.
Oh, and today I’m going back to macOS given that my corporate laptop is a gigantic MacBook Pro 16". It’ll be fun to see how these M1-based computers operate… but I’m not sure I’ll enjoy the duality of a Mac corporate laptop and a Windows personal desktop. No, wait, I know I won’t enjoy it, so I’ll have to find a solution.
Thanks for reading and happy Halloween!