Report Last workterm @ RBC
Post
Cancel

Last workterm @ RBC

Welcome to my final co-op blog post. I am Niloy Ghosh, a fifth-year Computer Science student at the University of Guelph. This blog will document my exceptional experience as a Winter & Summer 2022 intern (8 months) at one of the biggest banks in Canada. Let’s fasten our seat belts and get started 🚀.

Who is the Royal Bank of Canada

rbc-waterpark-place RBC WaterPark Place

Royal Bank of Canada is the largest bank in Canada and one of North America’s leading financial institutions. RBC provides personal and commercial banking, wealth management, insurance, investor services and capital markets products and services globally.

For this co-op term, I worked as part of the HomeX Mega Journey for 8 months in a hybrid setting to develop their Omni channel to make the mortgage processing experience more accessible.

What did I work on

technologies-i-worked-with Tools & Technologies I used

As a Software Developer Co-op, I returned to the same squad (Blue Steel) as the last term. Half of my work term was remote, and the other half was in a hybrid setting. As a Software Developer Co-op at blue steel, my roles included:

  • Developing new features for transforming the Home Buying Experience for our clients and advisors
  • Maintaining an existing RBC mortgage product.

Both applications were built on top of Spring and Angular ecosystems. My primary goal for this term was to stick to backend development completely. Here are some tools & technologies I got to work with: Java/Spring, SQL/MongoDB, GraphQL, JUnit5/Mockito, Postman, Dynatrace/Splunk, Git/Github.

Goals & Reflections

During my first week, I faced a couple of challenges. There was a significant gap in my product knowledge and a big change from last summer. Our new product had moved from MVP to production; there was the existing mortgage product which I never knew existed; SQL migration using flyway was a pain (😮‍💨), and they closed down the Starbucks in the food court 😩! My mentor and I developed the following goals to have as many takeaways as possible. We held bi-weekly 1:1 meetings to hold me accountable, ask for feedback about my work, and track my progress.

First 4 months

Contribute to at least 10+ User Stories / 5+ Feature Building Stories using Spring, MongoDB, and OpenAPI

1
2
3
4
5
6
7
8
9
10
11
12
13
package io.github.productionbug;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class BuggyApplication {

	public static void main(String[] args) {
		SpringApplication.run(BuggyApplication.class, args);
	}

}

Although I had previous experience with the Spring Framework, I felt I needed to hone my skills. To start, I migrated RBC’s existing mortgage product to the latest version of Spring and Java 17. Since we were following a microservices architecture, the migration was needed across several repositories. During migration, I became familiar with the existing mortgage product that my squad was supposed to maintain. I won’t deny the migration work was tedious. But it helped me learn more about the product and how the codebase met different business requirements. A considerable part of the work was regression testing. With the help of my senior developers and the downstream teams, I successfully gathered the criteria to test the core components. The migration work enabled me to dive deep into the maven build tool. I was confidently able to manage the maven pom.xml - a tool which I wasn’t much confident on last summer.

Being in a feature squad, I was assigned feature-building tickets throughout my internship. I got up to speed with the ins and outs of Spring by quickly finishing tutorials on Udemy & Youtube. I put everything into practice by implementing the spring components needed to build the feature. I am a great fan of OpenAPI. OpenAPI is a tool for standardizing REST interfaces and autogenerating boilerplate code based on the yaml configuration. To gain more confidence in the OpenAPI setup, I created my own OpenAPI project to see how various configuration behaves. During my Winter term, I presented my different findings about the OpenAPI specification to share the knowledge with a group of co-op students at RBC. This goal was a huge success, as I completed 8 user stories on migration and 2 user stories on feature building.

Get well versed in Backend tools and Development tools/technologies to boost productivity and also become AWS Certified Developer Associate

lgtm Looks Good To Me

When I came across my first bugfix ticket, two new backend tools were introduced to me by my mentor: Splunk and Dynatrace. Splunk is a data analysis platform which processes machine-generated data for better observability. It’s like an “intelligent system” which feeds on the application logs to perform data analysis on the application’s behaviour. I mostly used Splunk logs to monitor, debug, and identify the behaviour of the end users using our application. For one of our microservices, I set up two Splunk alerts to inform us about any production outages so that we can respond quickly. Dynatrace was another big player in the game of debugging; an enterprise production monitoring and alerting tool checks the application’s health and tracks the request behaviour. At first glance, I found Dynatrace to be incredibly challenging. It is a powerful system with a very complex UI. To get comfortable with Dynatrace, I paired up with my mentor and senior developers to observe how they used Dynatrace to debug production bugs. A helpful feature that I came across was Dynatrace Pure Paths. Pure Paths Technology supplied metadata about failed request calls and provided distributed tracing to identify which API request caused an issue. The distributed tracing feature was beneficial for me in troubleshooting production issues promptly. These tools made me more productive, and I could quickly add hotfixes for production bugs.

Reading other people’s code is always a challenge. I believe this is an essential skill as it ensures holding others accountable for the correctness and quality of the code changes that the author will merge. One of my biggest goals this term was to get better at doing code reviews through Github. To achieve this goal, I reviewed 120+ pull requests on GitHub. In our 1:1, I asked my mentor for feedback and any areas I could improve for reviewing the PRs on GitHub.

Unfortunately, I couldn’t prepare for the AWS Certified Developer Associate exam. Although I started the course content, it was huge. I couldn’t find enough time to go through the course content. So I kept AWS in my backlog as cloud technologies are something I want to look into in the future.

Networking / Public Speaking / Hosting Knowledge Sharing Sessions

coffee-chat Photo by Frank Leuderalbert on Unsplash

Being a co-op, it was always important to connect with different people across the bank to know more about other roles that I could explore in the future. Throughout my work term, I had ten virtual/in-person coffee chat sessions with leaders across the bank. We talked about similar interests in tech, career advice, tech interviews and the different roles I can explore throughout my development journey.

Furthermore, I co-organized the Omni Tech Talk series event. The Omni Tech Talk series is a safe space where students can practice public speaking and present any technical/non-technical topics they learned during school/work term/personal projects. I was also able to deliver a knowledge-sharing session on OpenAPI. These activities allowed me to improve my networking and public speaking skills.

Last 4 months

Getting better at the Spring/GraphQL ecosystem by contributing to 8+ User Stories

1
2
3
4
5
6
query {
  getBubbleTea(size: Size!) {
	flavour: Flavour!
	addons: Addons
  }
}

As I actively contributed to the product backlog, I wanted to hone my skills on GraphQL. At HomeX, we were doing Inter Squad Development; we worked with repositories from a different domain within our mega journey to build our data store. When I transitioned to the data store repositories, I came across GraphQL/Spring and SQL as the core technologies. Besides implementing features, I leveraged JUnit5, Mockito and Wiremock to improve our code quality by significantly bumping up the repository test coverage. I also helped developers from across the other domains set up their GraphQL repositories. I was able to ship 9 user stories in the last four months. This goal was a massive success as I got very confident writing tests, spinning up GraphQL servers, and completing user stories both in an independent and team setting.

More Networking / Public Speaking / Leadership / Hosting Knowledge Sharing Sessions

leadership Photo by Nick Fewings on Unsplash

Leadership is a new area that I am exploring. Although I was actively involved in the Tech Talk Series, I wanted to do more. To build my leadership skills, I joined the Omni Co-op Organizers Chapter. The Chapter was a reliable resource for new Omni developer co-ops to resolve any difficulties they might face during their work term. My responsibility included onboarding the new HomeX developers, hosting more knowledge-sharing sessions on Java and JUnit5, doing midterm check-ins and facilitating the end of the term retrospective.

Additionally, I spearheaded the onboarding process by creating bash scripts to automate the RBC environment setup. Using the scripts, I successfully onboarded 6+ new developers at the end of my term with a better onboarding experience.

Getting better at time management, become more productive and agile

agile Photo by Daria Nepriakhina 🇺🇦 on Unsplash

At HomeX, we followed a Scrumban approach to handle our day-to-day tasks. To better understand our agile process, I acted as a flow master for 4 Sprints throughout my 8-month term. I facilitated all scrum ceremonies, such as Daily Standups, Sprint Reviews, maintaining the Jira board and Sprint Retrospectives. Furthermore, I actively participated in Sprint Planning and Backlog Refinements by taking and sharing notes with my team. The notes helped me ask the right questions during our meetings/working with downstream teams, which also helped in the rapid development of features.

Key Takeaways

Backend is a gigantic space

Although I had great takeaways as a backend developer this term, I still have much to learn. During my coffee chats with other teams, I got an idea of the broad the backend space is. In the next couple of years, I will look into more topics such as Event-driven architecture, Indexing and more.

Always (try to) push quality code

Testing is a crucial part of ensuring code quality. While at RBC, I used a few thousand keystrokes to develop automated test suites to ensure the code was working. The tests will allow developers to push future changes more confidently without breaking production. Another excellent method to assure code quality is through code reviews. Code reviews are vital as they hold the code authors accountable for writing well-tested code that follows the acceptance criteria. It is also a great way to learn about the product’s different features that other squads are building.

Learn to read other peoples’ code

While working on bugfix tickets, reading existing code written by other developers was challenging. However, I feel this is an essential skill every developer should have, and I am glad I got a chance to experience it.

Splunk & Dynatrace is our friend for production debugging

Enterprise tools such as Splunk and Dynatrace always helped me dissect production bugs. They are like the debugger you always wanted but never had when your application runs in the cloud. Good logs are also necessary, as it always helps to understand the end-users behaviour. When in doubt, log it out - that’s all I have to say 🐧.

Kudos

kudos kudobox.co

Last but not least, I am very grateful for my excellent team. I laughed, had fun, and made mistakes from which I learned. I want to thank my manager, Marijn Bel, for always being supportive and my mentors for hand-holding me throughout the term. To all my squad members, thanks for being uniquely wonderful. Bluesteel shall forever remain in my heart.

To my co-op counsellors, Kate & Laura - thanks for the tremendous support throughout all my work terms.

To my program counsellors, Greg & Sarah, I appreciate you taking the time to review this report. Thanks for always encouraging us to put our best foot forward.

This post is licensed under CC BY 4.0 by the author.
Recently Updated
Contents

-

-