Twelve Weeks @ Basecamp: A Summer Tale

Datetime:2016-08-23 01:35:17          Topic: Load Balancing           Share

Prelude

I found out about Basecamp’s internship program during the winter break completely on accident. Burned out from the fall semester and unmotivated to get any work done, I gave “data science internship” a cursory Google search and happened to find Basecamp had just posted about looking for summer interns.

After reading through the description and learning about Basecamp’s kill on the cover letter mantra, I knew this application wouldn’t be like others. I meticulously combed over my resume and cover letter to make sure I was making my reviewers’ job as easy as possible. It isn’t just about checking off each requested application component: your application materials should speak to your personality, experiences, and really show the reviewer that you can deliver. Basecamp’s application reviewers had to put in tons of work, and to quote Ann :

Tell us your qualifications Demonstrate why you’re qualified. Sounds like a no brainer, right? People applied for programming internships without showing us any projects they worked on, or even describing their experience in any depth. We’re not looking for fully formed apps — these are interns after all. Projects for classes are great. Bootcamp projects are great. Simple design portfolios are all we’re looking for.

Lesson learned: don’t give application reviewers even the slightest room to reject you — their review of your materials should be as straight-forward and applicable as it should be, and no more .

(A short aside: I decided to have some fun with my cover letter by including my attempt at digitally sketching Basecamp 3’s Happy Camper mascot. Nobody has said anything to me about it, but I’m convinced this gave me a competitive edge.)

Let’s be real: this is how you kill on a cover letter.

True to his word, Noah reached out to me on March 1st asking me to set up a quick phone interview with someone on the Basecamp team. I was thrilled, excited to reignite my skills, and mostly worried.

My first call was with Eron, one of Basecamp’s Ops extraordinaire (Fun fact: Eron once informed me that I tried querying our internal timeseries database with a start time of 70 seconds after January 1, 1970, which broke a thing or two. We don’t talk about that. ). We had a cool discussion around the problems Basecamp had faced in the past with respect to load balancing, and the architectural challenges therein. Whereas Eron had worked on an in-house system for load balancing in the event of a Distributed Denial of Service (DDoS), I hadn’t ever really considered the load balancing problem. The conversation was really cool, though, because the problem domain presented interesting avenues for solutions and got us talking. No useless technical screen asking me to implement a Hash-map, no quiz on the internals of Python’s GIL. Lesson learned: few companies know how to properly evaluate prospective interns — Basecamp is one of them.

Around two weeks later, Noah got in touch asking for another phone interview. Okay, I thought, now we’re in the big leagues .

It was interview time. For the past two weeks I had been preparing myself for anything Noah might throw at me that was fair game — SQL queries, Postgres internals, Python trivia, etc. Imagine my surprise when we talked about my personal projects, my interests, having to context switch between MySQL and Postgres queries, and how I’d be able to contribute to Basecamp’s data infrastructure. I remember ending the call thinking I was a bit too casual — after all, not one line of code was written during a startup’s interview process? I must have been funneled into the “call, but don’t bother asking to code” subset. I sent Noah a thank-you email and figured that was the end of that — after all, there was only room for one data science intern.

One.

Three weeks later, I was at the library studying for midterms. Ding. I checked my phone. “Join us at Basecamp this summer!” Lesson learned: don’t let your dreams be dreams. (Actual lesson learned: the logo worked! )

Present

So what did I actually do at Basecamp? With Noah’s frequent guidance I built Thermometer, which is our embarrassingly-parallel aberration detection system designed to autonomously report any aberrations across our 10,000+ internal metrics in real-time. Thermometer was both an engineering and data science challenge — I constantly thought about the trade-offs between performance and statistical rigor, and with Noah’s help quickly settled a great equilibrium.

Alongside Thermometer I also developed and internally released Thermos, an R package designed to keep Thermometer’s logic straightforward and abstract away the nitty-gritty bits of anomaly detection. I learned a ton about package development and came to truly dedicate my allegiance to the Hadley-verse.

Towards the end of my time here, Noah and I have been pairing up and walking through a few different A/B tests. Each time I get to pair up with Noah on a task, it’s really humbling to see how much I can improve as a data scientist. Things that would take me at least an hour or two to recognize, diagnose, and implement is a casual 1-line fix for him. Lesson learned (in the best way possible): you don’t know anything — yet.

Retrospective

In Noah’s retrospective on hiring Basecamp’s summer intern class , he mentions three core reasons Basecamp was offering internships:

Give back and have an impact on the community

Challenge ourselves to grow

Improve Basecamp (the product and company)

I like to think that as a data science intern, I was able to consistently experience the intent behind all three everyday.

Problem-solving, meet the real world

When building Thermometer there were times where I lost sight of what to do next — there was so much! On top of having to deal with real world edge cases and meet certain features, I had never worked on something this conceptually large before. Not to mention I owned 100% of all the commits to Thermometer and Thermos — I should be Noah’s go-to for questions on Thermometer, not the other way around. Time and time again, however, I would ping Noah about a function I had written and ask about code quality, logic integrity, and more.

This isn’t to say I was struggling for air — I also got to propose solutions, discuss trade-offs of pursuing potential solutions, defend certain design decisions, and really feel like a full-time member of the data team. Treating interns as employees was without a doubt the norm at Basecamp, and it reinforces the people-first culture of betterment and transparency at all levels.

The Boy Scout Rule

Always leave the campground cleaner than you found it.

Working on Thermometer and Thermos gave me the opportunity to impact a real-world system at scale. Sharing my achievements with the company was a total confidence-booster, and as a builder it’s awesome when people use something you’ve made. I’ve left Basecamp in better shape to handle data problems in the future than how it was before — and in many ways that has made all the difference.

Parting Words

Basecamp surrounds its interns with so many opportunities to grow, collaborate, learn, and contribute. I’ve been fortunate to gain a crazy amount of both technical and domain knowledge, and it’s in large part thanks to the two-fold effort from the culture’s emphasis on communication and transparency and Noah’s exceptional skills as a data scientist, multi-tasker, and mentor.

Each day presented another challenge, and I got to learn from and face each one with a wide smile. There’s no better feeling than solving a problem you’ve been stuck on for days and knowing that your work is going to be used to support an entire organization , and I’ve grown to appreciate those hair-pulling moments of frustration as learning experiences.

Lesson learned: Basecamp isn’t about implementing bleeding-edge machine learning algorithms or dominating the market — it’s about people helping people. That’s it.





About List