“Regardless if I’m not at school, I should still use the methods and strategies that made me a successful student to make me a successful intern.”
Last summer, I interned at a financial technology company called Robinhood, out of Menlo Park, California, in the technology hub known as Silicon Valley. You may be surprised that I worked for Robinhood as a software engineering intern since I am an electrical engineering major. What does software engineering have to do with electrical engineering? And what does finance have to do with signals and circuits? Although the connection isn’t obvious, my background as an EE major at NC State prepared me for a productive and impactful time at Robinhood.
Before I Started
I started on May 23rd, a week after I flew from Raleigh to San Francisco. Despite this being my first time in California, I was more excited than nervous! A few weeks before I started, I met with my manager mentor to discuss the team I would be joining. I found out I would be working on the Crypto Engineering team. At the time, all I knew about crypto were buzzwords like NFT, Blockchain, Web3, etc. But I didn’t understand what those words meant or how they were connected. But my manager helped me prepare for my internship by giving me a lot of good resources where I learned more about crypto. She even gave me great advice to create a document where I could define all the words I was learning and write notes about the connections I was making as I prepared for my internship.
Onboarding
During my first week at Robinhood, I didn’t do any work on my actual internship project. I spent most of my time doing onboarding-related activities. I worked through various programming development tutorials for Robinhood’s software engineers. During those tutorials, I learned how to use Phabricator, which we used to review code. I also learned how to use Django, a Python library for web development. Finally, the most crucial onboarding tutorial I went through was a Golang (Go) tutorial. Go is a compiled programming language created by Google. Most of the other interns at Robinhood were computer science students, so they had strong backgrounds in multiple programming languages. But I could still keep up thanks to the ECE classes here, specifically ECE 109, and 209. In those classes, I learned assembly and C programming. Assembly helped me understand how computers execute code and made the transition to understanding C programs seamless. And my background in C made learning Go easy! Go code looks very similar to C code. Go is procedural, and has arrays and pointers like C. Perhaps the biggest difference between Go and C is in memory management; Go is garbage collected, while C isn’t. All together, the tutorials were informative and kept me very busy during my first week at Robinhood.
My First Project
After onboarding, I got to work on my main internship project. The application that my team was developing was called the Non-Custodial Wallet (NCW). It’s an app that lets users trade cryptocurrencies with zero network fees. I worked on the transaction history feature for the app. The transaction history is a crucial feature for a financial app like this because it gives users a clear historical view of transactions on their wallets. My project was to build an Application Programming Interface (API) that the frontend engineers could use to display the transaction history using two kinds of input arguments. The first input argument is the transaction address, which is unique for each crypto transaction. The second input argument is a combination of the transaction address and crypto coin type. I started working on this project by looking at examples of what the transaction history looks like for other crypto wallets. I learned more about the lifecycle of a crypto transaction by making my first crypto trade! After I understood what the transaction history should look like, I started designing the API. First, I worked on the API request and response data models. Next, I worked with the front-end engineers to determine what data they needed to display the transaction history. Then, I worked on learning more about the internal Robinhood service containing this API to understand how I would begin the implementation. After I finished the design document, I got to present my work to the rest of the team. I liked sharing my choices about the data models and hearing feedback from others on how I could improve the design document. Finally, I implemented the changes, tested them, and pushed them to production. Since this was my first project, I learned a bunch about software development at Robinhood like designing a feature, writing better code through code reviews, and testing my changes. These skills have helped me become a better and more productive engineer.
The Importance of Understanding
In late June, I completed my first project. I’d already done a lot of work, but I knew I wanted to improve my understanding of my team’s project. During my weekly meetings with my mentor and manager, I brought this topic up to them. The advice I got was to meet with other team members and learn more about what they do and to continue to write about what I’m learning. This advice should’ve been obvious, but I’m glad I heard it. In my engineering classes, if I needed help, I would attend office hours and find classmates who could help me. If I couldn’t solve a circuit analysis problem in ECE 200 or 211, I would get help. I would also study my notes to aid my understanding of the course material. So after I heard that advice from my mentor and manager, I learned something important. Regardless if I’m not at school, I should still use the methods and strategies that made me a successful student to make me a successful intern.
By writing about what I learned every day and by meeting with my other team members and asking questions, I was getting a better understanding of the NCW. My understanding of the overall project made it easier for me to work on my other two projects. My second and third projects involved working on notification features of the NCW. Although these projects were more complicated than the first project, I enjoyed them more because of how much I was learning and
accomplishing.
Wrapping up
My internship ended on August 12th, after I completed my third project and presented my projects to my team and the larger engineering organization at Robinhood. I particularly enjoyed the final internship presentations, because I got to hear feedback from a lot of other engineers at Robinhood about my project and listen to the presentations of my fellow interns. And at the end of my internship, I was offered the opportunity to return to Robinhood this summer. Overall, I’m glad I interned at Robinhood. And I’m proud that I used the skills I learned as an electrical engineering major in a software engineering internship. I’m looking forward to taking more ECE courses at NC State and starting my career when I graduate!