This summer FullStory kicked off its first formal intern program, welcoming two college students to join our ranks for twelve weeks of hands-on experience. Our interns were paired with teams and tasked with working on key initiatives to the business.
What was their experience like? Let’s hear from Eric and Aaron themselves!
Eric: I am a rising 4th year majoring in Computer Science at Georgia Tech, located in Atlanta, GA!
Aaron: I am an incoming junior studying Computer Science at Xavier University in Cincinnati, Ohio.
Eric: Going into FullStory, I would have never expected to be working on one of the most important initiatives within the company: the Internationalization (i18n) of FullStory. Nor did I think that my opinions and questions would not be taken seriously. Far exceeding my expectations, I was assigned and trusted with making significant contributions to the codebase. Overall, I expected to take a passive learning role in the team, but I felt that I had a voice in meetings, and my perspectives were appreciated far more than I would have thought. If there is one thing to take away from expectations that I learned from my time at FullStory, it is that you will learn to expect great things when working with great people with a vision.
Aaron: Going into this internship, I expected the standard sort of filler intern tasks, like writing documentation or maintaining old code. To my surprise, I was tasked with a project that was entirely new (and fairly important). This project involved modifying a distributed asynchronous task processing system to be more scalable. This will help to decrease our resource usage in the short term, and to lay the groundwork for future expansion in this system.
Eric: The engineers I worked with set a great example of how an ideal teammate acts. Working alongside my team, I gained a deep understanding of one of our Watchwords here at FullStory: Empathy, and how much it is valued here. I want to become someone who never hesitates to see problems and solutions from others’ perspectives. I want to become someone who finds time and effort to contribute and volunteer for the sake of the team, whether that be writing notes or creating tools to help bionicize the tasks at hand so that other teammates can do their work more efficiently. In addition, I learned how to be singularly focused in the pursuit of understanding. Specifically, I learned that asking questions and not being afraid to ask for more elaboration is the crucial first step in becoming a better teammate as well, as it fosters a sense of intellectual courage and mutual understanding. On the contrary, the most important personal skill I learned is how to find information on my own, despite the mental resistance. I learned that taking notes and writing down everything that I did not understand at the moment was crucial to forming a better understanding of what I did not understand, so that I could ask less questions that were repetitive, or already answered.
Aaron: I learned time and time again that it’s always best to ask questions, even if I thought they were stupid. Here at FullStory I heard the phrase “try to figure out the answer to your question for 30 minutes, and then ask about it,” which was a very helpful rule of thumb in ensuring that I didn’t spend too much time trying to solve a problem with a solution that I could not have come up with in a reasonable amount of time. There were even a few times when I asked a question that I assumed I didn’t know the answer to because I was new and/or inexperienced, but someone else with more experience either said something to the effect of “I had the same question” or “I hadn’t thought about that before.” This ties into two of our Watchwords - empathy and clarity. Empathy because I never felt like my questions were unheard or discounted because I’m an intern. Clarity because, as we say, “few problems can survive their thorough description.” A good portion of the time I was asking questions to gain a deeper understanding of how to solve a problem.
Learning the tech
Eric: The biggest technical skill that I learned through experience was something that was never explicitly taught at school: version control. Version control with Git was a big challenge to get used to, but after countless commits, rebases, and PRs, I feel more confident than ever and grateful to have such an essential skill for collaborative software development before starting as a full-time developer.
Another helpful technical skill I learned was simply how to navigate my toolbox more effectively. For example, I learned how to navigate through VS Code effectively, memorizing numerous hotkeys and functions, as well as different bash commands that helped me zoom through directories and utilize different tools. However, the most unique skill (and possibly one of the most valuable) I learned through my time was from utilizing React-Intl to internationalize FullStory. Scouring through the codebase and docs, not only did I learn from observation how the app itself was built, I learned various formatting styles of the package to implement complicated string statements for internationalization. I also had to consider how to maintain the context of the messages for translators. During this process I encountered many occasions where I had to delete and replace whole functions or implement creative solutions to maintain the visual integrity as well as the code cleanliness of the app. I am beyond grateful for this opportunity to learn and apply internationalization principles which are more pertinent now to software development more than ever!
Aaron: A big thing that I learned was version control, specifically Git and GitHub. When I started at FullStory, I was aware of what Git was and how it worked on a basic level, but I hadn’t really done anything with it besides basic branching and pull requests on GitHub. Now I’m confident that I can do merges, rebases, and stashing.
I also learned Temporal, an open source micro-service orchestration platform. We used this for the task processing system project that I mentioned previously, so I had to learn how it worked at a high level, and also on a lower level for features that we were using for the project, such as Task Queues, Workers, and Workflows.
I also had to use multiple other technologies for the project, including Golang (the backend language that we use at FullStory), Protobuf & gRPC, Kubernetes, and the Google Cloud Compute Engine API. The number of different technologies that I had to learn how to use, at least at a basic level, for this project goes to show 1) how extensive our stack is and 2) that I was trusted with a complicated project right off the bat.
All of this just scratches the surface of what I learned during my time at FullStory. In addition to all of these tangible skills I learned, I feel like my overall programming and computer science skills were improved as a result of the experience in a not necessarily tangible way. Seeing how experienced programmers work and pair programming with them was probably the most valuable thing I experienced for learning about the field of programming while I was here.