By: Jordan Manthey
I’m 21-year-old and from Tampa, Florida, going into my 4th year as a UC Berkeley undergraduate student, studying computer science and data science. Growing up along the Gulf of Mexico provided me with a conscious appreciation for water and consequently sparked my interest in Xylem and its mission to Solve Water. My experience as a software engineer intern here has allowed me to apply the skills I’ve learned from university to real-world problems. Though I feel that my classes have prepared me well for a career in software development, there are still several gaps between academia and professional work-- specifically around working in a team environment. Valor has done a phenomenal job bridging these gaps for me this summer, and here I’ll highlight some of my key learning experiences as an aspiring developer.
At best, my computer science classes have permitted one partner on projects to ensure academic integrity for all students, however, these restrictions no longer apply in the workplace with a full team of software engineers. I’ve found it incredibly useful to ask questions, take in suggestions, and learn from other people’s code in order to facilitate my own work. Valor uses an issue and project tracking software, JIRA, which reinforces this type of collaboration by allowing team members to make comments and share code snippets on any task. Because JIRA shows which people are assigned to each problem, it has been perfect in showing who to look for help when needed. I have learned that this tool is critical for software development and can highly increase team productivity when used correctly.
I also quickly found it necessary to make sure my own projects are compatible with the company’s existing software and work properly on each team member’s machine. This problem has always been handled for me or completely overlooked in school, so I was intrigued about learning the ways in which Valor standardizes their software. Here we use Docker Engine, a software tool that deploys virtual containers to provide each team member with the same development environment across platforms. It’s very powerful knowing that the team will be able to run my code as expected when I work within the Docker container, and vice versa.
I‘ve had experience creating unit tests for my academic projects to ensure my code behaves as expected, but this has always been a posterior exercise for my own sanity. Throughout my internship, I’ve experienced the benefits of writing unit tests before beginning the implementation process. Tackling real-world problems is typically not as clear-cut, and it can save significant time to consider the end goal of your program before you even get started working. This method will similarly make debugging sessions easier since you already have proper test suites to traceback any issues. Unit testing maintains a greater purpose when working within a development team-- It not only proves to others that your code runs properly, but it also will act as a signal to team members when their own changes compromise your work later down the line.
Though I took what I’ve learned at UC Berkeley and applied it to my internship, I now plan on carrying what I’ve learned at Valor over into my final year as an undergraduate student. I give many thanks to the enjoyable and supporting team I met here this Summer as I learned and laughed a lot. But most importantly of all, I’ve mastered the Bay Area public transportation system.