An iNCRedible Time - My Co-op Term at NCR

Posted 01 May 2022

Introduction

This post is a reflection on my term working at NCR Corporation in Waterloo. My supervisor was Jeewhoon Park, my Team Lead and a Senior Developer.

About NCR Corporation

NCR Corporation is an American software, consulting, and technology company that operates in the banking industry. Many of the company’s products are used in banks and stores, with self-service checkouts, POS terminals, ATM/ABMs, barcode scanners and more. At the Waterloo office, we primarily focused on the software that facilitates these products and their uses.

ncr This is where the magic happens, except I worked remotely

Job Description

As a Co-op Software Developer under the CSP Foundation application team, our focus was on primary banking services that are used for transactions by millions of customers daily. During my term, I developed and implemented new features in our many microservices, and worked with common industry tools such as Java, Spring Boot, Docker, Kubernetes, Linux, Bash, and Swagger. I also had the opportunity to work with internal tools such as API Toolkit, NCR’S domain-specific language and framework which accelerates API development.

This role came with many opportunities that allowed me to improve my skills in both unit and end-to-end testing, as well as participating in code and test case reviews, which I first learned about in my classes during the previous semesters. To accomplish this, I used JUnit, Cucumber, Jenkins, GitHub, and Jira. I also gained new skills in debugging individual microservices and multiple microservices together with Kubernetes, Elasticsearch, Kibana, Grafana, IntelliJ IDEA, and API Toolkit internal tooling.

A large part of being a Software Developer is being able to adapt and innovate as issues and challenges arise. This role provided me with an opportunity to grow and develop my soft skills such as communication, organization, and collaboration. I also got to participate in unique opportunities such as helping hire co-op students for the upcoming work term.

Working remotely was a unique challenge, especially when adapting to a new role and work environment. I had to take time to find what worked for me, make sure to take breaks, and communicate frequently with my team when I was having issues.

Work Term Goals

One of my goals during my work term was to learn about the software and tools that are used in the industry that aren’t explored in our classes. I focused on containerization and deployment with Docker and Kubernetes due to its broad use across the industry.I worked through videos and tutorials to learn the foundations and then reached out to teammates for assistance. Since CSP Foundation’s work focuses on microservices, I used these two technologies on a daily basis and got very comfortable with them.

pc What a typical day’s work looked like, except with Kubernetes and IntelliJ instead of cmatrix | lolcat

Documentation is an important skill in software development that I wanted to work on, particularly documenting the progress the stories assigned to me. Using Confluence, I was able to learn about the architecture of the systems developed by CSP Foundation. With Jira, the team kept track of progress on stories and epics. These tools were used frequently, especially during our Agile ceremonies, and I got comfortable with them. I also learned about testing documentation, which helps to write unit and end-to-end tests faster.

Agile is an important part of the software development process that I wanted to get more experience with during my work term. I found that Agile and its ceremonies are very participatory and that I was quickly involved in the process. Daily standup meetings were conducted to share our progress on stories and to bring up and solve issues we encountered. Teams under CSP Foundation participated in bi-weekly sprint demos where teams share their progress on the stories they picked up. The beginning of sprints had planning meetings to determine what new stories we’d be working on, and retrospectives to reflect on what went well and what to improve on in the coming sprint.

Conclusion

I enjoyed my time at NCR, and my work term was valuable in giving me insight into the world of software development. Through working with many new tools and technologies, it helped me understand what parts of software development interest me, such as internal tooling, and will help guide me into the next phase of my journey.

Acknowledgements

I’d like to thank all of the people that I met and worked with during my time at NCR. This includes my teammates on Pi team who helped me resolve issues and get my work done: Annabelle, Alexandre, Amrit, Balabhaskar (Bala), Lamonte, Phaneendra (PB), and Zak. I want to give a very special thanks to Jeewhoon for being an excellent and patient team lead, supervisor, and mentor. I also wanted to thank Kanchana, Gary, Mike, and all the others that I had the opportunity to work with. I had an iNCRedible time!