I am honored to share that I have joined Google as a member of the Go team and will be primarily based in NYC.
Why I Joined
My passion has always been building great products, ecosystems, and experiences through open source. The desire to create transformative experiences has led me down some wonderful and life changing roads. I’ve been fortunate enough to combine that passion with employment for most of the last decade.
I encountered MongoDB soon after its inception. Realizing that it had the power to fundamentally improve how people created software, I joined MongoDB to help guide the product and ecosystem responsible for the developer experience (UX, web, docs, eng, advocacy). During my time at MongoDB, we grew from an obscure 30-person startup to eventually becoming the fourth most popular DB in the world. I had been part of a successful fast-growth open source startup that fundamentally changed the way software was written by demonstrating that alternatives to relational databases were viable. I felt like I had reached the peak of my career.
At MongoDB, I also managed our drivers team, which consisted of developing client libraries in over a dozen programming languages. It was on this team that I first encountered Go. Go has the nearly perfect balance of readability, expressibility, and simplicity. More importantly, it makes writing software fun again. I soon stopped writing software in any other languages and immersed myself in the Go community. I wrote software, libraries, presentations, blog posts, and even organized a couple of conferences. As I had before, I recognized that this technology had the potential to revolutionize how software was written at a fundamental level.
Upon leaving MongoDB, I took notice of another small open source startup that started to gain some traction. Docker was going to revolutionize how software is distributed and scaled and I wanted to be a part of it. I joined Docker to lead their open source operations and strategy with responsibility for engineering, governance, docs and advocacy. I helped guide Docker to participate in the establishment of the OCI and CNCF and helped refine the developer and contributor experience of Docker, resulting in one of the most actively contributed to projects in history.
After leaving Docker, I really didn’t know where I wanted to go next. I had spent the last 15 years at startups and wondered about life outside of the startup world. As I contemplated my next path it became apparent that my “burnout” from working at many consecutive fast growth startups was more than burnout. Toward the end of 2015, my health rapidly deteriorated. I was diagnosed with Babesia and Bartonella, two nasty blood diseases which caused anemia and chronic fatigue syndrome. The past year has been spent undergoing intensive treatment and in recovery, unable to work.
Going through a long-term illness changes you. You see life through a different lens, perhaps a more mortal one. As my health started to improve, a number of organizations approached me about joining. These opportunities ranged widely from a partner at a VC to a VP Eng at a big bank to a founder of a two-person startup.
I considered each opportunity from many angles. Which would be the best opportunity to continue to let me recover while also being the best decision for my career? I worried that my health would be a limiting factor and wondered if I should play it safe. I wondered if it was time to act my age and take the “grown-up” job where I would have grown up things like an expense account and an executive assistant and would no longer be the only guy on the train in a t-shirt and shorts. I worried that if I took a non-executive role that it would be perceived as a step backward and perhaps meant closing that path forever. I wondered if I would be able to make an impact without a large staff reporting to me. I also considered the impact each role would have on my family. I wondered if I would be happy working at a corporation instead of a startup.
During this time, an opportunity came to join the Go team at Google. I had a hard time even believing it was happening. Here was a team whose members I’ve looked up to since I first started programming and using UNIX as a teenager. I’m still nervous at times talking to many of the people on the team. I worried that I wasn’t up to the level of everyone else on the team. I even felt guilty thinking that I shouldn’t be paid to do what I’ve spent the last few years doing in my spare time.
I struggled with the decision, probably much more than I should have. I had a moment of clarity which put everything in perspective. This happened at GopherCon, the largest Go conference, while I was at the dinner for the speakers and volunteers. As I looked around the room I saw so many people who I genuinely admire and love. It put everything in perspective about what really matters in life. I knew that happiness comes from doing things you love with people you love. I realized that I couldn’t take any other role because it would mean leaving this community family I had become a part of. I love Go. I love the Go community. I love open source. If I have an opportunity to take a position that not only combines those three, but also enables me to support them I had to take it.
I have a fairly unique role on the Go team. To my knowledge, it’s the first of its kind at Google. My entire objective is to make the Go user and developer experience phenomenal. As someone who writes widely used libraries and applications and has led teams at companies developing with Go, I’ll bring a unique perspective to the Go team about Go usage outside Google.
In many ways, this role is similar to the unique roles I played previously at MongoDB and Docker, where I was responsible for developer experience and open source. All three of these roles incorporate elements of product management, user/developer experience, advocacy, branding and messaging, engineering, management, business development, and strategy.
Some things I’ll be responsible for include:
- Refining the Go developer experience for beginners and experts alike
- Creating educational resources for Go adoption and best practices.
- Defining/refining tooling, websites, etc.
- Refining the Go contributor experience (std lib, tools, compiler, etc.).
- Increasing the collaboration and communication between the Go team and the community.
- Gathering data and feedback from enterprises, users, developers, integrators and provide insights to the Go team.
- Supporting the community by working with them to define processes, make connections, and organize.
- Establishing partnerships with different vendors, products, organizations and enterprises to propel Go’s adoption, ecosystem, and usage
I Need Your Help
Of all the things I’ll be doing, listening is the most important aspect of my role.
I want to hear from you. If you have ideas or feedback, no matter how crazy or silly, big or small, email me. I’d love to hear from you!
Some questions I need your help to answer:
- What is missing from the Go ecosystem?
- What needs do you have that Go isn’t satisfying?
- What should the Go community be doing that it isn’t today?
- What questions do you have about Go?
- How can the Go project better support you?
- Where would you like to be more involved?
Finally, a huge thank you to everyone in the Go and open source communities. A special thank you to @gniemeyer for introducing me to Go and patiently mentoring me through my first project and @bepsays for taking on an extra load on Hugo and my other projects as my illness prevented me from actively participating.
I feel extremely fortunate to be able to do what I love. I am in the debt of the giants that have gone before me and created all the languages, tools, books, and ideas that make it possible for me to be in this role. I believe strongly that the only way to pay back that debt is to pay it forward and create a better experience, a stronger ecosystem and a welcoming community which we can only do together. I look forward to working with all of you in this new role!