I'm joining PlanetScale, and here is my story on how I decided to join.
The cat is out of the bag. I'm happy to share that I'm joining PlanetScale to work on their mission to build the world's most simple to use, scalable Database for Developers.
There are many reasons why I'm excited to join this company, but first, let me explain how it all started.
A few small stories are happening in parallel. Let me tell the first story:
When I started working on vim-go, I also started building many Go libraries. Some of them got very popular. One of these is the "pool" library. It's a thread-safe connection pool for Go's
net.Conn interface. With the pool library, you can manage and reuse network connections. It's not cheap to create new connections from scratch. If you're a client who regularly talks to a service (such as a Database client), you want to use your resources carefully.
When I started writing this project, a particular person, Sugu Sougoumarane, created a pull request to fix the race conditions he encountered. It was in 2013, almost seven years ago.
After this pull request, Sugu and I had various talks and meetings throughout the years. It looks like he was also using vim and, therefore, vim-go. Because of this, we would always see each other at various conferences and would talk about vim-go, Go, and different other things.
Sugu is one of the co-founders of PlanetScale, the CTO of PlanetScale, and the co-creator of Vitess (the technology behind the magic of PlanetScale, more on this later).
It's worth telling another story that was happening in parallel.
I wrote a lengthy blog post about leaving the U.S., and there is a small section on how I accepted the offer from GitHub. Here is an excerpt:
In the end, I had several offers from several companies (all based in the Bay Area), and I accepted an offer from GitHub to lead the Go framework and libraries team. This position was the perfect job, and it had the potential for me to do impactful work at GitHub.
One thing that many people don't know is "how" I decided to accept the offer.
There were many cases for it. The job description and role were one of the biggest reasons. However, there was also one person, that convinced me to join GitHub, and which helped me to decide to join GitHub eventually. He is Sam Lambert, previous VP of Engineering at GitHub.
When I had multiple offers, Sam and I had several talks, and he was the person who made me decide to join GitHub. He made sure to handle all my concerns and had some strong arguments that made me think about which companies I wanted to work for. Eventually, I accepted the offer because of the perks, job role, and how he treated me.
Sam is one of the seed investors of PlanetScale and the CPO of PlanetScale.
Three months ago, in September, Sugu contacted me. We had a one-hour long conversation about Databases, Go, and life itself. He was very passionate about PlanetScale and asked if I would be interested. Back then, I wasn't sure if I wanted to make a big switch because I just moved to a new house in the Bay Area, and our Green Card process at GitHub was still in progress.
A couple of months later, for the reasons described in my blog post "Why I left the U.S.", I started looking around. I wanted to work for a company that shares the same passion and works on challenging ideas that match my skills and expertise. I had many meetings afterward with Sugu and Sam.
The meetings were all optimistic because I knew them for years already. PlanetScale would be a good fit for me because I know the founders and also because the product is promising (see the next section). Not only this, PlanetScale has established a dream team with an excellent leadership. It's one of the reasons I wanted to join.
Eventually, I accepted the offer and said that I want to be part of PlanetScale. (I have to admit that Sam is an expert on convincing people. It's hard to resist and say "no").
What is PlanetScale doing?
So, what exactly is PlanetScale? What does it mean to be "The Database for Developers"?
PlanetScale was founded in 2018. It raised a total of $25M in funding over two rounds. Andreesen Horowitz let the latest funding (Series A) and was $22M.
PlanetScale provides a Database-as-a-Service (DBaaS) offering built on top of Vitess (more on this below). Vitess was born because YouTube was growing quickly, and they had to scale MySQL in a way that would handle the growth with no issues. Sugu Sougoumarane and Jiten Vaidya created it at YouTube to fix their scaling issues with MySQL.
They scaled YouTube — now they'll shard everyone with PlanetScale. Database legends emerge with a new startup (Techcrunch)
So, what exactly is Vitess? Vitess is a database solution for deploying, scaling, and managing large clusters of open-source database instances. In essence, it's a sharding middleware that sits between your application and a Database (i.e., MySQL). Because Vitess speaks the MySQL protocol, you don't have to change anything on the application level.
Your application thinks that it talks to a plain MySQL Database and Vitess handles all the complexity for you behind the scenes. Another benefit of being a middleman proxy is that it can also support other Database instances (it currently supports MySQL and MariaDB). To get more information about Vitess, check out the excellent "What is Vitess" documentation.
Vitess is a battle-hardened technology used in production at companies like Slack, Square, and GitHub. It solved the scaling issues at YouTube and hence is the number one choice for companies who have the same scaling issues.
The mission of PlanetScale is to provide a Database product that can be used easily, where you as a Developer start small and grow to scale. It's highly available, automatically handles failures and network partitions while continuing to serve traffic. Due to its globally distributed architecture, you'll get low latency as well. As an application developer, you don't have to worry about any of these. PlanetScale will take care of you.
As you see, PlanetScale has a promising future, and I want to be part of this future. The product is improving and getting better. There is a lot of work to do, and this is just the beginning. More is to come.
Having said that, today (1/1/2021) is my first day at PlanetScale. I'm excited to be part of this fantastic team. I hope to share more of the stuff that I'm going to work on with all of you.