S23 Work Term Report

Samuel Guilbeault (1088129)

Introduction

Over the past 8 months, I have continued to work as a Full-Stack Developer at CANImmunize. This page outlines the role, responsibilities, and professional growth that I have experienced in my continued role at the company.

CANImmunize Logo

Information About Employer

CANImmunize is an internationally-recognized Ottawa-based tech company that specializes in immunization and other medical software. Its employees from around the world collaborate to create top-of-the line software solutions for vaccination tracking, appointment booking, forecasting, and research. Below are some of these solutions.

ClinicFlow
ClinicFlow is a immunization administration tracking and appointment booking system. Key features include booking pages for public appointment bookings, an app for immunizers to log vaccines, a console for internal use and management, and integration with the nation-wide healthcare system. Current applications are supporting COVID-19 vaccination campaigns, influenza vaccination campaigns, and other vaccination campaigns across Ontario, Nova Scotia, the Yukon Territories, and Prince Edward Island.
CANImmunize Public App
The CANImmunize public app is a mobile app that allows users to securely store their vaccination records, get their required vaccinations on time, and boost vaccination awareness.
Canadian Vaccine Catalogue
The Canadian Vaccine Catalogue (CVC) is the source-of-truth for vaccine terminology and vaccine product information in Canada.
ImmunizePT
Created as a collaboration with medical professionals from the United States, ImmunizePT is a vaccination recommendation app created with the goal of improving vaccination rates in transplant patients.
CANImmunize Forecasting Engine
The CANImmunize forecasting engine provides the most comprehensive immunization recommendations for patients on a variety of different vaccination series.

Job Description

I was a full-stack developer at CANImmunize. This meant I worked on all parts of the system, including both front- and back-end. This included participating in design sessions and retrospectives, attending sprint planning, coordinating testing efforts, and developing code for both internal tools and production environments.

Over the past 8 months, I have had two primary areas of focus. First was the general maintenance of the ClinicFlow software in the Nova Scotia environment. Some examples of this maintenance include:

  • updating the forecasting engine used as a part of the ClinicFlow software to align with rapidly-changing public health guidelines
  • improving vaccination receipt PDFs to include improved formatting, translation options, and general configurability
  • other miscellaneous fixes, optimizations, and features

My second area of focus revolved around leading the development of a new ClinicFlow instance for the Kids Come First: Vaccinate and Up-To-Date campaign. This included leading the design and implementation of many new requirements and features, as well as some coordinating of other team members and risk mitigation. The project successfully went live during the summer months of 2023. Major features that I developed as a part of this project include:

  • adding the ability to book appointments of various length into slots of different lengths (i.e. booking a 30-minute appointment into 2 subsequent 15-minute slots)
  • improving portal configurability by adding fully customizable texts, customizable vaccination receipts, and configurable authorization methods including 2FA
  • addition of new service types beyond vaccination services

In addition to these primary responsibilities, the rapid growth of the company also presented new responsibilities and opportunities for growth, including the informal mentorship of new coworkers, performance evaluations and the introduction of an engineering ladder, and more.

A Nova Scotia COVID-19 Booking Page
A table displaying sample forecast information

Goals

My goals for these terms initially included improving my technical literacy for some of the specialized tools we use in a way that can positively impact the team through positive communication and good habits. Later, given the growth and changes happening internally at the company, the new goals set during the summer semester revolve more around professional growth and taking steps towards becoming considered a senior developer instead of a standard developer.

Below is a brief summary of each of these goals. For more detail, refer to the Learning Goals section in Experience Guelph.

With our evolving QA process, formalizing and developing test plans is becoming more of a routine part of my dev responsibility. I want to develop my test planning and communication skills.
Test planning was added to part of our original scope planning. Part of this included creating and estimating the tests for a given feature. While I originally thought I would be more involved in the formalizing of these plans, this task was offloaded to others.
I want to increase my technical literacy in terms of AWS and Terraform.
There was some growth in this area. I gained some familiarity with our infrastructure repository through a change regarding how the software handles certain client-specific configurations (environment variables) which are handled by terraform. Also generally got more acquainted with AWS, especially with Cloudwatch.
I need to improve some time management skills in response to new processes.
I definitely feel like I accomplished this goal. I made it a habit to move tickets as I went, and to double check again at the end of the day. Time tracking was also done more promptly, usually during the day or at the end of the work day instead of the end of the week.
I want to step of my level of involvement in the implementation and design of processes.
There were some goals accomplished here. For example: adapting our Git strategy to handle our multiple production setup, adapting our migrations CLI to support client-specific migrations as a part of the migration process, beginning the creation of a set of tools to manage client-specific configurations.
I want to improve communication and spread knowledge through some form of mentorship.
I accomplished this goal, albeit informally. I was the go-to guy for a good amount of the knowledge transfer and informal training for employees that joined the company during the past 4 months, including my manager, a consultant, and a junior dev.
I want to improve the maintainability of the forecasting engine through code improvements, documentation, and other forms of knowledge transfer.
This goal was somewhat met. There was some improvement in documentation, and a couple small meetings for knowledge transfer with project managers and potential testers. Still room for improvement (e.g. video walkthroughs and code improvement).
A KCF vaccine receipt after Sam's overhaul

Conclusions

These work terms have broadened my outlook and helped me to develop a road map and vision for the future of my career. I consider myself very fortunate to be part of a company that is growing alongside myself and allowing me to witness all the changes both large and small that are a part of that. Doing so has allowed me to develop a unique outlook on the rest of my career, and I look forward to applying all the insights I have gained post-graduation.

Acknowledgements

I have to give a shout-out to all the fantastic coworkers I have had alongside me that put faith in me to succeed in new challenges and make it so almost no day ever really feels like work :)