A big part of what I love about working at (and using) Mixpanel is that with basically any dataset, a user can get to work answering whatever questions they have. So, when I found myself with a little time to kill over a weekend, I set to seeing what the data in our own monorepo at Mixpanel would look like in a Mixpanel project. That way, we could easily track the total number of commits and their lengths in lines of code.
It didn’t take long to get the data from Git into Mixpanel, and I thought it’d be fun to share a bit of what we found.
In 2015, we started moving our infrastructure services to Go from Python. In those days, Go was starting to get popular and we felt it had a number of features around performance handling, and that it was quite simply, an infrastructure-oriented language. The other big reason was that it accelerates onboarding. A programmer with no experience in Go can nonetheless join the company and begin contributing within two or three weeks, which is not the case for other languages.
There was some resistance at first. I get that instinct: who wants to learn a new language when the existing one is working fine? At this point, we have around thirty programmers committing in Go each month, and as it’s become the industry standard for infrastructure teams, everyone has gotten on board.
I say that all as background to this Mixpanel report, which shows the total lines of code committed by language since Mixpanel’s founding in 2009. Go is known to programmers as being particularly verbose as a language. Despite only being the language of choice for our infrastructure team since 2015, it has surpassed Python, which we’ve been using since 2009 in total lines of code.
Another fun thing: Neil Rahilly has been an engineer at Mixpanel since 2012 and is now our Vice President of Engineering. In 2015 he became a people manager, and all but ceased committing code.
On the flip side, another engineer here moved from being an individual contributor to being a manager and then back to an individual contributor role. It’s hard to miss what another of my colleagues refers to as “the trough of managerial sorrow.”
Such are the commitments of people management.
There are a few more things I’d like to point out, which is that we encourage engineers to move around in order to become more well-rounded and pursue their interests. Here’s the commit history of an engineer who moved from Product Engineering, which uses Python, to Infra, which uses Go.
And this one, which shows our commit history in the back part of 2017 shows that we prioritize work-life balance in the Mixpanel Engineering org—there are not a lot of commits on the weekend!