2023 Co-op Work Term Reports
Winter 2023 Co-op Work Term Report
Intro
In September of 2022, I applied for an internship at SAP through the University of Guelph's Job portal. After a very friendly and pleasant interview experience, I was offered an internship at SAP a software developer on the cloud reliability team, one of the various teams in the Waterloo office. SAP is a multinational software company and this would be my first internship working at such a large company so I was thrilled to receive an offer and gladly accepted
About SAP iXp
SAP is a multinational software company with several different products and services. Their internship program, known as SAP iXp, hires thousands of interns worldwide. Moreover, SAP greatly values supporting it’s employees by helping them learn and develop their skills to support their career goals, and this is why learning is such a greatly emphasized part of the internship. This is especially helpful in the software industry where you must get familiar with constantly changing technologies.
My Goals and Reflection
- My first goal was to learn more about Kubernetes (aka k8s).
- I have a significant amount of experience working with k8s from previous internships but I was hoping to learn k8s from a different POV by seeing how it works at a much larger scale.
- During the internship, I was able to refresh my k8s knowledge by taking an online k8s course, from a library of courses offered to SAP employees. This helped fill some gaps in my k8s knowledge before starting on my internship project. The project I worked on involved essentially using ephemeral containers to debug unhealthy database pods. This was a great opportunity to learn how to use such a powerful feature in Kubernetes. Also while working on this project, there were many times I had to use kubectl (the k8s command line tool) to interact with Kubernetes clusters, which also contributed to my learning.
- Overall, I was able to learn a lot about Kubernetes throughout the term. Especially about debugging in Kubernetes using ephemeral containers which is a newer feature in k8s.
- Another goal of mine is to learn about potential security implications of developing
software.
- When starting the internship, I was curious about security in software development and wanted to learn more about best practices, and common concerns that might come up.
- During my internship, I was able to discuss proper access control and potential security implications with my team while working on the project for debugging pods in Kubernetes clusters. This helped me gain a better understanding of security best practices in software development.
- My last goal was to improve my inquiry and analysis skills. I wanted to get better at
inquiring into a new subject, and analyzing potential solutions to problems.
- Throughout the internship, there were several moments where I had to inquire into potential solutions for a problem. There were times I had to email colleagues internationally to ask about how they approached a similar problem to what our team was facing. I also had to go through trial and error, asking the team for feedback on my work, and do research online.
- Using these various strategies, I was able to complete my internship project. Moreover, this experience taught me more about inquiry and analysis especially in the context of software development. I certainly feel more confident tackling new problems, especially in the context of Kubernetes and cloud software development after this internship.
Overall Reflection - Final Thoughts
I can confidently say that my first work term at SAP went extremely well. I got to learn more about Kubernetes and some of it’s newer features, I learned more about security, and I improved my inquiry and analysis skills; not to mention several other technologies I got to use on the job like python, argo, shell scripting.
Acknowledgements
A big thank you to Mark and the rest of the HRE team for all the guidance and support!
Summer 2023 Co-op Work Term Report
Intro
After reflecting on my first few weeks of my winter internship at SAP, I liked it so much that I became interested in coming back during the summer. For the summer, I interned on another team at the Waterloo office which was responsible for several things, including the development and maintenance of some key services for SAP HANA Cloud and related products.
Background - About the team
The Phoenix team had multiple responsibilities, including the development and maintenance of a cloud service written in go (Golang), which was responsible for creating and updating K8S Custom Resources; a key component of the cloud infrastructure supporting SAP’s services.
My Learning Goals and Reflection
- My first goal was to learn go (Golang).
- Go is a programming language known for many things, including it’s support for concurrency, static typing, and fast compilation. For this and many other reasons, it is a commonly used language for developing cloud services, including those that run in k8s clusters. The main cloud service I worked on was written in go which was very exciting since I was previously interested in learning the language.
- During the onboarding I familiarized myself with the codebase, made sure to read the Go documentation, made use of online tutorials, and wrote down notes. All of this helped me learn Go little-by-little, until I felt comfortable making some basic Go changes and testing them out. Feedback from my teammates on pull requests, as well as simply asking them questions also helped improve my understanding of Go.
- By the end of my internship, I had successfully made multiple key bug fixes and improvements to the service. Overall, I felt very comfortable working with go by the end of my internship.
- Along with learning go, I wanted to also get better at testing my changes to make sure
things are working as intended and any potential bugs are dealt with.
- Throughout the work term, I worked on many different updates to our services, ranging from small updates to the development of some key features. Nonetheless, every time I made a change, I tested it to make sure it was working as expected. Sometimes I even caught errors in my own code and was able to fix these. Changes were tested at multiple levels; including end-to-end tests, integration tests, unit tests, and I made sure to manually test my changes as well.
- All of this taught me a lot about the value of testing. Moreover, I was introduced to how testing is done at scale at such a large organization where changes are constantly being made. I also learned how to use some of the testing packages in go (Golang) to write unit tests. Overall I’m very glad I got to learn more about testing which is one of the key skills that a software developer should have.
- My third goal was to get better at problem solving.
- Problem solving is one of the most important skills for a software developer, since most of the tasks involve some level of problem solving. Furthermore getting better at problem solving involves getting better at reading, communicating with others, time management, so it’s an all-around essential skill.
- Specifically, I wanted to get more comfortable approaching new stories and tasks during the internship. During the internship I had plenty of practice, by approaching new stories and issues, asking for help, testing changes locally. I naturally got better at approaching new issues through all the experience I had gained on the job. Hence, I can confidently say my problem solving abilities improved.
Conclusion
In summary, I could not have asked for a better summer internship. I got hands-on experience with cutting edge technology, accomplished my goals of learning golang as well as getting better at testing and problem solving. The supportive culture and work-life balance helped provide the perfect internship experience. The frequent social events at the Waterloo office were a lot of fun and helped brighten up the summer.
Acknowledgements
A huge thanks to the Phoenix team for providing me with such an exceptional internship experience!