This summer I had the amazing opportunity to work on rsample. I was suprised and very grateful for this chance to dive into the world of R packages.
In the beginning, I began weekly video chats with my mentor Max Kuhn. I spent some time reviewing bootstrapping methods from several text books and reading code from packages like recipes, parsnip, boot, and infer. I familarized with “tidy” modeling by watching Max’s talk and working through the corresponding slides. The process of the background reading and working through example code made it easier to frame the context of the project.
One of the most memorable parts of the summer was getting flown out to Nashville and meeting RStudio employees and interns in-person. Through a series of lightning talks, I learned about the latest features RStudio employees are hard at work on. It was also a lot of fun getting to know everyone and putting a face to names. This made me feel more comfortable asking if I could peer over other the shoulders of other developers and watch their workflow of building, developing, and testing a package. It was very useful to see that process in-person.
For the rest of the summer, I continued working remotely and keeping in touch with my mentor via weekly web chat. I wrote low-level and high-level API code for bootstrapping confidence interval methods. Then validated the functions by writing corresponding unit tests and example vignettes. If I got stuck on a part of the code, especially debugging non-standard evaluation related errors, I would try to distract myself by writing an user interface design document1. I’d chat with the other interns2 or meet other RStudio folks through a biweekly donut chat where you randomly get paired with a buddy3. Later I received feedback from my mentor and continued to iterate on this process repeatedly. Rinse, repeat, iterate!
Though I initially predicted I’d spend the most time on writing statistical functions, I actually ended up spending the most time on tidy evaluation and metaprogramming, which was a pleasant surprise because I love thinking about programming languages. I enjoyed learning about package development and would probably tell my past self two things: trust in the process and ask more questions.
Thank you, Max and RStudio, for trusting me with this opportunity and answering my questions.
I was confused for awhile because of I previously learned the terms API and UI design as a web developer. It’s interesting to note the parallels between designing the user experience of modeling functions and designing the user experience of clicking through a web app.↩
Shoutout to Tim, Irene, Dana, and Alex!↩
Many thanks to Edgar, Ian, Cole, and Sean who took the time to share nuggets of wisdom with me.↩