Over the course of the past few months, I’ve had the pleasure of interning at Rotational Labs as a technical writer. I’m excited to share a little bit about my experience and provide some insight from the perspective of someone who is entering the world of distributed systems for the first time.
At one point in my early high school career, I was sure that I would find my academic and, later, professional niche in some computer science-adjacent field. Over the course of three years, I took each computer science class that my high school offered, and each year I found myself unable to shake the feeling that the path I had imagined for myself in computer science was playing out quite differently in practice.
I saw myself continually frustrated by concepts and coursework that never seemed to click, despite time and my best efforts. These frustrations were not helped by the fact that I felt out of place in classes where it seemed that all my peers possessed some sort of a priori programming knowledge.
Of course, this was not true. But by the end of those four years, it had become enough to drive me away from the technical realm for good. Or, at least for a few years. In hindsight, I’ve often wondered what my current path might look like, had I been a bit less dramatic and a bit more patient as a high schooler.
Currently, I’m in my third year of undergrad at the University of Rochester, studying English and International Relations. Thanks to the experiences I’ve had during the course of my internship at Rotational, I have recently added a ‘cluster’ study in Computer Science, along with an excitement about furthering my knowledge of and experience in distributed systems.
Despite the excitement I felt prior to the internship’s start date, I did have some anxieties going in: Would I be technically competent enough to fulfill my duties as a technical writer? How would I deal with the possibility of old frustrations flaring up again? Would I have a firm enough grasp on my work to be able to keep up in Engineering meetings? How would I know when to reach out for help and when not to?
To be fair, some of these worries did turn out to be valid concerns. There were certainly meetings that left me scratching my head, trying to find a specific clarification or set of directions mentioned in conversation. An early takeaway from meetings like those reinforced the importance of keeping notes of all meetings - especially when I knew it would discuss a new or unfamiliar topic.
Two parallel challenges I encountered in my first few weeks that proved equally tricky and rewarding were learning to navigate both my command line and Github. Since I had never used my command line or Github in any substantial capacity, there was a decent amount of setup work that needed to be done before I could start contributing.
Thanks to the extreme patience and willingness of Rotational’s veteran programmers and Github users to help, I was never stuck on one hurdle for too long. If someone on the engineering team was able to make time for a quick troubleshooting call, I could always count on feeling enlightened and satisfied by the end (even though I’d be likely to run into a completely new and unexpected error the next day). Despite this, challenges like these facilitated some of the best opportunities for learning as a beginner.
Running into yet another error message when trying to sign a commit? Reach out to a more experienced engineer for help. When neither of you can figure out what’s going on? Search stack overflow in a different way - and, in the process, go down a rabbit hole that leads you to an explanation of that unfamiliar concept you heard in the previous day’s team meeting. By the time I made it back to the topic of my original search, I had often learned five entirely new things along the way. These long-winded paths to mini-epiphanies were a theme recurrent throughout the course of my internship.
As I came to be more comfortable using tools like my terminal, it became gratifying to see and understand how they worked. Prior to this summer, I had no idea about the ways my command line could be used to interact more directly and efficiently with my computer towards completion of a wider variety of tasks.
Similarly, after just a short time interacting with Git repositories in a code editor, I came to derive a small satisfaction from the methodical process of creating a branch, making changes to a repo, then adding, committing, and pushing those changes as part of opening a pull request. Even though I wasn’t necessarily opening or merging any huge PRs, each change I made felt like a small milestone, knowing that I wouldn’t have had the ability just a few months earlier.
As an intern, my duties have varied depending on project timelines and the needs of the company. A main focus of mine during the beginning of my time at Rotational was contributing to a ‘refresh’ of the documentation for the TRISA protocol, a mechanism that allows for the secure exchange of private user information when blockchain transactions are subject to government regulation. I spent a good amount of time going through existing documentation to solidify my understanding of TRISA, so that I was eventually able to add, edit, and update content in the documentation.
On many of these tasks, I paired with software engineers who were able to walk me through the deeper-level thought processes and data architecture in a way that was valuable beyond the scope of any individual project. Observing and picking up on snippets of knowledge from others has been a key component of my internship.
As the summer progressed and projects of previous focus came to fruition, I moved into various different roles on the team, including contributing to the early stages of a few design projects, collecting benchmark research in preparation for the release of Rotational’s upcoming product, and experiencing firsthand the joys of managing document translation.
I feel so grateful for the learning and growth opportunities I’ve been afforded over the course of the past months, and to everyone at Rotational who has been nothing but helpful, welcoming, and encouraging at every step of the way. I’m so excited to carry the experiences and lessons learned this past summer into my future, and feel lucky to have this internship as my foundation in distributed systems.
Photo by elzbietapacuszka via Flickr Commons