Note: Specifics of the projects in discussion will not be disclosed due to confidentiality

ABOUT NCR CORPORATION
For over 135 years, National Cash Register, or NCR for short, has been improving the way people do transactions in their daily lives. Adapting to the evolution of modern technology, the company has moved from a focus on physical innovation, such as inventing the electronic cash register, self checkout machines, and the magnetic credit card strip, to emphasizing digital innovation, now being the world's enterprise technology leader for banks, retailers, and restaurants. With currently over 34,000 employees in 160 countries, and solutions distributed in 141 countries, NCR has managed to become the number one global POS software provider for hospitality and retail businesses, as well as the number one provider of multi-vendor ATM software. Covering the creation of software, hardware, and services that are required to run every aspect of the enterprise, NCR provides an incredible service to their clients. With a digital-first mindset, NCR emphasizes their desire to help clients to streamline their business by bridging their digital and physical operations, and improve their connections with consumers. Furthermore, while the company headquarters are based in midtown Atlanta, Georgia, I was employed at the office located in Waterloo, Ontario, which focuses on extending and improving NCR's banking software solution.



JOB DESCRIPTION
Although my first co-op work term was 8 months of working remotely, I had the privilege to work as a Software Engineering
Intern for the Channel Services Platform (CSP) Foundation part of NCR's Waterloo office. To begin my time at this incredible company,
I was assigned to work on "Bion Team," which was a group of programmers who focused on investigating reported incidents by teams across
the office, and developed solutions to the bugs that are found. Using a Kanban board system, the members of the team constantly work on
issues in the backlog, whether it's investigating a reported incident to determine if a bug exists, or fixing discovered bugs across the
many code repositories owned by NCR, including the main project, Tx Infinity API (TxI), which is the backbone of electronic transactions
for a large bank in the USA, as well as all of the microservices that are developed to modularly accomplish specific tasks within the TxI
API calls. As a result, I was able to apply my extensive experience and knowledge of Java programming when working-on the Java-based
microservices, as well as any general programming knowledge and skills that I have gained from my education at the University of Guelph.
While I possessed some Java skills, most of what I needed to do my job on Bion Team had to be learned on the job, as NCR uses a custom
language called "API Toolkit" as the base of TxI, which is what I worked-on for the majority of my time. Furthermore, I explain the
technologies I used in more detail in the Tools and Technologies section below, but I had to learn numerous new tools on the job in order
to do my work, and the concepts I learned in school were relatively unrelated to the work I was doing on Bion Team. However, I believe that
by investigating reported incidents and fixing bugs for 6 months of my term, I have gained the ability to more easily detect possible issues
in code, even as I'm writing it, which will help me to be a more preventative and insightful programmer.
Afterwards, I was presented with the opportunity to join a different team for the last 2 months of my term, "Falcon Team."
Since I was eager to try new things, and they needed help with the new project that they were taking-on, I decided to leave Bion, and
start fresh again on Falcon. This new team was much different, being an Agile Scrum team that was focused on developing a brand new
project, involving revolutionizing the way people use ATMs. As a result, I had the opportunity to put my knowledge of Agile concepts
from my Software Design courses at the University into practice, as well as learn much more about Agile by experiencing it firsthand.
Additionally, I was able to use my experience with TxI from my time on Bion Team to transition quickly into the new team, and begin
developing REST (Representational State Transfer) APIs along with everyone else. Having me on the team was beneficial due to my vastly
different set of skills and tools that I acquired while working on Bion, and I even helped some members of my team in significant ways
with this exclusive knowledge. Some of my other main responsibilities on Falcon included the participation in Agile ceremonies such as
daily stand-up, sprint planning, sprint retrospective, backlog grooming, and more. I also conducted a few pair-programming sessions with
team members to help them develop solutions to issues they were having in their assigned tasks. Moreover, Falcon Team allowed me to
gain experience with working on an Agile team, which is extremely valuable to me, since I will most likely be in a position
where Agile methodologies are used in the future, and I'm glad that I could work on both Bion and Falcon to learn as much as possible
in my seemingly short 8-months at the Waterloo branch of NCR Corporation.



TOOLS AND TECHNOLOGIES
Working at NCR allowed me to get experience with many tools and technologies that I had never used, or even heard of,
before my first day on the job, as well as utilize some familiar ones to a greater extent than I had before. For instance, I use
Microsoft Teams for my part-time job at the University, as well as for one of my courses in the past, but I learned of many new
and useful features while using Teams on a daily basis at NCR, such as the ability to schedule a meeting based-on the availability
of attendees' individual schedules defined by the events in their Microsoft calendar. In addition, although I learned Java in high
school, and it is my language of choice, I learned even more about what is possible in the language through my work on the many
Java-based microservices that NCR utilizes for their Tx Infinity API, including how to effectively use a debugger.
Furthermore, I obviously learned about many brand new tools, such as the testing framework for Java, called "Cucumber,"
which I used extensively on both teams of which I was a part, testing code changes of my own, as well as of my fellow team members,
and writing end-to-end tests for the epics related to the new project on which Falcon was focused. Also, the main product, Tx Infinity
API, is written in a custom language created by NCR, called "API Toolkit", which is a combination of numerous different components,
including Spring, YAML, and Swagger, so I was required to learn an entirely new language that is unknown by anyone outside of NCR.
My experience of attempting to familiarize myself with the custom language quickly so that I could contribute to the team as soon as
possible is extremely valuable, as it serves as practice for excelling at learning new things in an unfamiliar environment. Moreover,
I also learned about Docker, Kubernetes, and vRA Clusters; I created and edited deployments, wrote dockerfiles, and made modifications
in order to perform tests with specific states of the cluster, as well as accommodate to the specific needs of the solution I was
developing for complex issues. In order to run specific jobs and monitor the Continuous Integration (CI) status when merging my code to the
master branch, I learned how to use "Jenkins," which is an automation server that allowed NCR developers to build, test, and deploy software.
I used DBeaver to manipulate data within the databases for testing purposes, and investigate issues with transaction history, also learning
more about the different types of databases used by NCR, including Elasticsearch, Redis, and Cassandra. On both teams of which I was a part,
I had the opportunity to practice troubleshooting and developing REST APIs, as well as utilize an application called "Postman," which allowed
for calling API endpoints easily for testing. Lastly, I used JIRA extensively on both teams, to track progress of my work, organize tasks, and
more, along with my JIRA Helper Tool Project that will be discussed more in the Work Highlights section below. All of these technologies were
immensely valuable for me to learn while working at NCR, as I will come-across them at many job placements in my future career, and being
knowledgeable about how to use them will be extremely helpful in the future.











WORK HIGHLIGHTS
During my time working at NCR, I had the chance to accomplish many things, and learn numerous valuable skills.
While working on Bion Team, I fixed multiple bugs caused by small logic errors by learning and utilizing their custom
language, API Toolkit, without the assistance of internet sources or clear and concise documentation on its use. In addition, I
conducted investigations on numerous reported issues, communicating with the necessary people to confirm that it is indeed a bug
that would need to be corrected. Subsequently, I successfully determined the root causes, and finally proposed, as well as
implemented, a solution for each problem. In fact, there was a certain incident, that was put on-hold for approximately a year due
to multiple people's inability to determine the cause of a somewhat serious issue, where important data was unexpectedly
being deleted, even after hours of investigation. This issue was assigned to me, and although I also had trouble with determining
the cause at the beginning, when I worked together with some other Bion Team members, we finally figured-out the problem, and
corrected this year-long defect in the system that nobody else was able to fix.
Moreover, Bion Team had a biweekly innovation session, called "Bion Labs," in which every member of the team would
participate in a brainstorm meeting to come-up with creative ideas to improve the way we do our work, like improving efficiency and
productivity by automating specific tasks. At my first Bion Labs session, I chose to start constructing the "JIRA Helper Tool," which
would increase productivity across any team who wished to use it, by automating tedious and time-consuming JIRA-related tasks, such as
updating a particular field on a regular basis. To begin, I used Flask and Python to create an API that automatically updated the field of
any JIRA tickets in the given filter to the given value, as our team was required to update a "Customer Facing Next Steps" field on
external incidents periodically, which took-away from our time to do more important work, like investigating crucial incidents that are
reported. Subsequently, with my advice and feedback, along with the thorough internal documentation that I left in the source code, a Summer
Intern took-on the continuation of the tool's development as his sole responsibility, as the higher-ups at the office believed the tool
to be a great idea that deserved more attention. Furthermore, I initiated, and was largely involved in the development of, the JIRA Helper
Tool that is now in a working state, with many useful features that greatly increase productivity through automation, with a small amount
of work required for it to be available to many teams at NCR. Another product of Bion Labs that I created for the employees at NCR is a
bash script to automatically generate a file that is used to set up one's local environment for running NCR's Tx Infinity API on their
machine. Before, people had to manually pick-out specific port numbers and names from a long list on the team's vRA Cluster, and insert
them into their local environment file; now, they can use my script to generate their entire environment file in a few seconds, with
all of the updated port numbers that are required.
In July, I participated in NCR Corporation's Global Hackathon, with 3 members from Bion Team. Although, many of them were
focused on high priority incidents that required investigations and quick fixes, so I did most of the coding myself for the competition.
We proposed an idea involving streamlining the communication between the developers and the client, as the current method of communication
was simply via email, and could be greatly improved. Thus, we believed that we could create a client portal in which they can communicate
much more effectively with the developers, through discussion posts, as well as viewing and interacting with the developers' JIRA tickets
directly, with the help of the APIs we create. Ultimately, since all members of my team were generally occupied for the duration of the
competition, I worked independently, and I completed multiple APIs that are intended to allow the client to view the status of, and edit,
the JIRA issues that pertain to them. It was a fun experience nonetheless, and I am grateful for the extra practice that I received for
writing APIs and integrating it with other APIs, which is, in this case, JIRA.
On Falcon Team, I worked-on a particular story that involved updating the handling of the request body of one of the
new APIs we were developing, and I noticed an inconsistency in the system's ability to validate the input. As a result, on behalf of the team,
I led an important discussion about requesting an additional feature for the validation system, and troubleshooting the issue I was facing,
with another team that handled validation for the APIs, multiple Product Owners, as well as Systems Software Architect. Ultimately, the issue
was resolved successfully, and my clear communication that connected the many busy individuals involved was extremely helpful in reaching a
conclusion.
Lastly, another work highlight would include the multiple presentations that I conducted throughout my time on both Bion and
Falcon. At the end of each sprint, every two weeks, the NCR software teams would hold a sprint-end demo meeting, where each team would quickly
outline what they have completed in the past sprint, and demonstrate their changes to the rest of the teams when applicable. Although Bion Team
didn't follow the timeline of the sprints, and utilized a Kanban board for completing tasks, we still participated in the biweekly sprint-end
demo meeting, and for large majority of the meetings I attended, I was given the responsibility of presenting our summary on behalf of the team.
Additionally, I had to create our team's presentation slide for each time that I was assigned to present, gathering the detailed information on
what was completed in the past two weeks, and summarizing it in a way that was clear and concise for the people who aren't particularly familiar
with what we're working-on. As for my time on Falcon Team, I presented my implementation of an important feature involving the restructuring of
an API request body to accommodate our updates to authentication to the Product Owner with a level of clarity and detail that satisfied his concerns,
causing him to have no questions or concerns after my demonstration was finished.



GOALS
- LITERACY - Information Literacy: Tech Stack Familiarity and Efficiency
Goal
Understanding the tech stack and tools frequently used at NCR, to improve efficiency and reliability on the team, as well as develop skills for learning new tools quickly for the future.
Action Plan
I will read the documentation, and frequently take-on tasks that challenge my understanding of the tech stack and the various tools that developers use at NCR, in order to familiarize myself with the tools quickly. This will help me in the future as well, as it will serve as experience with having to learn new concepts and utilities in the shortest period of time possible, so that I may make significant contributions to the team's work as soon as possible.
Measure of Success
I will measure my success by my ability to complete tasks independently, without any assistance from my team members, as well as by exceeding expectations in regard to the haste with which I can complete tasks. For example, I aim to achieve a rough average of completing 1 ticket per week by the end of the term.
Reflection
Throughout the term, I have continued to frequently take-on tasks that vary in required skills and knowledge, pushing myself to learn more of the tech stack that developers use at NCR. As a result, I have improved my understanding of the tools needed to complete various tasks, and I will continue to learn in order to be an effective, efficient, and well-rounded employee for the remaining term regarding the types of issues that I can solve independently. Overall, I have reached my goal of attaining an average of roughly 1 ticket per week by the end of the term, with the actual average being slightly less than 1, due to some higher-complexity tasks, which require more time to be completed thoroughly, taking priority over small tasks that would be completed in a much shorter period of time. Therefore, I believe that this goal was still achieved in an outstanding fashion, and while improvement can still be made, the reason for being on the lower-side for the numerical average is logical and expected for a new developer in a role like mine. - LITERACY - Technological Literacy: Git Proficiency
Goal
Become proficient with git in a professional setting, as well as fully understand the versioning and release processes: I will strive to know the proper naming conventions, be efficient and accurate when reviewing other team members' changes, and understand how to use git to properly develop with continuous integration and the release/versioning process. These skills will be valuable for my career, as all developers use some kind of version control tool; learning github, which is used by NCR, will be applicable to all other jobs in the future.
Action Plan
I will ask my team members any questions I have about git, and how I can use it effectively, throughout the term, as well as look-into specific github features myself, in order to familiarize myself with using version control tools in a professional setting, where multiple developers are working on a large project simultaneously, and there are scheduled releases to the client(s).
Measure of Success
I will measure my success by reflecting on my ability to use git both properly and professionally, while maintaining independence, by the end of the term, with feedback from my team members and/or team lead as an indicator of my effectiveness. Other than simply utilizing git effectively on a daily basis, it also includes using the proper terms when communicating, reviewing others' changes frequently and giving useful feedback if necessary, and using proper naming conventions.
Reflection
Over the term, I have asked many questions about git; its tools, its usage, its good practices, as well as any particular aspects of which I should be aware that are unique to development at NCR. In addition, I have looked-into different techniques that use git to make my work more efficient on my own. I have also regularly reviewed my team members' pull requests, adding comments if I have concerns or questions, and checking their work to look for any small issues that may cause problems in the future. Lastly, the feedback given by my team members was very positive regarding my use of git, and my vocabulary relating to git as well, demonstrating my great success in achieving my goal for the term. - COMMUNICATING - Oral Communication: Presentations and Meeting Participation
Goal
I will develop my oral communication skills, which will be valuable to my career, as I will need to express my ideas in meetings, and clearly present information to co-workers during demonstrations for which my team is responsible, among other things.
Action Plan
To achieve this, I will participate in daily standup meetings and brainstorming sessions, familiarizing myself with the language used in a professional software developer setting, as well as practice/rehearse to prepare for demos that I must present on behalf of my team throughout the term. In addition, I will participate in meetings with the client, US Bank, about particular issues that I may be working-on. By doing these things, I will get significant experience with oral communication, and expand my vocabulary to include terms often used in the software field.
Measure of Success
I will measure my success by the smoothness and clarity of the demos I present throughout the term, being able to answer all questions that the audience has at the end of the presentation, without any assistance from my team members. In addition, I will strive to be sufficiently clear in my demos/presentations, so that there will be less than 3 questions afterwards. Lastly, I will record a list of new words and terms that I learn throughout the term, and integrate them into my daily standup meetings, as well as any demos; I plan to learn at least 5 new useful words/terms, and the context in which they are commonly used.
Reflection
I have presented to other NCR employees in a clear and concise manner this term, having presented most of the sprint conclusion slides on behalf of my team, as well as some live demos to my team regarding my work on our innovation projects every 2 weeks, and also a recorded demo video that I recorded with my small team for the NCR Hackathon event. I received less than 3 questions afterwards each time that any questions were posed, also demonstrating my ability to answer questions related to the presentation with a great deal of clarity. Additionally, I have learned at least 5 new words/term during this time, and even used them while communicating to other NCR employees within meetings, with some examples being the following: PR (Pull Request), Cluster (regarding Kubernetes), CI (Continuous Integration), E2E (End-to-end), and Smoketest. Furthermore, I also learned many new terms that will be useful to know and use within a software developer setting, as well as practiced presenting to groups of people at NCR, succeeding in achieving my final goal of developing my oral communication skills over this work term. - CRITICAL & CREATIVE THINKING - Creativity: Brainstorming Meeting Contribution
Goal
Contributing to brainstorm meetings with ideas of my own, which is not only related to expressing my creativity in a professional environment, but also understanding the work to a sufficient degree so that it is possible for me to construct ideas that are major contributions.
Action Plan
I will continue to improve my understanding of the work, and contribute all of my ideas, despite how small, when brainstorming with the team, requiring me to also develop my brainstorming skills, with which I have a very small amount of experience. I will also brainstorm outside of these meetings, and construct lists, to ensure that I have ideas that I believe are significant enough to be a major contribution, as well as well-received by all team members.
Measure of Success
I will aim to present my team with at least 1 significant idea, and/or 3 small ideas, in brainstorm meetings by the end of the term, where the sufficiency of the significance is measured by the positive impact that the resulting execution has on the team, as well as the team's reception of the initial idea, where they will judge its potential, and speak their minds on its possible effectiveness for the team
Reflection
I achieved my goal of presenting the team with a significant idea in a brainstorm meeting, as I suggested, and implemented, a tool for everyone to use that increases productivity through the automation of retrieving pieces of information from a large body of text. More specifically, I created a script that collects all of the port numbers for each service on the team's cluster that we need to update on our local machines' environment variable setup in order to successfully run our software. Before I created this script, the team would have to take time to scan the lengthy cluster services list to look for the specific ports that are needed to be updated, but with the new tool, the script automatically generates a file with all of the needed ports and service names, that can simply be run on one's local machine in order to update the environment variables. I received a very positive reception for this tool, and I even introduced it to the new team with which I was working for the last couple months of the term, with more positive feedback, so I believe that I achieved this goal in an outstanding manner. - LITERACY - Technological Literacy: Learning About Agile Scum Teams
Goal
I plan to learn how to effectively work on an Agile Scrum team, to familiarize myself with the process, and subsequently improve my efficiency on any team that utilizes Agile methodologies in the future. By the end of the term, I will be experienced in the Agile process, and have an expanded technical vocabulary, as well as be practiced in common Agile activities such as Sprint planning or retrospective.
Action Plan
I will attempt to understand key terms that are used on a regular basis, by taking-note of any unfamiliar terms when I encounter them, and then researching online or asking a fellow team member in order to define the words. In addition, I will participate in Agile activies such as Sprint planning and Sprint retrospective, allowing me to practice assigning story points to tasks, and giving insightful, helpful feedback at the end of each Sprint.
Measure of Success
I will measure my success by recording, and also defining, the number of new terms that I learn related to Agile methodologies, having a list of at least 3 words that I did not fully understand before working on the team. Also, I will get feedback from my supervisor regarding the level of quality of my feedback in the Sprint retrospective; assigning story points to tasks in Sprint planning is a difficult skill to measure, as it is an anonymous vote on our team.
Reflection
Ultimately, I believe that I have achieved this goal, as I have learned much more than 3 terms/words regarding agile methodologies, and my supervisor has confirmed that my feedback in Sprint retrospective and planning meetings was of a high quality that she would expect from any member of the team. Furthermore, some examples of terms I have learned, along with a good understanding of what they mean, and how to utilize them efficiently when communicating with team members, include the following: PI / Program Increment, Epic, Story, Spike, SP / Story Points, and Burndown Chart. The PI, or Program Increment, refers to the number that defines the current stage of the product on which the team is working, being like a version code. An Epic is a general, large task that must be broken-down into smaller tasks for team members to accomplish separately. An Epic is essentially a collection of what is called a Story, which is, in simple terms, a task with specific requirements that is small enough that a single team member will usually be able to handle it on their own. Moreover, a Spike refers to a type of task where an investigation needs to be done on a certain topic, usually to gather information and create more specific guidelines for the stories related to the same topic. Story Points are a unit of measurement that gauge how significant a story is, or how much work it takes to complete. These points are often assigned to a story by holding a vote within the team, and they can only be numbers that exist in the Fibonacci sequence, such as the following: 1, 2, 3, 5, and 8. Roughly, from what I've observed, 1 SP is equivalent to 1 full day of work, meaning that a story with 1 SP is expected to be completed in a day or less, while a story with 5 SP is expected to take approximately 1 week. Story Points are used to let the team know how long a story will take to complete, and lets them more easily judge how many tasks they can handle in a Sprint. Lastly, the Burndown Chart is a visualization of the progress of Stories within the Sprint, being a line graph starting at the value of the total number of SP planned for the current Sprint, with the value decreasing by the number of SP assigned to each Story that is completed/closed on the respective day. A Burndown Chart usually shows a line graph with a steady decrease towards the end of the Sprint, and if it stays at a high value without decreasing, it is clear that the team is not completing their tasks at the expected rate. Therefore, as shown by the listing of numerous terms related to agile methodologies, as well as their meanings and usage on an agile team, I have reached my goal. - LITERACY - Technological Literacy: JIRA Helper Tool Completion
Goal
I will complete the special project that I have been working-on, the JIRA Helper Tool, which will help employees across NCR to improve their productivity and efficiency through a web app that can perform many actions related to JIRA, saving precious time that would otherwise be spent doing tedious tasks. By the end of the term, I will have it so the tool is easily accessible and usable by everyone who wishes to utilize it, using Docker and Jenkins to deploy and build and maintain the application.
Action Plan
By working-on this project every other week for a few hours, as instructed by my supervisor, I will complete the Jenkins job that will build and deploy the JIRA Helper Tool whenever new changes are pushed to its repository by the end of the term. In addition, I will research Docker and Jenkins in order to use them effectively, and increase the ease of maintenance for the tool, as I want the tool to be widely used at NCR in the future, increasing productivity at the office, and consequently allowing the company to continue succeeding, even after my term is over.
Measure of Success
To measure the success of this goal, I will evaluate the status of the JIRA Helper Tool at the end of my term; it must be completed, accessible and usable by anyone at the office that wishes to use it, with a working Jenkins job for maintenance. In addition, I will consider it a success only if the tool is in a good state by the end of my term, on December 17, and doesn't necessarily need major reworking before people at the office will actually use it for their regular, tedious JIRA-related tasks.
Reflection
At the end of my 8-month work term at NCR, the JIRA Helper Tool that I started was in a good condition, with the only remaining step being to give access to the many teams at the office through creating a Jenkins job to handle the docker image deployment. For context, the tool automated many tedious and time-consuimg processes for NCR developers, increasing overall productivity. As an example, the tool allowed the bug-fixing team to simultaneously update the "customer facing next steps" field of all incidents actively being investigated with each particular issue's current status, rather than updating each one manually, which is required mulitple times per week. I began the side project, and its development was later handed-off to a summer intern as his sole responsibility. I helped him to familiarize with the existing Python code that I wrote, and offered advice frequently when he asked me questions on how to do the implementation. Eventually, his term was finished, and the JIRA Helper Tool was in a great state, but only able to be run locally, which isn't convenient for the many teams who want to use it. Unfortunately, I was busy with other work, and my team neglected the biweekly innovation sessions, so I didn't get to finish the Jenkins job and deployment of the tool, and then I switched teams for the last few months of my term, so it never got finished. However, anyone can easily finish the development of the tool, just making it readily accessible to all teams, so I believe that it is still in a good state by the end of the term, as it is also usable by running locally. Therefore, I have successfully achieved my goal of ensuring that the JIRA Helper Tool is in a good state, and on-track to being useful for the people at NCR. - CRITICAL & CREATIVE THINKING - Inquiry & Analysis: Assisting Team Members When Able
Goal
When helping other team members with their tasks, because I am either finished my task early, or have to put it on-hold for an uncontrollable reason, I will give considerable assistance that helps them to detect possible issues with their code changes.
Action Plan
In order to achieve this goal, I will always ask questions to clarify the intentions of my co-workers when I am assigned to help them with their task, and also conduct any additional tests that I believe may help to detect possible issues. For example, I will write tests that will follow particular scenarios that I think may have gone unconsidered by my team member while making the code changes, increasing the quality of the code overall, and helping to prevent future problems and bugs.
Measure of Success
I will measure my success through the number of instances where I have detected possible issues in my team members' code changes, whether it is through a code review, or through the act of helping with writing tests for their story when I have the capacity to do so during the Sprint. I will either message a team member about my concerns, or address it in a code review, at least 3 times before the end of the term, and keep record of the instances.
Reflection
I have achieved this goal, as I have finished my task early many times, and chose to help other team members who needed assistance, aiding in many ways. For example, while I was helping a team member by taking care of the tests for his implementation, in order to lessen his workload for reaching the deadline, I detected multiple issues regarding the code logic and suggested some solutions. In addition, when helping a different team member in the same manner, I constructed additional test cases outside of the instructions I was given, which happened to detect a particular issue that I was concerned about, for which I also suggested some solutions. Thirdly, I pointed-out formatting/style inconsistencies in one of my team members' code in a code review, that would have been confusing to the next programmer(s) to touch that code. Furthermore, these are three separate examples of instances where I aided my team members in a significant way after finishing my own task early, along with many more smaller acts of assistance, so I have clearly reached the goal that I set.
CONCLUSIONS
In summary, my 8-month work term at NCR was an excellent experience in which I gained many valuable
skills, such as the ability to more easily detect possible bugs while writing code as a result of my time on
Bion Team, or my familiarity and experience with Agile practices and REST APIs that I can apply to my future
job placements due to my time on Falcon Team. Some more useful skills that I picked-up during the term include
how to use Docker, Kubernetes, debuggers, Postman, and git in an effective way for a professional setting. Overall, my
time working on both Bion and Falcon, being extremely different teams with significantly different purposes, has
given me the privilege of learning more than I ever would have by only working with one of them. Over the term,
I have become more confident in my abilities regarding programming and oral communication, turning into an
increasingly reliable member of the team, and I'm now certain that I will be able to thrive in any future job
that I acquire.
NCR Corporation's Waterloo office treated me with respect as a co-op student, as if I was on the
same level as any other employee, and enabled me to practice what I had learned in school, and learn countless things
that can only be learned through practical experience. I had the chance to work and interact with many individuals at
NCR, having the freedom to pursue the tasks that I desired, organize my own meetings, write my own documentation, and
more as an independent, competent member of the team. In addition, both teams had a great atmosphere, in which I always
felt included, and we could have fun whilst still doing our jobs effectively. For example, both teams scheduled
occasional "fun lunches" where the team would turn on webcams and either have intriguing conversations about everyone's
life, or play games such as Skribble.io, Codenames, or Jackbox TV, allowing us to bond as team members despite
working remotely for months due to the severity of the global pandemic. Overall, working at NCR Corporation was an amazing
experience, and I would strongly consider working there full-time after I graduate, if given the opportunity.


ACKNOWLEDGEMENTS
I would like to thank the following people for making my first co-op experience amazing, as I
truly enjoyed working with each and every one of them, and they taught me so many valuable things
during my time at NCR that I will never forget:
BION TEAM (May 3 - Sept 28)
- Sairah Naheed - SW Engineering Manager II
- Atishay Goyal - SW Engineer II - Bion Team Lead
- Pranav Patel - SW Engineer I
- Meghna Raman - SW Engineer I
- Joel Smith - Intern - Software
- Aleksandr Kalenchits - Intern - Software
- Avadesh Sharma - SW Engineer II
- Joshua Xavier - Intern - Software
- Venkata Sai Naveen Siriboyina - SW Quality Engineer II
FALCON TEAM (Sept 29 - Dec 17)
- Gary Longster - Software Development Manager
- Mike Ancell - SW Product Owner III
- Dima Abu-Alhaija - SW Engineer IV - Falcon Team Lead
- Danilo Vladicic - SW Engineer I
- Jesse Millward - SW Engineer I
- Hareesh Sandupatla - SW Engineer III
- Rajbir Singh Azra - Intern - Software
- Harsimranjit Singh - SW Engineer III
- Nidhi Patel - SW Quality Engineer II
- Mahmood Riyadh - Contingent Worker SW Function
- Nathan Mankarious - Contingent Worker SW Function
- Johnnyson Ding - Contingent Worker SW Function
- Gunasekhar Enugu - Contingent Worker SW Function
- Kanchana Sriperambudur - Agile Project Manager II
- Ted Martin - Technical Writer