This week, I started my internship as an R developer within the {tidymodels} package ecosystem at RStudio. I will be working on {shinymodels}, a package that, given a tidymodels object, will launch a Shiny application. I am fairly new to the internship but the process of preparing, applying, and getting the internship has taught me some valuable lessons that I think might be helpful for fairly new coders like myself looking to apply for similar opportunities.

A brief backstory

A year ago, if someone had told me I would be interning for RStudio, I would have laughed at them. Spring of 2020, two weeks into my Data Science class, I remember having a full-throttle crying session in my school's cafeteria about my struggle and my steep learning curve with R; it was a little silly of me to be in the class that was solely based on R without having a good baseline R knowledge, but I was committed to it. I have to say, I got lucky, the professor for the class Prof. Kelly McConville was the most patient person to get me started with R; she taught me to be comfortable and enjoy the process of learning R, which has been a fun and ongoing process ever since. Between then and now, I have taken several classes like Mathematical Statistics, Statistical Learning, and Spatial Data Analysis that solely/heavily used R programming. Last summer, I also got to enhance my skills while working on a group project with Dominick Ta as a part of the Public Policy and International Affairs program at Carnegie Mellon University. Getting exposed to various uses of R and being able to use it to analyze/solve real-world problems is what got me more interested in the developing side of the language and hence my interest on this position. To be honest, {shinymodels} is a little more special: I have a vivid memory of truly enjoying programming in R only after I created my first app in Shiny, it was that moment for me. And, as a modeling enthusiast, I had been following tidymodels' development; this internship combining two of my favorite R packages, Shiny and tidymodels, to create {shinymodels} was something I was truly passionate about and wanted to work on. That is when I decided to apply for the job.

Tips for before and during the application process:
  • To learn new code, apply it: The best way I enhanced my coding skills in the past year was by working on projects and learning new code as I went on. While trying to learn R as a beginner, google was (still is) my best friend! I also extensively used other forums (Stack Overflow,  #rstats twitter, community.rstudio.com, etc.) that were pretty active and welcoming to get me started. Working in groups and learning from my groupmates helped a lot; closely observing some of the more experienced coders' workflows really helped me learn some valuable coding skills.
  • Apply for the job: It sounds silly but despite my relatively short experience, the fact that I even felt competent enough to apply for this job was the main reason why I got it. I realize I am not the most experienced coder out there, but I knew I had enough to get started with the position and I was ready to learn more. Had I let myself believe that I was not ready and I could not do it, I would not have even applied. Particularly from this application process, I learned that it's okay to feel intimidated and overwhelmed by the process but do not let that stop you from applying for the job you really want. I worked as a peer career advisor (PCA) for two years at my undergrad institution, and I was always told to encourage my advisees to apply for a job they are truly passionate about even if though they might be/feel slightly underqualified; you never know, you might be more qualified than how qualified you think you are.
  • Format and review documents: Make sure the core documents, your résumé/CV and cover letter, are both up-to-date, tailored, and in the standard formats. Have a career advisor or someone experienced review them before you submit.
  • Talk to the people who know: Both while learning R and applying for the internship, talking to and getting feedback from folks who had experience with what I wanted to do was a crucial step for me. For me, it was my Data Science professor Prof. Kelly McConville and my friend Simon Couch (a prior RStudio intern). Getting their feedback and learning from them at all stages was a crucial part of my journey. So, I would highly recommend trying to find people who can do the same for you. I recommend LinkedIn search to find relevant connections that you can reach out to (pro-tip: I'd start by reaching out to someone in your school's alumni directory or someone you have mutual connections with so that they are more likely to reply to your queries). Also, along the same lines, follow and closely observe the workflow of some experts (for me it was Hadley Wickham) in the field/language, it really helped me to learn about some best practices.
  • Hyperlinks in cover letters: When writing a standard one-page cover letter, it is hard to include everything, especially while explaining the relevant experiences. So usually, I add hyperlinks to my projects so that I can briefly explain a lot of relevant projects and the employers can easily click on the hyperlinks to access the relevant repos/folders to learn more about them. I did the same for the RStudio internship and I think it helped that my interviewers got to see my codes/projects before we talked.
  • Be true to your story: Getting this internship was probably the most humbling experience for me, not only due to my initial struggle with learning R but also with the fact that my supervisors believed in and gave a chance to my story. Going into the interview for the job, I was honest about my experiences thus far and my keen interest in getting better. I knew that I had a lot to learn but I also knew that I am a good learner and I thrive under growth-oriented mentorship. Throughout the application, I was open about my personal goal, intention, and approach to the job. Everybody's story is different and being true to one's unique story works often times than not.
During the internship
  • Ask questions🤔: Now I have started the internship, at the end of each day, I make a list of questions that I can ask my supervisors. The list ranges from a highly technical question to something that might be as simple as the best practice to save my projects. I give myself a time limit, if I cannot get it within the time limit, I rather ask my supervisors who know more about the topic than trying to bang my head against the wall for several more hours. Especially for interns like myself, we are here to learn so ask as many questions as possible. Do at least some research to see if there are easily accessible solutions out there.

  • Ask for clarifications🙇‍♀️: Especially while attending big group meetings, not everything is going to make sense at first. I quickly realized that not knowing the keywords folks are using in the meetings can make me feel lost throughout the meeting, so now when I come across a repeating word that I have no clue about, I trying googling it or using the chat feature in zoom/slack or saving it to ask later; people are always nice enough to reply🤓

  • Focus on learning stuff you wouldn't learn elsewhere👀: One of the main things my boss told me during our first 1:1 meeting that has really stuck with me is that the goal for me in this job shouldn't be to just learn the technical skills to develop software but also to learn the thought process and collective brainstorming that goes into the process. Just after attending a couple of meetings, I am already beginning to understand the importance of skills like naming things right, creating documentation with just the right amount of information, figuring out the best way to deliver information, designing the most accessible templates, etc., which are the topics I used to underestimate during my developing process.

  • Your ideas are equally valid💭: I really care for this opportunity and I am an anxious person so it's hard not to overthink, but I try to remind myself that the fact that I am here means my ideas are equally valid. I am cautious when to speak up and occupy the space in meetings, but when presented with questions, I do not hesitate to contribute my ideas; my boss says, "it's always okay to ask why that way? Are there other ways of doing this? That's how we get challenged, learn, and grow."

In addition to the tips, I have to share my experience with the hiring process itself. The application process for this job was the most efficient hiring process I have ever experienced. Just to give a brief idea: I applied on Wednesday (03/17), heard back on Thursday (03/18), interviewed on Friday (03/19), and got the acceptance on Monday (03/22). As a student employee who has spent weeks and months on the hiring process stressing and waiting to hear back from a job, I truly appreciated RStudio's efficient hiring process.

Hmm, let's see...I think that's all I can think of, for now. I will add/update this blog as I go on with the internship and more stuff comes up. Feel free to reach out with any questions/comments. This is my first blog, so wish me luck.

Thanks for reading🌻🌝🍃