My time as an RStudio Intern

When internships are more than technical training

By Daniel Chen

January 29, 2020

I’ve had a lot of time to think about my time as an RStudio intern. When I do, I usually end up with a few words in my head before I’m flooded with (good) emotions and struggle with finding the words to convey my thoughts. The last time I tried to write something like this went a little like this. What I can say is this: whatever you thought it was like working at RStudio, is (probably) true.

From a technical perspective, the most jarring part of the work was transitioning from a user of the R language to a developer. I’ve taught workshops and written R packages, but nothing came close to the type of code I had to write for my internship. I think my only saving grace was I was familiar enough with Git, so I didn’t have to deal with workflow issues.

The project

I was on the education team and worked with worked with Garrett Grolemund and Barret Schloerke (I can never spell their names properly without looking it up, and it didn’t help one of the other interns was Malcolm Barrett ) on gradethis. The package tries to grade code in a learnr document, but the real magic of the package isn’t just reporting a correct or incorrect answer, it’s the ability to provide meaningful feedback to the learner. For example, if the solution to a question was sqrt(log(1)) and the student provided sqrt(log(2)), it would report the answer as “incorrect” but also return something along the lines of “I expected 1 where you wrote 2. Try it again; next time’s the charm!”. Isn’t that way nicer than a giant red box telling you the answer is wrong? Now if you think about it, isn’t this a really difficult problem to solve??? (Hint: yes.)

Luckily, I didn’t have to write this package from scratch. Garrett did write the initial working code base for me to improve, but it also essentially meant working with legacy code and learning new R programming paradigms at the same time. “R programming paradigms” what’s that? you might ask. I mean expressions, rlang, and tidyeval … :x

How does one go about leaning how all this works in the package? Well… by merging a PR that breaks everything, then trying to understand an issue that took a month to fix.

I spent a better part of that month reading and not understanding expressions, and pretty much being guided by a series of pair-programming sessions with Barret. By “guided” I mean he pretty much did the work I just typed characters and acted as a scribe.

I’ve done pair-programming with my own students, but I never had anyone pair-program with me where I was the one learning. There was so many new things going on during each session that I couldn’t retain every detail, but things got easier towards the end. It made me think about all the times I’d help my students and really got to empathize with their confusion.

The single most important package development skill that made my work possible were unit tests. Since I was working with an already existing code base, all the 100s of unit tests that were there needed to pass as I made changes. I can’t emphasize how much time and sanity was saved from running the unit test suite. Seemingly small changes would cause some tests to fail where I’d have to either fix my code or fix the test. As the package started to stabilize and I started testing it out on a mock learnr tutorial, I even discovered a bug in the == operator!

Even though everyone was in a remote position, there was so much ancillary learning going on. I tried to keep a list as I was going though the internship, but it got impractical.

Hanging out

Every one of my fellow interns are amazing. Since RStudio is a remote company, we tried to hold a weekly “virtual coffee” meeting so we can all see and talk to one another. It really made the distance and time zone differences between all of us seem much smaller. As I’m typing this blog post at rstudio::conf, it felt like we already knew each other, even though most of us haven’t seen the other in person before.

Due to my conference and travel schedule over the summer, I got to meet a handful of the interns in person beforehand.

Therese and Malcolm in Los Angeles, CA

I got to meet Therese and Malcolm when I was in LA staying at a friend’s place for another friends wedding.

Julia in San Francisco, CA

I got the tour of Julia’s lab when I was in San Francisco for the PyBay conference.

More of Julia’s lab at the bottom of the post.

Joyce in Raleigh, NC.

My dad’s job relocated him to Carry, NC so I was visiting him when a Data Science Happy Hour was announced in Raleigh and got to meet Joyce.

Education and Shiny teams

I met with the Shiny team for daily stand-ups, and the education team about every week. The sheer amount of people I could ask for help is absolutely insane.

Everyone else

A lot of effort goes into making a remote company feel less isolating. Many of us signed up for the virtual donut bot on Slack that randomly pairs you up with someone else in the company to have a conference call to get to know each other.

We also had an opportunity to signup/attend lightning talk sessions where people from the company talked about current projects they’re working on for work/home. Some people even talked about their hobbies!

Even crazier, was we sat in on meetings with the President and CEO of the company on multiple occasions. For a company that has such a wide global reach with employees geographically scattered around the world, the community that RStudio has internally is genuinely mirrored in the amazing community they have created externally for the rest of us.

More than technical training

My time with the education group at rstudio really help me find my way. I’m pretty much on my third iteration of a PhD dissertation topic, and working with the education group helped me realize that I can apply all the lessons I’ve learned through The Carpentries, teaching on my own, and working on educational tools towards my dissertation topic. For the first time in a long while I finally have a sense of direction and feel in control of my own degree.

Not only that, but being in intern was so validating. I’ve felt like I was spinning my wheels since starting graduate school, and it’s nice to know I’ve been doing something right these past few years. I’m not going to lie, there is a certain amount of “street cred” involved with being an intern, but let me assure you, I still barely grasp a lot of the internals of R. If anything, I feel even more impostor syndrome, now that I’m back out in the wild.

For now, the best thing I can do is pay it forward. And for those who don’t know, my new dissertation topic is on the education and pedagogy of data science in medicine.

I hope to hear form everyone in the future!


The other intern final blog posts (list is ongoing):

  1. Malcolm Barrett

  2. Joyce Cahoon

  3. Dewey Dunnington

  4. Marly Gotti

  5. Maya Gans

  6. Yim Register

  7. Desirée De Leon

Picture’s around Julia’s lab.

Posted on:
January 29, 2020
7 minute read, 1339 words
rstudio-internship r
See Also:
Git Squash and Merge Workflow
Inconsistencies with the `==` operator in R
New Website a la Blogdown!