Coop Term 1 - CIBC
Introduction
My name is Andrew Linington. I am a third year Software Engineering Student with a minor in Mathematics from the University of Guelph. This page will give you the details of my employment with CIBC in Toronto, Ontario, Canada. I plan to convey how through my work I was able to succeed in a remote work-term environment with CIBC.
Employer Information
CIBC is a Canadian banking company that was founded in 1867 as Canadian Bank of Commerce, now known as Canadian Imperial Bank of Commerce. They have many branches located across America, Europe and Asia with a focus in Canadian Banking with over eleven million clients. My team, LiveLabs, is the Innovation & Digital Technology Lab of CIBC which developed technology and new improvements to existing technology for our clients.
Job Description
During my 4 months at CIBC, I was a software engineer working on a Full-Stack project, including deployment. For DevOps, I got the opportunity to work with a variety of different technologies like AWS, Microsoft AppCenter and GitLab CI (YML files, DockerFiles) which I used for deploying and testing of the project. Other than DevOps, I was responsible for developing an app using Test Driven Development and pair programming in an Agile environment. During creation of the Spring Boot backend the team and I used Spring Boot Security to secure our endpoints and we made sure we could access S3, DynamoDB and FireBase for notifications. For the Android app, we were responsible for developing with a focus in clean and fluid design where we were asked to implement existing Figma designs and Lottie animations for the screens. For testing the app, we used RoboElectric, Mockito and other testing resources in Android to ensure the UI and RESTful API calls were working properly. For iOS it was fairly similar to Android with regard to what I was responsible for with the difference being in how testing was performed (XCTest, UIKit testing) and how certain problems had to be attacked. The main difference being that mocking required us to create our own mocks of our existing calls to prevent calls to our backend and other libraries that might have needed to make calls.
Goals
- Over the course of my semester at CIBC I was given the opportunity to work with a noSQL database (DynamoDB) and manage the data from a backend. While working with the database, I wanted to become better at maintaining how data was stored to account for changes in development criteria. My goal was to make sure to improve my practice of dealing with the database to keep the database clear of data that conflicts with new criteria or develop the database to allow for expansion of existing table data without conflicts. When I was working with the database, I was able able to meet my goals by standardizing the way test data was created and routinely cleaning the server of improper data. Overall I believe I made great strides into learning how to manage and maintain a server which is what I was hoping for.
- At CIBC LiveLabs, my team was Agile. Every day we took part in agile ceremonies which was something new and made me want to become as involved as possible. So in order to achieve my goal I aimed to maintain the trello board and participate more in IPM meetings, daily stand ups, retros and demos. After setting out to complete this goal I ended up completing significantly more Trello tickets and created more as necessary changes arose. In addition to the changes to the trello boards, I took the opportunity to involve myself more in Agile ceremonies like demos and retros where I would share the state of the project with my team.
- Finally my last goal for my work term with CIBC was to gain some overall exposure to iOS and Swift, a language and system I had never had the opportunity to work with before. My focus with working in iOS development was to learn more about the tools and how to implement the Figma designs, which required a deeper understanding of the storyboard and some exposure to development tools. Over the course of this work term I was extremely happy to learn how to work with XCode, as painful as it can be to work with at times, through picking up numerous more tickets involving iOS development. While learning Swift, I was exposed to new tools for testing and wanted to ensure they were used effectively so I migrated existing mocks from being copy pasted to extending the original code with no API calls. While developing for iOS, I was able to expose myself to working with storyboard and learn how to move between screens in numerous ways the rest of my team had not used before and helped to simplify existing designs we had implemented. Although I was able to learn a lot, the work for developing the app was not completely finished in my term but was left in a decent place for future development.
Conclusion
Overall this semester was very successful for learning new technologies and expanding my knowledge of languages I've worked on before and learning new content which helped to increase my exposure to new languages.
Improved Technologies:
- Java
- REST APIs
- Agile
- Git
- JUnit
- SQL
New Technologies:
- iOS
- AWS
- Docker
- Mockito
- GitLab CI
- Spring Boot
- Android
- Picasso
- Test Driven Development
- Pair Programming
- Scrum
- noSQL
- Gradle
- nginx
- XCTest
- XCode
- MacOS
- Swift
This semester was a huge chance to learn a lot about technologies in the industry and expand my knowledge and scope when it came to working outside a school environment and helped me to gain confidence in my skills while working at school.
Acknowledgements
Thank you to everyone who was a part of the Inflight team for all the fun times and chance to work with your team. I enjoyed being able to share this semester with everyone and get to have a lot of fun along the way.
Thank you to Robert for the opportunity to learn so much with CIBC and helped to guide me throughout my journey at CIBC.
Thank you to my fellow COOP's for making such an awesome and fun environment to work in and I hope everyone can have such awesome teams at their next COOP's.
LinkedIn