Devon McGrath, Senior Developer

Devon McGrath

I'm a Senior Developer at BMO,
with a BSc in Computer Science.

5+ years of industry experience
10+ years of programming experience
LinkedIn GitHub

My Mission

Simplify, Automate, Eliminate

Have a manual, repetitive, tedious task? I look to eliminate or simplify these tasks by introducing automation, whether it's a script or full web app. Read how I saved my team over 200 hours each year by automating deployments.

Future-Proof

When designing and implementing systems, I think about the bigger picture. I ask myself, what ways could this be extended in the future? My goal is to build extendable, generalized systems so change in the future is easier.

Knowledge Sharing

As they say, knowledge is power. I believe documenting processes, systems, and anything in between, is critical for long-term success. In the past, I've created clear and concise documentation in PDF form and on Confluence. Additionally, I have led knowledge sharing sessions.

Continuous Learning

The only thing constant is change. I strive to continuously learn on and off the job. From learning the OWASP Top Ten to cloud computing platforms to a vendor application on the job. Learning never stops and staying up to date leads to better solutions.

Experience

BMO Financial Group

Senior Developer

May 2019 to Present

eForms and eSignature Center Of Excellence (EECOE)

Key Responsibilities

  • Lead projects to ensure correct solution design and implementation
  • Design and implement databases, backend workflows, APIs, and frontend interfaces
  • Develop and maintain unique workflows in Quadient, to accomplish project-specific tasks
  • Develop and maintain dynamic eForms in Quadient according to business requirements

Key Accomplishments

  • Designed and implemented a tactical backend application to sync info for thousands of daily transactions from a vendor API and transfer transaction documents to long term storage
  • Designed and implemented key backend database and JavaScript APIs for an application that supports over 1000 transactions per day
  • Developed innovative web apps for my team to use, saving time and enabling us to do more
  • Created and documented a set of standards for developers to follow
  • Created a Quadient code checker to look for standard violations and automatically raise issues

Awards

2 Annual Best of the Best
4 Quarterly Spotlight Awards

Business Systems Analyst

May 2018 to May 2019

eForms and eSignature Center Of Excellence (EECOE)

Key Responsibilities

  • Develop and maintain dynamic eForms in Quadient according to business requirements
  • Manage existing highly dynamic web forms
  • Document department systems and processes

Key Accomplishments

  • Created and maintained dynamic eForms in Quadient Inspire Designer
  • Collected, documented, and implemented business requirements for small projects
  • Refactored Quadient code to be more efficient and standardized

Systems Operation Centre Analyst

May 2017 to Aug 2017

System Operations Centre (SOC)

Key Responsibilities

  • Provide Tier I, enterprise-wide, system and application support on a 24/7 shift schedule
  • Utilize the ITIL process to investigate, update, escalate, and resolve production incidents

Key Accomplishments

  • Resolved production incidents on Windows and Unix-based servers
  • Simplified the escalation process by writing a PowerShell script to automatically generate Tier II escalation emails
  • Created a script to scape and analyze escalation web-data and generate a report to be provided to business teams
  • Provided informal training on PowerShell to members on my team

Platform Integration Developer

May 2016 to Aug 2016

Faculty of Science

Key Responsibilities

  • Create and maintain Group Policy Objects (GPOs) to manage workstation and user settings
  • Create and maintain Active Directory objects (Security Groups, Users, Computers)
  • Update Windows servers with monthly security patches

Key Accomplishments

  • Created, updated, and removed GPOs from production environments
  • Created a script to automatically generate a report on GPOs in a domain
  • Implemented Windows server monthly security patches

Ontario Tech University

Undergraduate Teaching Assistant

Sep 2018 to Dec 2018

Faculty of Science

Key Responsibilities

  • TA for "CSCI 1060U - Programming Workshops I"; a first-year Computer Science programming course focusing on C++
  • Run lab sessions, assist students with core concepts, and mark assessments

Key Accomplishments

  • Ran two 3 hour lab sessions per week
  • Assisted students with course concepts and lab assignments

Linux Support

Sep 2017 to Apr 2018

Faculty of Science

Key Responsibilities

  • Assist students with the setup and management of Linux on their personal laptops

Key Accomplishments

  • Provided support installing Xubuntu in a dual-boot configuration
  • Setup software and tools on Windows/Linux required for courses

Skills

Problem Solving

At the core of everything I do, problem solving allows me to design and implement solutions using available tools.

Programming & Scripting

Over 10 years programming experience in Java, JavaScript, TypeScript, SQL, PowerShell, C, C++, and Python.

Databases

Experience designing databases and writing queries for databases, for small (thousands of transactions) to medium-sized (millions of transactions) applications.

Web Development

Core understanding of HTML5 and CSS3, with knowledge and experience in React, Angular, and jQuery. Backend experience with Node.js and MongoDB.

Document Design

Designing and maintaining highly dynamic documents in Quadient Inspire Designer and Adobe LiveCycle.

Miscellaneous

  • Methodologies: Agile Software Development, Waterfall
  • Software: Confluence, Jira, Git, Quadient Inspire Suite
  • Operating Systems: Windows, Linux, Mac OS

Education

Ontario Tech University

Bachelor of Science (Honours), Computer Science

With Highest Distinction

Thesis: Automatically Repairing Concurrency Bugs in Java with ARC2.

Core Courses

  • Systems: Operating Systems, Computer Networks, Databases, Computer Architecture
  • Software: Software Quality Assurance, Software Design, Massively Parallel Programming, Web & Mobile Development
  • Theoretical: Algorithms, Big Data, Compilers, Statistics, Graphics, Calculus, Physics

Extracurricular Activities

  • Financial Controller for Community Connect Club
  • Event Volunteer
    • Recruitment Events: Open House, the Ontario Universities' Fair (OUF), and High School Science Day
    • Science Rendezvous Volunteer
  • Ontario Tech Ambassador & Orientation Leader

Projects

Project Alpha (2020; codename)

Work Project at BMO Financial Group as Senior Developer

In the early days of the pandemic, we had to quickly adapt - like everyone else. I was tasked with building a backend application capable of connecting with a vendor API to sync information, identify/link customers, download files, and send downloaded files to long-term storage. I architected a solution that integrated with internal systems and the vendor API; then, I implemented the solution using workflows in Quadient Inspire Scaler.

The project continues to handle tens of thousands of transactions per month, with millions of files per year.

Key Accomplishments

  • Collected requirements, performed research, and turned the results into a solution
  • Collaborated with other teams and vendor
  • Architected and developed backend workflows and database
  • Delivered all components on time, with no major issues

EECOE Web Apps (2018 to present)

Work Project at BMO Financial Group as Senior Developer

After joining the EECOE and throughout the years afterwards, I took the initiative to take a serious look at department processes and figure out how we could do better. It started by creating a web app to interface with our backend APIs instead of using SoapUI. Eventually, it grew to over 10 web apps all serving different purposes; complete with a login system, backend APIs and workflows, and a database for managing data.

The web apps collectively Simplify, Automate, or Eliminate processes altogether. They are used extensively by the team - in 2022: over 11,000 page views, over 20,000 forms generated, and around 1,600 code packages deployed.

Key Accomplishments

  • Architected all web apps, backend APIs and workflows, database, and login system (using Active Directory)
  • Automated code package deployments in lower environments, saving 200 hours per year
  • Designed a search app to search over 200,000 files and folders in under 1 second
  • Empowered Business Analysts and managers to generate the latest eForms from any environment
  • Designed an app that automatically checks code quality within a vendor application and raises/closes issues

ARC2: Automatic Repair of Concurrency 2 (2019)

Undergraduate Thesis

ARC2 is a Java program designed to take a buggy Java program - which contains data races and/or deadlocks - and a suite of JUnit test cases. Using a genetic algorithm and the test cases, ARC2 will attempt to automatically find a fix for the concurrency bugs.

Links

Screenshot of ARC2.

Asset Tracker (2023)

Personal Project

A simple web app to track assets and transactions in financial accounts. Built using Google Cloud Platform (Firestore, Hosting) for the backend; React for the frontend.

Links

Screenshot of the Asset Tracker Web App.

Text Editor (2021)

Personal Project

A web-based text editor with syntax highlighting, formatting, and hex/base64 conversion capabilities. Made with Angular and Material Design; hosted by Google Cloud Hosting.

Links

Screenshot of the Text Editor Web App.

MIDI Player (2018)

Personal Project

A web-based MIDI player capable of visually playing MIDI files.

Links

Screenshot of the MIDI Player Web App.