An Electrical Engineer’s Introduction to Software Engineering
This summer, I joined Xandr’s Data Platform Team as a Software Engineering intern. As an electrical engineering major, I’ve had some experience with coding through my classes and side projects, but it was generally for hardware and data science purposes and was never purely for a software role. The few computer science classes I had taken were largely focused on the algorithms and math behind computer science and not necessarily the latest tools that were being used to create software products. However, I’ve always been one who is open to opportunities to learn new skills outside of my comfort zone, which is why I applied to and accepted the offer to Xandr. Considering that I had my options as an electrical engineer for my career such as hardware engineering, data science, and software engineering, I felt it was important for me to explore different paths before committing to a field.
My role for this summer focused on web development, including both the front-end and back-end activity. The ultimate goal of the team’s project was to develop a user interface that would provide cost analysis of the Amazon Web Services (AWS) workloads of Xandr. My team was committed to monitoring AWS usage of different teams across Xandr to ensure the best utilization of resources and avoid idle time of EMR clusters to maintain cost effectiveness. Hence, my work required me to understand how a workload is defined and update the rule patterns for any orphan jobs. To do this, I created an interface that had a table with all rule patterns and associated information that could be easily edited and updated by my team members.
Once I made a basic table with these capabilities, I began working on the back-end side of the website which would gather and edit the required data in a MySQL database. This required even more learning for me as I did not have previous experience working on the back-end of such projects. Though I knew SQL from data science classes at school, figuring out how to connect to the database to the server-side code and how to send data between the server-side and client-side code was the most difficult part of the project. After thorough research, I found that Node.js was the right tool to solve this problem. Using this, I was successfully able to connect both aspects of the project in a similar manner to the diagram shown below.
Now that the table was complete, I had to create a login page for the table as we wanted to ensure that only certain users had access to the page. Luckily, many of the skills I had learned designing the main page translated into developing the login page, so it felt much easier for me. A key learning during this project was understanding how encryption worked, as I had to ensure that passwords would be safely stored and could not be maliciously accessed. With the website complete, it was time for deployment. The application was deployed in EKS, which I had no experience with, giving me the opportunity to learn about containerization and how to deploy application in EKS.
Overall, I really enjoyed my internship at Xandr. I was able to learn a lot about web development and the recruiting team hosted a number of events, making me feel a part of the company despite working remotely. I would especially like to thank both my manager Ramprasad Koya and teammate Siddharth Vadlamudi for their patience in helping me understand the different components of the project, and for pointing me in the right direction whenever I got stuck. Without their help I would not have made nearly as much progress as I was able to.
About the Author: Anirudh Kuchibhatla is a rising senior at Rice University studying Electrical Engineering. His favorite hobbies include gardening, video games, and reading books.