Ryan Sheppard

W23/S23 Work Term Report

After careful consideration, on October 21st, 2022 I made the decision to join RBC in downtown Toronto. I learned how large companies run their engineering teams, and about the dedicated employees who make up the bank. I met with many interesting directors and listened to thought-provoking executives. I had an amazing time at RBC, and I see the opportunities that RBC provides for each employee.

Information About the Employer

RBC needs no introduction; It’s the top bank in Canada. With locations across the country, it’s hard not to see an RBC branch, ATM or advertisement. Instead, I thought I’d share some interesting facts about the bank sourced from it’s employees:

  1. The corporate headquarters located at 200 Bay Street has 71,000g of 24-carat gold on it’s 14,000+ windows. The gold windows provide reflection from heat radiation keeping the building cool in the summer and warm in the winter.
  2. RBC will invest $500 million in their future launch initiative over a span of 10 years, helping young people like me get the job they want.

Job Description

In the first half of my work term, I moved many of my team’s legacy applications from RedHat OpenShift 3 to OpenShift 4. From writing code, to testing, to vulnerability management, quality assurance, deploying into production, and production implementation verification, I learned what it takes to get an application into production.

In my second term, I worked on feature development for the Payment Orchestration squad. The service I worked on was responsible for orchestrating data from upstream services and sending it to the appropriate team who will process the payment. In this position, I got a better idea of the software development lifecycle, organization and culture at the bank.

Across both terms, I participated in alternative opportunities. I started working with Bojan Nokovic, PH.D on an AI related project to help detect fraudulent sign ins. Additionally, I led two new developers on an internal project to streamline developer’s task management. I learned the most about myself and about the bank when I pursued these alternative opportunities.

Goals

Book 6 coffee chats with people from other teams ✅

I met as many people as I could at the bank because I wanted to understand engineering at a larger scale. Since I was a coop, I had the perfect excuse for messaging directors and asking them to chat over coffee. Here are some of the interesting people I met:

  1. Jim Miller (Recruiter). Jim is incredibly selfless. See my LinkedIn post about Jim. I wish him and his wife well, and I hope he gets everything out of life.
  2. Geoffrey Peart (Senior Director Digital Agile Practice). Jeff was around when RBC started to move from old school banking to digital banking. He is one of the pioneers for Agile within RBC. He gave valuable insight on agile, the Cynefin framework, and solving team challenges.
  3. Paul Chester (Director OpenShift Infrastructure). Paul has been with the bank for over 20 years. He told cool stories of moving application code from the mainframe into the cloud. I asked questions on how he runs his team, and he gave interesting answers like establishing processes so the team runs themselves, and delegating duties.
  4. Kevin Kwong-Chip (Senior Manager Open Banking Development). I asked Kevin questions related to team conflict. He gave tools and tips for dealing with personal frustrations and we had an interesting conversation about different types of workers.

I made this goal in my first term when I wasn’t excited about the technology I would be using. So, I wanted to dedicate some time to at least one marketable technical skill. I’m happy to say that I’ve come out of RBC with many technical skills. RedHat OpenShift Container Platform 4, Jenkins, Spring Boot 3, and Java 17 are just some of the technologies I am now familiar with. I’m very pleased that I was able to work with so many different technologies used across the industry during my work term at RBC.

Make contributions to at least one inner source repository ✅

RBC’s “inner source” is an open source ecosystem for RBC employees. It contains software like Angular component libraries, Linux Docker containers preinstalled with SSL certificates, and Spring OIDC components.

I wanted to make a lasting impact at RBC, and this was a way for me to do that. I was able to add a missing link to some documentation, but I didn’t dedicate nearly enough time on this goal to make a lasting impact. Luckily, I believe I contributed enough to my team to make the impact this goal was originally trying to make. Nonetheless, I did make a contribution to an inner source repository, completing my goal.

Lead an internal project ✅

At my second coffee chat, Jim Miller mentioned the best way to improve confidence at work is to find areas where I can apply leadership. Solidifying your position as a leader in some aspect makes you feel useful and established which helps with confidence.

I found an opportunity to lead two new developers on a project, to raise their technical knowledge and to establish some foundations they wouldn’t get to learn in their day-to-day. Overall, we faced man different productivity and motivation challenges, but I’m happy to say that we came out of the project with something instead of nothing. I think both developers were appreciative for my guidance despite not having come as far as we wanted to.

Migrate a Spring Boot 2 application to Spring Boot 3 ✅

I knew this goal was going to be my largest while at the bank, so I set this goal so I would focus on completing it within my term. I’m happy to say I am the first to upgrade one of my team’s services from SB 2 to SB 3. This is important because it creates a guide for all other SB upgrades within my team.

The challenge with upgrading SB applications is not upgrading SB itself (they provide an awesome guide on doing that) but rather all the third-party applications that need to be updated for compatibility with SB. For example, my app’s Spring Security component required major updates that necessitated deep understanding of Spring Security. Sometimes a method is removed in an upgrade and I had to hunt down the new method replacement. You can read more about another challenge I had when upgrading Spring Boot in this blog post.

Conclusions

The beginning of my time at RBC was tumultuous, but it really turned around. I’m grateful to have met the people I got to meet, and to have the experiences I have. If I had to do it all over again, I would; and I think that’s a good indication of my time at RBC.

Acknowledgements

Zhiming Xu (Lead Software Developer) (pictured above on the left) was a major influence for my return to RBC in the summer. My winter term was hard, but Zhiming guided me and reassured that our project was unusually difficult. He inspires me to be more resilient and patient when things are awry.

Pradeep Sappa (Manager Payment Orchestration Services) (on the right) added fuel to my fire. His care and concern are unmatched and he consistently donated his time to teach me and listen to my concerns. His technical knowledge is rich; I have a lot to learn from him.

Shubhi Gupta (Director Digital Security and Shared Services) is an integral part of my success at the bank. She helped me make multiple connections, and gave me many opportunities to flourish.

Bojan Nokovic, PH.D (Principal Engineer and Research Scientist) gave many alternative opportunities at RBC. I worked with him to maintain an AI project he led a few years ago, and asked me to review a paper and presentation he was publishing in an AI journal. He’s given me my first real exposure to academia and I’m very grateful for the opportunities he handed me.