Profile Pic

Hima Patel

5th year Software Engineering Student







GitHub

LinkedIn

Resume

Devpost

About Me!


Hey there! 👋 I'm Hima and this is my digital portfolio! This website is designed to showcase my profile, personal and educational projects along with my co-op experience!

I'm currently a fourth year Software Engineering (Co-op) student at the University of Guelph. I'm also completing a Certificate in Leadership along with my major.

My technical skills and experience include object-oriented programming, Java, C, Python, JavaScript, Node.js, Angular, Spring Boot, data structures, algorithms, agile, Git, Jira along with unit and performance testing.

Along with doing school work, I enjoy playing my ukulele, hiking, swimming, travelling, learning about outer-space, painting, photography and of course programming! I'm really interested in AI, cloud systems, full-stack development and user interaction.

full-stack development process
Full-stack Development Overview

Projects I've Done


SVG Parser (School)

A user-friendly webapp made with JavaScript, jQuery, HTML and CSS allows one to view, add, delete and edit attributes of any .svg image. Backend server and API calls are made using Node.js and implemented with C which edit the attributes in real time and update the image(s) in the view panel. A log of these changes are kept in a MySQL database.


Dungeons and Dragons Simulator (School)

A similuation of the famous board game Dungeons & Dragons created using Java and object-oriented programming principles (abstraction, encapsulation, polymorphism and inheritance). Java classes are designed based on game attributes such as Monsters, Treasures, Doors, etc. The graphical user interface is made using JavaFx for a smoother user experience.


This Website (Personal)

This website was recently created to showcase past, present and future technical accomplishmants and act as a digital portfolio. Created using HTML, CSS, JavaScript and jQuery, this website is made resposive for portability.


Salmon Run! (Hackathon)

This projects was made within a group of four at the Shehacks 2021 hackathon - targeting the environmental conservation of salmon endangerment. Using the SFML library in C++, this RPG was developed to simulate a salmon swimming upriver, avoiding natural and man-made obstacles using arrows keys (standard input) and collision components to track a maximum of 3 collision strikes before it's game over.


Automated Battlesnake (Co-op Hackathon)

Using the Battlesnake platform and along with two other team members, an automated snake (like that Nokia phone game) was built using Javascript which then competed against other snakes built by other teams within the same grid. The automated snake was programmed to use three algorithms in order to out-live the other snakes - hungry, defensive-hungry and tail-chasing which were all dependent on HTTP request and response headers of the snake's current head location.


Arduino Ultrasonic Scanner (Hackathon)

Created within a group of two at the UtraHacks 2018 hackathon, this project was built using Python and Arduino Uno. Targeted for accessibility, this product understood hand gestures within proximity as volume and playback controls of a regular video-player application.


Co-op Work Experience


RBC - OMNI: Workterm Report S20 and F20

First and second co-op terms (8 months)

Introduction

It's hard to believe that it has been over eight months of the spread of Covid-19. Along with many other co-op students, I had to opportunity of working entirely remotely for my first and second co-op work terms in 2020. Follow along as I share my journey with you about my co-op experience as a software engineering student working at a large corporation.


Employer Information

About RBC

For my first and second co-op work terms, I had the amazing opportunity of working at Royal Bank of Canada. RBC is ranked the number one largest bank in Canada and one of largest in the world. This financial institution provides numerous products and services to its clients, partners and sponsorships. Some of their products include day-to-day banking applications and accounts, credit card lines, investment banking solutions – RBC Ventures, mortgage solutions and corporate banking options.

In addition, RBC has many partnerships to ensure that a diverse group of programs receive the funding they require, one of them being the RBC Training Ground for young and uprising Canadian Olympic athletes. Along with financial management, RBC is also known for their technological applications which are available to their clients along with having a large group of diverse employees.


Royal Bank of Canada
Royal Bank of Canada

About OMNI at RBC

As a co-op student at the bank, I worked within the OMNI group. OMNI is responsible for designing, developing, testing and deploying online banking applications for day-to-day banking, home investments, onboarding new clients, creating new accounts, and other online banking services which can all be accessed by any RBC client at a local branch or on their personal devices. In addition to implementing new widgets, all journeys and squads within OMNI follow agile ways of working to improve work efficiency and welcome new changes easily later in the software development process.


Job Description/My Role at RBC-OMNI

With the global spread Covid-19, more and more essential businesses are finding ways to provide their services online and remotely. As a bank and large corporation, many RBC products and services which were originally offered in person – in local branches were shifted entirely online. As for the existing online tools and applications before the pandemic, many were updated to provide an easier user experience and a seamless onboarding procedure for welcoming new clients.

As for my role at the bank, I was a software developer co-op on the Nebula squad within the Choose A Bank journey at RBC – OMNI from May 2020 to December 2020. The Choose A Bank journey handles the implementation and deployment of widgets for onboarding new clients and helping them create new primary and/or secondary accounts. My squad was specifically responsible for the series of document review screens which are presented to the client and/or branch advisor when they are in the process of creating a new bank account. These series of digital widgets are compiled together to build an entire ‘Account Open’ flow and are designed to work on desktops, tablets and mobile devices. With the expansion of the types of bank accounts offered to clients and banking promotions, these widgets were consistently updated along with introducing new ones. Ultimately, this impacts the front-end – updating the visual components along with the back-end – calling the appropriate server endpoints and storing relevant data.

My work from home wfh-setup
My work from home setup

The First Work Term

For the first four months of my co-op experience, I worked with the team that handles front-end technologies related to the document review pages of the new client/account onboarding tool. The OMNI front-end infrastructure mainly uses Angular (TypeScript), HTML and CSS to implement changes. Being new to Angular, it was a bit of a learning curve for me. Fortunately, RBC employees have access to a learning database called Degreed which has many resources on Angular and it allowed me to grasp the content a lot faster. Along with the continuous support from my mentor via pair programming sessions, helpful PR (pull request) comments and knowledge share sessions presented by the Front-end Chapter, it was easy to learn these new technologies.

Getting a grasp of the enterprise tools used (Git, Jira, Jenkins, Nexus Repository Manager, Urban Code Deploy and Taplytics) was not difficult once I had worked on more stories. Over the course of these four months, I got to build a few new screens in the ‘Account Open’ flow regarding a client’s ‘Pin Disclosure’ agreement, collecting their responses when opting into VIP banking programs along with regression testing these pages for responsiveness. Working with the front-end was definitely rewarding as I got see my work reflected on the actual product which thousands of RBC clients continue to use today.


The Second Work Term

The OMNI infrastructure surrounds the idea of full stack development. Hence, I decided to learn about the back-end technologies used within the Choose A Bank journey for my second co-op work term at RBC. While I was still working with the back-end services of the same document review widget which I had worked with in the previous term, things were a lot different. For starters, the code implementation and unit testing were completed in Java using the Spring Boot framework, and once again the Degreed learning database was extremely helpful. Bash scripts were used for post-implementation verification testing and Pivotal Cloud Foundry logs, Postman mock requests, Dynatrace ‘pure paths’ along with Splunk dashboards were created and used to filter through HTTP requests and responses when each endpoint was reached in both the demo and final production environments. This time, I received the help of another mentor on my squad who specializes in back-end services along with the OMNI Back-end Chapter to understand and confidently use these technologies in my daily work.

During this term, some of the stories (tasks) which I got work on were updating message templates that appear in the banking portal once a client logs in, working with APIs to store appropriate data when endpoints were called and filtering through a large amount of logs using queries to better analyse raised exceptions and response times for endpoints.


Highlights of my Co-op Experience at RBC

Along with the daily work, I had the opportunity to participate in the RBC Innovation Challenge which is designed to help new co-op students network with one another across various disciplines and use open source APIs to create sustainable solutions related to the Covid-19 pandemic.

I also had the opportunity of being the scrum master for my squad for the duration of 2 sprints (1 sprint = 2 weeks). I was responsible for facilitating the daily stand-up meetings, reporting any major conflicts to members of other squads and organizing other agile ceremonies such as squad reviews, internal refinement sessions and squad retrospectives. Taking on this role taught me a lot about problem solving, professional communication and time management.

Towards the end of my second term, all co-ops within RBC-OMNI had the chance to compete in an automated snake (game) competition organized by Battlesnake. My fellow Choose A Bank co-op students and I teamed up to build an automated snake using JavaScript which then competed against other snakes built by other teams. This was a great way to finish off the work term and connect with other co-op students within OMNI.


Goals

At the start of each co-op term my mentor, manager and I discussed a few technical and non-technical goals which I’ve described below.

Become Proficient with Front-end Languages and Technologies

For my first work term at RBC, one of my goals was to successfully learn and use the front-end languages and frameworks used within OMNI. Becoming proficient with Angular (using TypeScript) has allowed me to gain exposure to front-end technologies which has increased my skillset, uncover more pathways for my future career and allowed me to complete daily tasks quickly and efficiently. Throughout the progression of this term, I accomplished this goal by completing a learner’s guide for Angular and performing code reviews on the existing code base to understand the coding conventions and functionality. From this, I was able to pick up a variety of different front-end stories to gain more experience along with making my own judgments to better analyze code and prevent any errors before I presented my work before the entire squad.


Time Management

RBC offers many opportunities to their co-op students such as engaging in challenges and projects outside of our daily work. Hence, one of my goals for the summer work term was to manage my time better so that I could participate in these extra-curricular activities. Learning to use my time wisely and efficiently has better prepared me for larger work tasks, taking on agile roles such as scrum master and allowed me to better understand the concept of project management. I accomplished this goal by using the Outlook Calendar tool and creating mental checkpoints for each story that worked on. As I found myself completing my tasks within timeframes, I decided to take on the role of scrum master which is about facilitating team meetings to prevent future conflicts and going overtime. In addition, I was able to participate in the RBC Innovation Challenge and community meetings.


Teamwork and Collaboration with Agile

In school we’re taught about agile, but we rarely have the chance to work in such an environment. Seeing as many technological institutions including RBC-OMNI are applying agile ways of working to better perform daily tasks, facilitate problems efficiently and provide continuous delivery of their products, my goal for the summer term was to learn professional and ethical behavior when working in an agile team. Learning to work in this environment has allowed me to understand the company culture better and communicate effectively when working with others. I was able to successfully accomplish this goal by attending RBC-OMNI’s ‘Ways of Working’ seminar and contacting the Choose A Bank journey’s agile coach for resources on adapting to an agile environment. Attending the seminar was extremely helpful as many collaboration scenarios and project management tools were explained. Learning this information made me better prepared for daily agile ceremonies such as stand up meetings, squad reviews, retrospectives and refinements where I engaged with all squad members such as developers, business analyst, product manager and UI designers.


Become Proficient with Back-end Languages and Technologies

One of my goals for my fall co-op work term at RBC was to become proficient with back-end programming languages, tools and technologies used within the OMNI infrastructure. Understanding and implementing programs in the back-end has supported my long-term goal to work with full stack technologies and create personal projects. Specifically, I wanted to learn about the Spring Boot framework, downstream services, mocking services such as Postman and implementing JUnit tests for Java classes and methods. By attending bi-weekly Back-end Chapter meetings, pair programming with my mentor and participating in Spring Boot sprints with other employees, I was able to accomplish this goal. In addition, I was able to learn more about enterprise tools (Pivotal Cloud Foundry, Splunk, Dynatrace, Apache JMeter, and Postman) which support back-end development. From this, I was able to complete various types of back-end stories and participate in code swarming sessions.


Networking

As a co-op student, it’s important to reach out and connect with other co-ops, full-time employees and senior employees to better understand organizational roles and company culture at a large corporation such as RBC. When entering my second work term, networking was an important goal for me as it has given me exposure to different roles when considering paths for my future career and identify persons of contact when working with APIs. I achieved this goal by participating in co-op community meetings, connecting with others via virtual coffee chats, hosting bi-weekly knowledge share sessions for the Choose A Bank journey, and communicating with members of other squads when working on overlapping banking widgets. I made sure to set time aside for these meetings in order to see this goal through fruition.


Professional (Verbal and Virtual) Communication

My final goal for my second work term at RBC was to improve my professional communication. When working entirely remotely, things sometimes get misunderstood and even overlooked so it was important that I learn to communicate effectively in this virtual working environment. To make sure to see this goal accomplished before the end of my work term, I actively participated in squad discussions where I was able to interact, learn and question information which affected my work. Preparing before these meetings allowed to me to foresee the topic of discussion and present my thoughts and opinions a lot more articulately. Another way I accomplished this goal was meeting with my manager, mentors and technical squad lead every month to get feedback on my work and exercise my communication skills.


Concluding Thoughts

Working (remotely) at RBC for the past eight months was an incredible learning and co-op opportunity. This experience not only taught me a lot about the technological industry, but also about the community one is a part of when working at a large organization, the accomplishments of hard work and exposure to real-world applications.

At RBC collaboration, recognition and diversity play a huge role for creating an efficient work environment. To me, these were the most interesting aspects of my job. Even with a virtual working environment, I received the best support and knowledge transfer from my mentors, my manager and the front-end and back-end chapters within OMNI. Code live shares, pair programming, completing tech debts and participating in retrospectives allowed me to improve on my daily work and to learn more about various tools and technologies.


Acknowledgements

While the world was exposed to one of the greatest pandemics, I am extremely thankful to have had the opportunity to work at such a prestigious organization. I would like to give a huge thank you to everyone at RBC-OMNI for making my virtual co-op experience even better than the non-virtual one that I had anticipated back in May 2020.

For starters, I would like to thank my manager Jon Petruk, my mentors Jyot Thakkar and Tim Eapen and technical squad lead Steve Braun for your support, mentorship, encouragement, and feedback and not to mention that they were an amazing group of people to work with along with the other members of the Nebula squad.

Next, I’d like to thank the Choose A Bank Journey and the OMNI group at RBC for allowing me to contribute to products that impact the lives of many clients, teaching me to think from the user’s point of view.

And finally, I’d like to thank my co-op coordinators Laura and Kate for providing tips and support when applying for co-op placements for the very first time!


Image Credits

Royal Bank of Canada: https://i0.wp.com/ewnews.com/wp-content/uploads/

VantaJs background: https://www.vantajs.com/?effect=fog#

RBC - OMNI: Workterm Report S21

Third Co-op Work Term (4 months)

Introduction

Time flies! It’s been over a year since I began my first co-op work term last May. As I continued my virtual internship experience over this summer, I was able to learn many technical and non-technical skills. Follow along to read more about my Software Engineering Co-op role at RBC!


Employer Information

I had the privilege of (virtually) returning to RBC – the Royal Bank of Canada for my 3rd co-op work. As a returning co-op, I was able to learn more about the company culture while working on a different team. This time around, I became more familiar with the RBC - Technology and Operations (T&O) group infrastructure and the other initiatives that RBC is supports.

About the Royal Bank of Canada – A Tech Company Making Banking Applications

At the beginning of each co-op term, the RBC T&O Early Talent team presents an introductory session about workplace rules and expectations, events, and opportunities. This time, Bruce Ross - the group head of T&O emphasized the fact that RBC is more of a tech company making banking applications. For somebody who is new to RBC, their opinion of it would be “bank” or “financial institution” which is absolutely true, but as I returned and reflected on my past work terms and this one at the company, I began to realize that RBC is more of a tech company making banking applications. It’s like this – the more you read a book over again, the new details you pick up on. Same thing with my experience at RBC for my past 3 work terms. With new and existing clients adapting to the world of digital banking, the constant roll-out of mobile banking applications – Account Open Tool and new features – RBC Vantage is essential and appreciated. RBC continues to grow as a bank and tech company who prioritizes their clients’ needs when implementing new features, supports their employees and interns to grow and develop their skills and ensures that the workplace is a fun and safe environment for all.


Royal Bank of Canada
Royal Bank of Canada - 88 Queens Quay West, Toronto ON

About OMNI at RBC – The Agile Approach

Once started as a proof of concept a few years ago has now developed into a growing agile, interactive, and collaborative working environment for software developers. The OMNI channel, part of the Digital group under T&O, defines its Ways of Working by emphasizing an agile team setting and life cycle of its products, cross-functional teams including front-end and back-end developers, business analysts, project managers and UI/UX designers. Additionally, team norms within OMNI include daily stand-up meetings for updates on tasks, blockers and future alerts, bi-weekly retrospectives to analyze team collaboration and productivity as well as weekly refinements of prioritizing tasks in the backlog. In a nutshell, the OMNI channel is composed of several journeys with 5-8 squads in each that are responsible for one or more banking application widgets. These applications include responsive web and mobile banking widgets such as the account open/creation feature for new clients, credit card management, home financing services, and more! As for my co-op term this summer, I was working on the OMNI Platform squad, which brings us to my role as a student developer on the team.


About My Role on the OMNI Platform Squad

Returning to RBC for my 3rd co-op work term allowed me to explore and understand the different types of teams within OMNI and side projects for summer students. As I mentioned before, OMNI mainly consists of cross-functional teams that are responsible for building, testing and maintaining front-end and back-end banking application widgets of which I worked with for my previous 2 co-op terms. This term, I was working with the The Platform Squad which is a little different from the traditional teams within OMNI in the sense that they use architecture maintenance and pipeline tools for completing DevOps related tasks. In other words, these tools help the banking application widgets that the other teams create to get delivered to the client, also known as the production environment. This team is its own Journey within OMNI and is only composed of 1 squad – the Platform Squad. Throughout the term, I was able to learn more about DevOps tools and technologies, continuous integration and delivery of banking applications and problem solve any rising issues that other developers in OMNI might encounter with while using those specific tools.

As a member of the Platform Squad, the workflow was similar to any other agile team – pick up tasks from the backlog based on priority and work on completing them. More specifically, my job responsibilities included setting up and understanding the OMNI Pipelines infrastructure, understanding how each pipeline tool is used, working on tasks such as enhancements for the existing automation pipeline for improving efficiency and occasionally acting as a “First Responder” to help resolve any issues other OMNI developers may be facing – related to the DevOps tools and more. Being a returning student, I was aware of the OMNI Pipelines infrastructure, but just an overview of it and therefore, there was bit of a learning curve in order for me to have a thorough understanding of the elements involved.

The DevOps Cycle
The DevOps Cycle

Many people, including myself at the start of this work term ask “What is DevOps?”. From the knowledge that I obtained throughout this summer term, it is a set of actions/steps that are to be completed on a software. The ‘Dev’ part corresponds to the full-stack developers which includes planning, implementing, creating and testing applications. The ‘Ops’ part involves the releasing, deploying, operating and monitoring of those apps. This is what the OMNI Platform Squad does. They have procedures that automatically run everyday to release the banking apps to the production environment using Jenkins which uses the functionality in the deployment pipeline. Then, there are processes that run those deployed apps from a “client” perspective, using Docker on their end to scan for vulnerabilities – if any, we fix them. Next, those deployed apps are monitored using Splunk, Dynatrace, Google Analytics and more tools to see if the correct endpoints are reached or if any unexpected vulnerabilities rise by real banking clients.

Being new to DevOps, I had preliminary knowledge of some of the tools used such as Jenkins and Jenkinsfiles. Fortunately, my mentor paired with me on several tasks and gave me clear walk through and understanding of the pipeline features, why specific tools are used and outlined steps on how to approach different DevOps-related problems. Along with my mentor’s support, discussing the specifics of each task during standup meetings ensured that I understood the content and the gave me the confidence to reach out to specific developers on the team for related resources.


Highlights of my Co-op Term at RBC

RBC and RBC – OMNI provide many opportunities and resources for their co-ops to work on side projects supporting other initiatives. Working on some of these side projects, along with my daily work were some of the highlights of my summer work term.

For starters, learning about DevOps was already interesting, but having the opportunity to work on tasks that impacted the actual automation pipeline of OMNI products made me feel like a real developer on the team. Although it was a little nerve-wracking to not cause any failures in the deployment pipelines because of my changes, continuously working on such impactful tasks gave me the confidence to continue. Some of these tasks include a configuration server which RBC developers can use to set up the automation pipeline without manually changing each attribute based on their preferences. Another important task which comes to mind is a Jenkins job which automatically runs everyday to erase unnecessary cache and log files, resulting in faster application build times and deployments. And there are many more tasks that I can talk about which resulted in an impact to the OMNI automation pipeline, but the takeaway is that I was able to contribute as a full-time developer on important tasks.

Another highlight of my work term was working with a group of diverse co-ops on the Believe Impact Project hosted by former Canadian Olympian Sarah Wells. This main objective of this project was to contribute to our communities and leave a lasting impact. My team and I had the opportunity to work on an accessibility-related project and where able to implement a working solution over the summer. Our product – Athleap was initially designed to spread awareness of disabled athletes and the challenges that they face when playing sports recreationally and/or professionally through a blog series. That expanded to a web application which allows members of a community to search for nearby sporting events at accessible venues using the Google Maps API and a React app infrastructure. Towards the end of the term, my team and I had the opportunity to present our solution to a panel of RBC leaders and Sarah herself! This was great opportunity to work on an impactful side project and network with co-op from different area of the bank.

Last fall, I had the opportunity to work on Battlesnake competition with a few other OMNI co-ops. Once again, I was able to participate in this friendly competition, except this time it had expanded to the entire T&O cohort of summer co-ops. With my incredible team, we were able to implement a fully functional automated snake using the Battlesnake Javascript API with different algorithms – hungry, defensive hungry and avoiding traps including other long snakes, grid walls and our snake’s own body. After working long hours for several days after work, our snake was able to beat a majority of the other snakes in the competition and won 2nd place. This friendly competition was a great way to network with other co-ops and end the summer term!


Goals

At the start of each co-op term my mentor, manager and I discussed a few technical and non-technical goals which I’ve described below.

Learn and Become Proficient with DevOps Tools

As a returning student on a new team, one of my goals for the summer 2021 work term at RBC was to learn about the tools used within the Omni pipeline. Specifically, over the course of 4 months, I wanted to focus on to becoming proficient with Docker, creating Jenkins files and if time permits, Splunk and Dynatrace. Many DevOps teams work with similar if not the same tools and developing these skills would introduce me to a different area of computing.

After completing the summer work term at RBC, I can positively reflect on this goal and how I was able to accomplish it. With just 4 months of the work term, I emphasized my efforts in becoming proficient with Jenkins and Docker and less time with Splunk and Dynatrace. Working with DevOps technologies was new for me and there was a big learning curve that I needed to overcome. By pairing with my mentor on short problem-solving tasks and larger proof-of-concept tasks, I was able to learn by doing and contiguously practicing. At the beginning of the term, I found myself asking numerous questions on how to complete minor tasks that took a while to complete, but towards the end of the term I become more comfortable with the flow and architecture of the OMNI pipeline. I found myself asking fewer questions, completing tasks faster and engaged in a variety of different tasks.


Engage with Other Teams for Side Projects

Being an intern, it's important to learn about teamwork and working with individuals with different roles within T&O and Digital. For this term, my goal was to engage with other teams to learn more about other roles and collaborate on various projects. This includes Omni working groups and student community projects/competitions.

Although the duration of the work term was only 4 months, I was able to connect with many new people and engage in various teams regarding different side-projects, along with my daily work. The OMNI group within RBC has many working groups that interns and full-time employees can join. These groups focus on new proof-of-concepts that can be introduced to the current infrastructure. Fortunately, I was able to join the Kotlin working group this term and learn more about accessing downstream services using Kotlin and Gradle, which were both new for me. Additionally, I participated in the Believe Impact project with a group of other co-ops from different disciplines and areas of the bank. As a group, we decided to create an online platform for showcasing sporting events in different communities that are hosted at accessible locations, for those with physical disabilities. We were able to pitch this idea to a panel of leaders at RBC at the end of the term. Furthermore, I also teamed up with other student developers within T&O of RBC for the Battlesnake competition. Our team won second place and it was truly a great experience learning something new, working with like-minded co-ops and battling it out with other teams across T&O.


Networking and Leadership Opportunities

While learning technical skills is important, one of my goals for this term was to network more. Specifically, connecting with other co-op students and full-time employees in the same and/or different disciplines will allow me to learn more about the different roles at RBC. Additionally, I wanted to seek more leadership opportunities within the student community which corresponds with my academic plan to obtain a certificate in Leadership. This complemented my goal to network as I was connecting with others and practicing professional communication.

Over the course of 4 months, there were times where I found myself networking a lot. Using the 10K Coffee Chats platform, I was able to introduce myself and meet other employees within different groups of RBC including the Capital Markets group, Wealth Management group and Investor and Treasury Services group. It was interesting to learn about people's backgrounds since they differed a lot from mine. I was able to engage with other summer interns within T&O from the bi-weekly student community meetings. These meetings helped the students and I revise and reflect on our term goals, participate in friendly competitions, and socialize in the virtual working environment. In addition, another co-op within OMNI and I started a bi-weekly tech-talk series where students across OMNI can present on technical topics either learned from school, personal experience and/or current work experience. This allowed me to exercise my leadership, communication and presentation skills learned from past courses. This was a great way to learn new concepts, network with other student developers and it was rewarding to see the number of presenters and participants increase for these series over the summer.


Concluding Thoughts

Returning to RBC for another co-op term was an incredible learning opportunity. Specifically, working on the OMNI Platform Squad introduced me to the world of DevOps and architecture maintenance. This experience not only taught me a lot about the technological industry, but also about the community one is a part of when working at a large organization, the accomplishments of hard work and exposure to real-world applications.

At RBC collaboration, recognition and diversity play a huge role for creating an efficient work environment. To me, these were the most interesting aspects of my job. Even with a virtual working environment, I received the best support and knowledge transfer from my mentors, my manager and the front-end and back-end chapters within OMNI. Code live shares, pair programming, completing tech debts and participating in retrospectives allowed me to improve on my daily work and to learn more about various tools and technologies.


Acknowledgements

I am grateful for everyone at RBC-OMNI for making my virtual co-op experience amazing!

For starters, I would like to thank my manager Dan Clark and my mentor Parteek Dheri for their support, mentorship, encouragement, and feedback along with the other members of the Platform squad.

Next, I'd like to thank the Platform Squad and the OMNI group at RBC for allowing me to work with a pipeline infrastructure that many of the OMNI developers rely on for publishing their applications.

And finally, I'd like to thank my co-op coordinators Laura and Kate for their constant support with the virtual co-op process.


Image Credits

Royal Bank of Canada: https://www.waterfrontbia.com/wp-content/uploads/2021/04/RBC-Queens-Quay.jpg

DevOps Cycle: https://sparinfosys.com/wp-content/uploads/2020/05/devops-multicolor.png

RBC - OMNI: Workterm Report W22

Fourth Co-op Work Term (4 months)

Introduction

This Winter, I completed my fourth co-op term at the Royal Bank of Canada on the OMNI Platform team. After completing a few terms at RBC, I still had many opportunities to learn a lot and gain new skills. Follow along as I share my experience with you as a DevOps Intern on the RBC OMNI Platform Squad!


Employer Information

Every time I have the opportunity to return to the Royal Bank of Canada (RBC) for a co-op term, I learn more about the company’s culture, values, and efforts to improve electronic banking tools along with their corporate and social responsibilities. For this co-op term, I returned to the OMNI Platform Squad within Technology and Operations in RBC as a DevOps Intern.

About the Royal Bank of Canada – A Technology Organization Creating Banking Applications

While my descriptions of RBC for my previous co-op work term have remain constant around the company’s goals, they change a little bit every time as I continue to learn more about the organization. RBC is known for their banking applications worldwide from their mobile banking app to their mortgage advisor support offered online. It truly is a “tech company making banking applications”. However, RBC is committed their products as they constantly roll-out new features their existing applications, programs to support communities, and providing a starting point for aspiring Olympic athletes. This time around, I learned more about their efforts for maintaining employee satisfaction including mental health initiatives and providing a work-life balance working structure to prevent burnout. And the truth is, it works! Every employee that I interacted with were happy in their roles and committed to their line of work, including myself. I felt that my work was valued and was offered lots of support for when I had questions. RBC is an organizations that provides financial and banking services to its clients, but is also dedicated to the well-being of their employees.


Royal Bank of Canada - Waterpark Place
RBC Waterpark Place, Toronto ON

About OMNI at RBC – The Agile Ways of Working

Agile is becoming more and more common in the tech industry as products are constantly released with the help of developers, business analysts, project managers and UI/UX designers. The OMNI channel, part of the Digital group under T&O, defines its Agile Ways of Working by emphasizing an agile team setting and life cycle of its products, cross-functional teams including front-end and back-end developers, business analysts, project managers and UI/UX designers. Additionally, team norms within OMNI include daily stand-up meetings for updates on tasks, blockers and future alerts, bi-weekly retrospectives to analyze team collaboration and productivity as well as weekly refinements of prioritizing tasks in the backlog. In a nutshell, the OMNI channel is composed of several journeys with 5-8 squads in each that are responsible for one or more banking application widgets. These applications include responsive web and mobile banking widgets such as the account open/creation feature for new clients, credit card management, home financing services, and more! As for my co-op term this summer, I was working on the OMNI Platform squad, which brings us to my role as a student developer on the team.


About My Role as a DevOps Intern on the OMNI Platform Team

This term, I returned to the OMNI Platform Squad as a DevOps intern for my fourth term at RBC. Compared to my previous term on the Platform Squad, which was more concentrated on learning the components of DevOps and architecture maintenance, I was able to work on more pipeline integrated tasks this time around. For this term, I had the ability to work on many tasks and side projects that enhanced the current OMNI CI/CD pipeline as well as helping other development squads enable features to introduce automated processes in their daily work.

Since I had some background knowledge and experience from working as a DevOps intern in my previous term, I was able to dive right into projects and pickup tasks. I had a basic understanding of the tools used in the current CI/CD pipeline and how they played a role in existing features. For this term, specifically, I did have to learn about NX monorepos and how it can be integrated in an existing development pipeline architecture. Monorepos are essentially big repositories for code bases that exists in the same workspace. The allows for better dependency/package management as they are concatenated in one repo. This also means that applications that depend on other applications can now exists in the same location. Monorepos allow for code to be pushed to the production environment with a breeze, since only changes within the monorepo are tracked. This prevents unneeded application builds and decreases overall build times. My work in the Platform team revolving around monorepos was related to building affected applications rather than all within in the same workspace.

Additionally, I had the opportunity to work closely with a cloud specialist on the team and my mentor to create a new pipeline that supported the OMNI production and deployment pipeline. This project focused on using technologies such as writing Groovy scripts, unit tests, and working with Azure instances of container registries to determine with artifacts are ready for staging and production environments based on the vulnerabilities found.

Another major series of tasks which I had the opportunity of working on were onboarding OMNI development teams to a bot that would automatically create minor batch and pull requests and writing enhancement scripts for that automation bot. This enhancement saved development teams a lot of time as it prevented developers from manually creating pull requests on GitHub for minor dependency changes for their frontend and backend applications.

CI/CD Overview
CI/CD Overview

Working with CI/CD

You’ve read the abbreviation CI/CD in this report a few times now, but what does it mean? For my previous work term report, I described how the DevOps cycle works. For a brief recap, DevOps is basically a working structure that accounts for the development portion of an application and the process of deploying and monitoring the app once it is in the production environment a.k.a. when it is delivered to the client. The deploying and monitoring part is crucial as it ensures the application is working as it is supposed to when used by the clients. Suppose the app is failing at a few endpoints, tools such as Dynatrace and Splunk can be used to monitor the traffic using queries of the application in production. Putting all the development tools and operation tools together creates a DevOps toolchain, more commonly known as a CI/CD pipeline.

CI/CD stands for Continuous Integration and Continuous Deployment. It encapsulates the tools and technologies used from developing code to monitoring it in the production environment. CI/CD goes hand in hand with Agile as it focuses on publishing frequent, small features rather than fewer larger ones. Some common tools used for building code before it can be pushed to prod are Jenkins and Nexus. Jenkins, in a nutshell, is responsible for building an application and running the enabled tests to determine if it builds successfully in a staging environment. If the build is successful, a build artifact is created and sent to Nexus automatically. The Nexus Repository Manager updates the version of successfully build apps and the latest stable one is deployed. Once an application is deployed to production, it must be monitored for traffic, usually activity, and/or vulnerabilities that may arise. As mentioned before, tools such as Splunk and Dynatrace can be used to do this. Being a member of the Platform team, we have to ensure that all build scripts are properly parsed by Jenkins and that all other tools in the pipeline are up and running.


Highlights of my Co-op Term at RBC

RBC and OMNI provide many opportunities and resources for their co-ops to work on side projects supporting other initiatives. Working on some of these side projects, along with my daily work were some of the highlights of my winter work term.

Firstly, I had the opportunity to go into the office after 4 terms of working at RBC! It was interesting to see how stand-up meetings were performed in person before Covid-19. Fortunately, many floors of Waterpark Place are designed for agile development with whiteboards, projectors, open-concept meeting rooms, and much more! Additionally, I was able to meet some of my fellow OMNI co-ops in person and learn more about their roles and responsibilities! We had some good laughs and even better brainstorming sessions a.k.a. building Star Wars Lego sets.

Another highlight of my term was organizing the OMNI co-op tech talks again. There were lots of presenters who showcased their personal projects and even the ones they were working on at RBC. It was really nice to see everyone engaging and participating in a virtual/hybrid environment. Plus, I got to practice my presentation skills by presenting on topics such as CI/CD pipelines and a session on Docker.

Finally, I participated in another Battlesnake competition this time around. I team up with 3 other RBC co-op students to create an automated snake using rigorous algorithms for fetching food, determining safe areas on the grid, and calculating the next possible moves. However, the tournament was split into 2 divisions – beginner and experienced. Since I had some background on these tournaments, my team registered in the experienced bracket and won 2nd place! Overall, it was a fun little competition between RBC co-ops!


Goals

At the start of each co-op term my mentor, manager and I listed a few technical and non-technical goals to accomplish during the term which I’ve described below.

Learning about NX Monorepos

Returning to the OMNI Platform team, one of my goals was to become proficient with the Nx monorepo architecture used within OMNI apps and that the pipeline uses to deploy them. Specifically, I wanted to focus my efforts on monorepo integration, building monorepos, setting up continuous integration, executing distributed tasks and deploying monorepos. With the knowledge obtained from these skills, I would understand build issues better and feel more comfortable volunteering as a first responder a few times.

Over the course of my winter co-op term, I had many opportunities to learn and excel my knowledge on NX monorepos. Specifically, I learned why larger corporations are more likely to switch over to the monorepo architecture as it saves time to publish applications to the productions environment when considering the many dependencies that are required. I had the ability to work on features that would collect application packages with certain targets and publish those to the production environment rather than upgrading all dependencies which requires more time and space to complete. I learned how the NX toolchain is used to build, deploy, and maintain monorepos.


Working with Cloud Services in a CI/CD Architecture

Another technical goal that I wanted to achieve this term was to gain exposure to cloud services such as Azure. Cloud technologies are becoming very common and learning more about them within a DevOps setting would introduce me to another field of computing. Specifically, I wanted to learn how to securely access and utilize public cloud services that the OMNI deployment pipeline used.

In terms of learning more about cloud services, I had a wonderful opportunity this term to get involved with a new feature that utilized an Azure registry to retrieve images of containerized applications in the production environments. I collaborated with my mentor and another cloud specialist to create a new pipeline that used an Azure container registry. From this, I got to learn more about how cloud technologies are used in large IT departments to manage, scan, and maintain their applications once they have been published to the clients.


Seeking Leadership Opportunities as Co-op

A non-technical goal I had for this term was to seek more leadership opportunities as a co-op within RBC. As I am in the process of completing a certificate in leadership, this goal aligned with it. Seeking these roles would allow me to advance my networking, communication, and presentation skills as well as gain more exposure as a senior student within organization.

Throughout the term, I had many opportunities to develop and practice my leadership skills that I learned from previously taken courses. Firstly, I was a student squad lead in charge of facilitating, organizing, and helping other RBC co-op students to creating S.M.A.R.T goals for the term. I was responsible for organizing monthly retrospectives and one-on-ones with all of my squad members to track their progress. Additionally, I restarted the RBC OMNI co-op tech talk series where students within OMNI had the opportunity to present on technical topics of which I too had the ability to present a few times as well. Both of these opportunities allowed me to communicate and network with other co-ops and senior employees within RBC.


Concluding Thoughts

Returning to RBC for my fourth co-op term was an incredible learning opportunity. Specifically, working on the OMNI Platform Team again introduced me to real-world applications of DevOps and CI/CD pipeline management. This experience not only taught me a lot about the technological industry, but also about the inclusivity when considering the community one is a part of when working at RBC.

Working at RBC for four co-op terms taught me a lot! They first gave me an opportunity to learn, practice, and excel my skills when I was finishing the second year of my undergrad. Now, two years later, I can positively look back and recall all the skills, lessons, and friendships that experienced at RBC. From learning front-end tools and technologies, to back-end, and eventually DevOps, I'd like to thank RBC for giving me the opportunity to learn and grow as a young professional. Although I have worked at the same company for my four terms, I can confidently say that RBC is one of the best places to work! They have given me a platform to learn skills of which I can explore other roles at other organizations with as a software engineer.


Acknowledgements

I am grateful for everyone at RBC and OMNI for making my virtual and later, hybrid co-op experience extraordinary!

I would like to thank my manager Dan Clark and my mentor Armin Samadi for their continuous support, exceptional mentorship, constant encouragement, and feedback along with the other members of the OMNI Platform team.

And finally, I’d like to thank my co-op coordinators Laura and Kate for their constant support with the co-op process.


Image Credits

RBC Waterpark Place: https://www.waterfrontbia.com/wp-content/uploads/2021/04/RBC-Queens-Quay.jpg

CI/CD Overview: https://sparinfosys.com/wp-content/uploads/2020/05/devops-multicolor.png

Amazon Web Services - Solutions Architect Intern: Workterm Report S22

Fifth Co-op Work Term (4 months)

Introduction

It’s hard to believe that I’ve completed five co-op terms as part of my undergraduate program and I’m now starting my final year of studies! This past summer, I had the incredible opportunity to work as a Solutions Architect Intern at Amazon Web Services (AWS). Follow along as I share my final co-op term journey with you.


Employer Information

About Amazon Web Services (AWS): A Global Cloud Services Provider

Often times, many people consider Amazon and Amazon Web Services (AWS) as the same company when in reality, AWS is a subsidiary company to Amazon. Started in 2006, AWS become one of the most widely used cloud service providers across the globe. To give a little bit of a background, AWS cloud services enable their customers to create technological solutions to their business problems. A few examples can be setting up cloud storage, a global database, a website or an app, an analytics dashboard, etc. Launching AWS with its primary service – S3 (Simple Storage Service), AWS now offers more than 200 of their cloud services to their enterprise and start up customers as well as individual contributors across the world for their diverse business needs. Being one of the larger contributors for annual revenue for Amazon as a whole, AWS continues to improve it’s cloud services and offer new ones by working closely with their customers.

The goal for AWS is to help their customers build solutions that was ultimately help their customers. Not only that, to educate today’s technology users on how cloud services work, AWS has launched a series of certificate courses and exams. Some of these include Certified Cloud Practioner’s, Solutions Architect Associate and Professional, some speciality certificates such as Databases, Machine Learning, DevOps and many more! These certificates are designed to help users understand the purpose of specific AWS cloud services and in which context to utilize them.


AWS - An Overview of a Few of its Services
AWS - An Overview of a Few of its Services


About the Solutions Architect Role

A preconceived notion about the solutions architect role is creating a fully furnished solution for a problem. At least that’s what I thought at first. Although that might be true to a certain extent, the role of a Solutions Architect is to design, articulate, and share a solution to a business problem for their customer(s). Before diving deeper, I’ll define some of the parameters here: AWS customers can be large enterprise companies, or they can be early start ups. A business problem can be considered as an obstacle that is preventing a business’ customers to interact with their products’ and/or services or it can be a new specification to increase customer satisfaction and/or increase that business’ customer acquisition. A solution can vary from design to the implementation of a proof-of-concept (POC), based on the customer’s requirements and technical background. Alright, now that that is sorted, I can discuss what a solutions architect does daily.

The role of a solutions architect (SA) is to primarily collaborate and communicate with their customers. A cadence is often established to regularly connect, converse, and collaborate with customers after the initial call. Upon receiving the information on a business problem, a SA is responsible for designing an efficient, sustainable, and scalable solution for the business problem. The first step is understanding which priorities the customers is focused on – reliability over performance optimization, scalability over sustainability, etc. From understanding that and the specific requirements given, certain AWS cloud services can be selected and narrowed down to for the overall solution. Now, this not set in stone, if a SA is unaware of the capabilities of certain services or there has been a similar business problem that has been architected in the past, they can reach out to service specialists or ask specialist SAs for their guidance and feedback. Additionally, if the customer has specific technical requirements and modifications to the final design a.k.a. the architecture diagram can be updated as necessary. An architecture diagram is essentially a blueprint/visual aid that covers all of the AWS cloud services and how each connects with one another that are required to implement a solution’s design. An architecture diagram can take a week or months for a SA to efficiently design and shared with their customer(s). Additionally, a SA must be able to explain each service, its capabilities, trade-offs, and pricing to their customer(s). Therefore, being thorough in an architecture diagram is not enough to convey a customer to do business with AWS – answering FAQs and other technical and non-technical questions is part of the role of a SA.


About my Role as a Solutions Architect Intern

Since I was an intern this summer, I was not collaborating with an actual customer. My internship mainly focused on a capstone project for a mock customer. Nevertheless, the progression and completion of this project very much aligned to the daily activities of a full-time SA. The business problem which I had selected was focused on network failover and global load balancing. To give a little bit of context, network failover is when a system (e.g. website, app, server) experiences network interruptions/outages in one host region, is it designed to be fault-tolerant and push all of the receiving traffic (e.g. customer engagement on website/app) to another region. Being new to the cloud, there was much to learn about AWS cloud services and even how customer presentations and collaborations are executed. Working closely with my mentor, manager, and onboarding buddy as well as attending seminars and studying for AWS certificate exams was extremely helpful. I found myself reaching out to service specialists and other SAs on a regular basis to get more intel on this business problem. As a SA intern, there were some parameters in the business problem that were ambiguous and needed to be defined and I did just that. One of the leadership principles at AWS is ‘Bias for Action’ and ‘Think Big’ and I immersed myself in these two principles specifically to deliver an efficient, scalable, and complete POC.


Highlights of my Internship at AWS

Working on the capstone project wasn’t the only fun aspect of my internship. There were many incredible opportunities were I found myself branching out, learning new things, and connecting with others in the organization.

For starters, my internship was based in Vancouver and experiencing the west coast was incredible! Being able to go on extended hikes, seeing the culture there, and adapting to that work and lifestyle was fun. I was able to work from the office there and meet with some of the other Canadian SA interns based in Vancouver, senior SAs, as well as other Software Developer Interns and seniors.

Secondly, I had to opportunity to visit Amazon headquarters in Seattle for the SA intern orientation. There, I was able to network with the other North American WWCS (Worldwide Commercial Sales) SA interns, the program managers, as well as attend workshops hosted by Amazon leaders. Plus, visiting the Spheres building was awesome.

Finally, I had the chance to attend a Canada-wide SA conference in Toronto, in person. This conference allowed all of the SAs across the Canadian organization to meet and network for the first time since the pandemic. There, I had the chance to practice my networking skills and meet specialists whom I was able to reach out to for my project afterwards.

Amazon Spheres
Amazon Spheres in Seattle, Washington

Goals

At the start of each co-op term my mentor, manager and I listed a few technical and non-technical goals to accomplish during the term which I’ve described below.

Dive Deep into the Capstone Project on Network Failover

One of the major components of my internship at AWS is the capstone project. The project which I have selected is based on network architecture and understanding the trade-offs to deliver a highly availbale and reliable site for a 'customer'. Therefore, one of my goals this term is to dive deep and understand the different network capabilities (e.g. multi availability zone, multi region, active-active, active-passive, etc.) to deliver an efficient product. This goes hand-in-hand with understanding the different AWS Cloud services that will be used to deliver the results. Therefore, becoming procificient in the tools selected for this project (CloudFront, API Gateway, Lambda, DynamoDB, and CloudWatch) is a milestone towards achieveing this goal.

Over the course of my winter co-op term, I had many opportunities to learn and excel my knowledge on NX monorepos. Specifically, I learned why larger corporations are more likely to switch over to the monorepo architecture as it saves time to publish applications to the productions environment when considering the many dependencies that are required. I had the ability to work on features that would collect application packages with certain targets and publish those to the production environment rather than upgrading all dependencies which requires more time and space to complete. I learned how the NX toolchain is used to build, deploy, and maintain monorepos.


Networking to Connect and Learn About AWS and its Services

Working at an new organization and as a rising senior, it is very important to netwrok. Since I am working as a solutions architect intern this summer, as opposed to a software development role, I will network with the other Canadian Solutions Architects to better understand their roles and daily acitivites. Rather than focusing on introductions, my goal is to network with the intention of learning more about this role and the opportunities it provides. This goal will also help in developing my professional speaking skill.

In terms of learning more about cloud services, I had a wonderful opportunity this term to get involved with a new feature that utilized an Azure registry to retrieve images of containerized applications in the production environments. I collaborated with my mentor and another cloud specialist to create a new pipeline that used an Azure container registry. From this, I got to learn more about how cloud technologies are used in large IT departments to manage, scan, and maintain their applications once they have been published to the clients.


Improve Communication and Presentation Skills

The role of a solutions architect is to primarily communicate with prospective customers and explain the benefits and trade-offs of cloud services. As an intern, I am not able to work with customers directly, but my goal is to shadow customer calls with other solutions architects, and shadow Immersion Days, and Game Days to better understand the collaboration and engagements of full-time SAs. Shadowing other SAs is a great opportunity to see how the customers interact with the solutions presented and how to work around new requirements in a professional manner.

Throughout the term, I had many opportunities to develop and practice my leadership skills that I learned from previously taken courses. Firstly, I was a student squad lead in charge of facilitating, organizing, and helping other RBC co-op students to creating S.M.A.R.T goals for the term. I was responsible for organizing monthly retrospectives and one-on-ones with all of my squad members to track their progress. Additionally, I restarted the RBC OMNI co-op tech talk series where students within OMNI had the opportunity to present on technical topics of which I too had the ability to present a few times as well. Both of these opportunities allowed me to communicate and network with other co-ops and senior employees within RBC.


Concluding Thoughts

Interning at AWS, in an solutions architect role was an incredible learning opportunity! Specifically, working my capstone project on network failover and global load balancing introduced me to real-world application of an AWS architecture to a business problem. This experience not only taught me a lot about cloud services, but also about the inclusivity when considering the community and support one has when working at AWS.


Acknowledgements

I am grateful for everyone at AWS for making first ever in-person co-op experience extraordinary!

I would like to thank my manager Achin Agrawal and my mentor Liam Walker for their continuous support, exceptional mentorship, constant encouragement, and feedback along with the other members of the onboarding team, including my onboarding buddy Shivam Patel.

And finally, I’d like to thank my co-op coordinators Laura and Kate for their constant support with the co-op process not only for this term, but for all of my previos terms as well.


Image Credits

Amazon Spheres: my camera roll

AWS Services Overview: https://i.ytimg.com/vi/JIbIYCM48to/maxresdefault.jpg