May 2017 - August 2017
My co-op adventure started at Laborie, and I was very lucky to get accepted as a Software Engineer at this amazing company. They were a urodynamics company, making both hardware and software systems for their products. The only negative about my time here was having to spend hours driving between the Mississauga office, and my house in Guelph. Here I greatly increased my confidence, as well as sharpened my ping pong skills.
Here I was introduced to programming in C#, a language I would fall in love with. I was using C# and XAML to create a windows application using the WPF subsystem of the .NET framework. I also got my first experience with SQL, which was one of my goals for this term. I learned a lot on this term, and I had a lot of fun with the corporate culture Laborie had to offer.
September 2017 - December 2017
My second position was as a Software Developer at a smaller company, Trans Plus. They created and maintained a legacy software that is used by transporation dispatchers to plan and cordinate routes for shipments. They were also using C#, so this allowed me to jump in quickly and get started. Over my term I fixed over 100 bugs (I was proud of reaching this milestone), as well as working on a new GPS window feature. This position increased my ability to read, and comprehend older code. It forces you to get into the mindset and try and understand why soemthing was written in a certain way, to fix the problem while also not introducing any new ones.
July 2018 - September 2018
After I had a health scare in April of 2018 (missed exams and interviews for a position, with 2 weeks in the hospital) I applied as a Molten Iron Pour Student at Wescast, an automotive part manufactorer. After talking about my schooling with a few individuals in the break room, the upper-office tech team learned of me, and pulled me off of the floor to help on their software. The team consisted of two mainly hardware team members and me, a student with some basic knowledge.
Over my time here, I learned a lot as I was the only software developer they had in a few years. I used my skills at creating windows applications to debug and recreate updated applications used to control things from payroll to labtech equipment showing steel alloy compositions. I was also introduced to server and database management, setting up several SQL jobs to keep their massive amounts of data flowing. This was a good learning experience, but I did feel overwhelmed trying to learn without guidance, which is why I didn't return.
January 2019 - August 2019
About NCR
NCR (National Cash Register) is a company that has been around for over 135 years! Being in software, I never imagined I would be a part of an organization this historic. It is easy to see how they have remained a competitive company this long. They began by manufacturing the first mechanical cash registers back in 1879. Since then, they have evolved from a hardware company, to a software-first company. They have been able to see the direction the market is going and grow along with it. They have POS systems and machines in most public touchpoints, from retail to stadiums to airports. They also create solutions for bank transformation. This is the team I was a part of. They have sales offices worldwide, a headquarters in Atlanta, and many software teams around the globe.
Job Description
My role here was a Software Developer, a role by now I am very accustomed to. I was responsible for designing, writing, reviewing, testing and demoing code. I was already experienced doing these activities from previous positions, and in class experience, so nothing about my role here came as a shock. Where this position differed is the techology used, as my experience previously was mainly using C# (with some Java) on front-end applications. I also have never really gotten too hands on with back-end and dev-ops tasks. Some new stuff I got experience with here was creating API's to be consumed by our customers front end application, using YAML (a new markup language for me). We also used a custom in house tool to write code in YAML with Java, something unique to NCR. Once getting the hang of it, I found it very interesting and easy to write. I also got more experience with deployment, and using Kubernetes and Docker which has been very helpful to my understanding of deploying solutions. I also got acquainted with a new tool for writing tests, Cucumber. Overall, I got to interact with many different technologies and people, and it kept my work very interesting.
Tools and Technology
I got the opportunity to work with many development tools. I used both Eclipse and IntelliJ for Java development. Maven was used to build the projects, and Cucumber was used for writing readable test steps. I used Visual Studio Code as my goto YAML editor, using several plugins for YAML and Swagger Open API 2.0 development. We used BitBucket with Git, and Jira, for project management and sprint tracking. The product itself was a Microservice architecture running on a Kubernetes deployment cluster with Docker containers. I got first hand experience with all of these tools and it easily the most new tech I've gotten to experience on a job. NCR is a cutting edge company, and had several talks directly from Google and Microsoft and other big companies on how to use their newest offerings such as cloud tech.
Goals
1. My first goal was to build better team relationships as well as joining in with team activities. I was able to get to know many people, and creating some good relationships with my fellow coops as well as my scrum team members, so I believe I was successful. During my first term, I was a team leader for our team-bonding event of curling, since I had some prior experience in high school. This was a fun event, and althought I was nervous at first, I even led our team to a win! Other events I participated in were team lunches, which are a good way to talk about non-work stuff with my coworkers. I have found that because I feel comfortable with my team and coworkers, I am able to better contribute to team meetings as I am more confident.
2. My second goal for term one was to become better at writing in regards to emails and coding review comments. Previously, I have struggled with sending emails as I am worried about coming of too serious, and my spelling can suffer from fast typing (especially with coffee). I was able to complete this goal by taking my time and just having generally more confidence, causing me to not overthinking the minutia of emails, like the tone. Over my time here, I have had to send many emails to the entire team (100+ people) as well as to product owners and architects, things that would both previously scare me a lot more than it does now.
3. My final goal of term one was to improve my technology stack knowledge by working with new tools. I was able to complete this one with flying colours, using new tools for everything from IDE to languages to frameworks. I am really pleased to now have knowledge on creating RESTful APIs in Swagger with YAML, something I had previously never done, and seemed daunting to learn. I also got familiar with Java and Spring frameworks to create microservices. My deployment stack also got boosted with Kubernetes and Docker knowledge, something important in todays container based world.
4. My first goal for my second term was to get more experience in the dev-ops domain. I was able to complete this goal through creating resources and scripts to help automate and inform. I created scripts for me to help automate things like building and deploying local containers, updating clusters and checking build status. I also created a document to follow for creating a dev cluster, something that is tough for new hires with no previous experience like when I started. When I began, we were told not too, as it takes to long, but now, with the guide, every new coop is able to set up a local cluster. Writing this guide was filled with lots of trial and error and helped me learn more about Kubernetes and deployment.
5. My second goal of term two was to increase my contributions and involvment in higher level design. In term one, I was able to ask questions and learn about the product when I needed to, and write the code as defined. In term two, I wanted to actually contribute and design new components with the team. I was able to do this through three routes. One was during our PI (product increment) planning, where we plan our stories and rough ideas for the next PI (4-6 sprints). I was able to elicit important questions in regard to design, and answer others questions in ways I hadn't done before. Another way was through scrum team sprint planning and design meetings, where I was able to apply my knowledge into story requirement eliciting, and help drive design decisions. The third way was joining the coding standards committee, something that helped me influence all of the code designed and writtern, to comply with best standards we came up with.
6. My final coop goal was to make myself more of a leader, and more accessible to others. I used this goal to help the coops coming in at the beginning of my second term, to help them onboard and hopefully teach them good practices and make them better leaders themselves. I was able to do this by creating a slack channel for coops, and using to to distribute info between each other. Also, I was often asked questions and for advice on different topics, from coop tasks to coding tasks. I found the new hires onboarded much quicker during my second term than my first term. While potentially they could just be way more intuitive and smarter students, I think some credit does go to me and the other 8 month coops for our work.
Conclusion
Over my quick 8 months here at NCR, I was able to acomplish a lot. I was given more free reign to complete work than I ever had before, and as a result became more confident and independant. This confidence led me to become a more vocal, and better, team member as well. I'd like to thank the Omega scrum team for being very welcoming, helpful, and most of all patient with me throughout my term. I think they made a big difference in my experience, giving me opportunities to complete interesting stories and not just stuck on boring tasks. I also hope I was able to impact my team, and NCR, and maybe this won't be the last time our paths cross.