After leaving Microsoft, I gave myself two months to find another job. I hit leetcode pretty hard and started learning about other areas (my entire career up to this point was kind of niche – not many people work on operating systems or programming devices drivers right now). I actually bought a book called Explain the Cloud like I’m 10 (it was a surprisingly informational and well written!)

I interviewed at the normal places that you’d expect – Amazon, Meta Reality Labs, Unity, etc., but one day I was contacted by Niantic – the makers of PokémonGo. At first, I mostly thought of it as a joke (although I did have a lot of respect for how Niantic temporarily brought world peace in the summer of 2016).
I well remember my phone interview where a person wanted me to program the Boggle game, but the way that he setup the program was ridiculous (and I told him so 😊). He gave me a boggle board as an array, I would find “words” (i.e. every permutation of letters on the board), and then call a function to determine if my word was in his dictionary. I explained how he made the problem ridiculously expensive by not giving me access to the dictionary in advance. If I knew the dictionary in advance, I could convert it into tries which would make any algorithm much more efficient. Apparently, I was the first person to call that out and he had been using the question for a while. I figured that I’d never hear back from them.

I few days later the recruiter called back and said that they were interested in talking with me about a position working in their security infrastructure layer (which was written using C++). I had an informal 15-minute conversation with a VP (Ed Wu) and I agreed to come in for an interview (they had a small office in a downtown Bellevue high-rise).
While I waited in the lobby for the interview to start, I started reading the articles posted on the wall and I realized that I knew absolutely nothing about the company. It turns out that it split from the Google Maps team – John Hanke used to lead the Google Maps team but then decided that he wanted to create games that used maps, so he started a new company, chose his favorite employees, and Google invested in it. As I read more, it became much more interesting.
My first interview was with an engineer named Vermont Lasmarias, and he was really impressive! He was a former Google engineer who made the jump to Niantic. After the obligatory coding problem, we started brainstorming about how to keep people from cheating in the game. By the time the interview was done, I was thoroughly impressed with him and I figured that if he was happy there, it must be an OK place to work. I also ate lunch with the people in the office and they all seemed pretty chill. A lot of people had Pokémon plushies at their desks, so I asked if I’d be expected to learn all of the Pokémon names (mostly as a joke). A guy said “Yes”, but it’s not the worse thing he’s ever done.

After a few more interviews and a very good job offer, I agreed to start on May 30, 2018 (a little under 2 months after I left Microsoft). I flew down to their headquarters in San Francisco for orientation, and while at the airport I got a message saying they were doing an engineering offsite on the 19th and 20th at Half Moon Bay and if I’d be interested in attending. It was an amazing way to learn what the company was doing and to meet everybody. By the end of the three days, I was really happy that I took the job at Niantic and I was really looking forward to the future.

Their headquarters is on the second floor of the Ferry Building and was really nice (and they had a killer view!)

My first assignment was to determine why the game was taking so long to load on Android phones. This was when I came to appreciate how little infrastructure and tooling Niantic had – it took me a few weeks to figure out how to get any information about what happened when the game loaded. Everybody assumed that it was because Android has a SafetyNet check that Apple doesn’t have, but when I was finally able to gather real data, I quickly determined that SafetyNet wasn’t the issue – instead we were calling a crypto function several million times when we didn’t need to. That got fixed and the improvement was so impressive that they had me demonstrate the difference in a company wide meeting (I felt like a minor hero). If the company had 1/10th the tooling that Microsoft had, this issue would have been caught in minutes.
My boss was really fun – he was one of the six original Niantic employees that formed from Google. He was very experienced (maybe two years younger than me), very smart, and a little quirky (in a good way). Everybody called him Alf because he chose that as his PokémonGo player name (based on his love of the 80’s TV show).
For my first year at Niantic, I mostly worked on fixing issues in the C++ layer, created tooling, and became familiar with the server code. Servers were a totally new thing for me, but I almost laughed when I realized how easy it is to code in Java vs. C++.
I knew when I left Microsoft that:
- I’d be working on completely new technologies in a completely different problem space and that I’d have to do a lot of work to ramp up.
- I’d likely be working with younger people in either cubicles or an open office and I wasn’t sure how I’d adapt after having my own office for my entire career.
What I didn’t know was:
- Technologies and scenarios change, but most fundamental CS problems are similar. I found that even when I knew nothing about Niantic’s problem space, I still had immediate and relevant insights.
- It took some effort to come up to speed, but doing so was really fun! I had no idea how burned out I was doing the same stuff for so long at Microsoft – working on new stuff was totally exciting and it didn’t really feel like work at all.
- I’m one of the very few people that actually likes the open office concept and I enjoyed the interactions with my coworkers. I also found that working with the younger people was a lot of fun! The only person that I ever fought with was an older math professor who learned computer science later in life.

The one thing that I never expected was that I’d become a willing PokémonGo player. The group would go on raids several times during the day, and PokémonGo is an excellent social lubricant. Niantic sent me to work at my first PokémonGo Fest in Chicago just two months after I started. I was only level 22 at the time, but I had so much fun! The first day of GoFest I played like every other player, and on the second day I manned a station that had the desert Pokémon. As an extravert, I really enjoyed meeting the 10,000 players who visited that day, folding stupid Pokémon visors, taking pictures for them, etc. I even met Brandon – the number one PokémonGo player in the world. I was level 40 within my first year of playing.

