---
title: "The biggest piece of tech debt"
url: https://gardiner.today/past/canva
tense: past
edition: "2026.11.02"
updated: "2026-11-02"
---

# The biggest piece of tech debt

Canva

Software engineer, Brand Templates team, March 2023 to July 2025.

Under NDA. Role, process and approach only.

I helped remove the biggest piece of tech debt at Canva, according to their most senior engineer. I was the sole frontend engineer on Brand Style Match, and rebuilt a fragile core surface used by millions every day.

## Highlights

- [one-click brand styling](https://gardiner.today/past/canva#what-shipped): Brand Style Match, featured at Canva Create, where I was the only frontend engineer.
- [rebuilt the foundations](https://gardiner.today/past/canva#what-shipped): A restructure of the Brand Templates code, shipped in time for Canva Create, so other teams could build on it safely.
- [used by millions daily](https://gardiner.today/past/canva#what-shipped): The Brand Page sub-navigation and the publishing experience, on a core surface used by millions of people every day.
- [AI in the team](https://gardiner.today/past/canva#working-with-ai): I used Cursor, Claude Code and AMP Code daily, brought them into the team, and became the one people asked.

## The problem

When I joined in March 2023, Brand Templates had grown past what it was first built for. Old and new patterns sat side by side, the state was shared in ways that were hard to follow, and there was little to catch a mistake, so a change in one place could break a surface another team owned. Brand Templates 2.0 was the team’s plan to rebuild the code underneath, then ship what the product needed on top of it.

Ask Ardo: [what was wrong with brand templates when he joined canva?](https://gardiner.today/future?q=what%20was%20wrong%20with%20brand%20templates%20when%20he%20joined%20canva%3F)

## Role

I was a software engineer on the Brand Templates team, building the tools that help organisations create on-brand content without a designer in the loop.

Day to day that meant React, MobX and TypeScript on top of Canva’s internal component libraries, often on surfaces shared with other teams, where legacy code and new product goals pulled different ways.

Ask Ardo: [what was his role at canva?](https://gardiner.today/future?q=what%20was%20his%20role%20at%20canva%3F)

## What shipped

Brand Style Match, a one-click feature for applying a consistent visual style, where I was the only frontend engineer. It was featured at Canva Create. It pulls the style from an organisation’s existing brand templates and applies it to new designs. It’s the work I’m proudest of.

A restructure of the Brand Templates code, shipped in time for Canva Create. I was involved from architecture planning through to components and launch. That meant working across several teams and moving existing users onto the new system carefully.

The Brand Page sub-navigation, where I led the frontend implementation, alongside refactoring shared UI components and improving the publishing experience across the editor. The core surface this touched is used by millions of people every day.

**millions**, of people use the core surface the sub-navigation touched, every day

Ask Ardo: [what did he ship at canva?](https://gardiner.today/future?q=what%20did%20he%20ship%20at%20canva%3F)

## Working with AI

AI changed how I worked more than anything else in the role. I used Cursor, Claude Code and AMP Code every day to get unstuck faster, write cleaner code and keep a large, changing codebase in my head.

**the call i made**: Keep the AI tools to myself, or bring them into the team?

- Took: Bring them in. I became the person people came to with AI tooling questions.
- Turned down: Keep them to myself. Faster for me, and the team would have carried on without them.

The time it saved went into design decisions and real user problems. I brought them into the team’s workflow too, and became the person people came to with AI tooling questions.

> AI changed how I worked more than anything else in the role.

Ask Ardo: [how did AI change the way he worked at canva?](https://gardiner.today/future?q=how%20did%20AI%20change%20the%20way%20he%20worked%20at%20canva%3F)

## Outcome

I moved a lot of the code across myself and rebuilt a number of components, most notably the flow for publishing a brand template. Once the new structure was in, new features could land without breaking something elsewhere, the teams who shared the surface could build on it safely, and changing it stopped feeling like a risk.

Ask Ardo: [what changed once the new brand templates code was in?](https://gardiner.today/future?q=what%20changed%20once%20the%20new%20brand%20templates%20code%20was%20in%3F)

## Beyond the code

At the Brisbane Hub, Canva’s coworking space, I started a monthly coffee catchup as one of the company’s internal Club events. It became a small tradition there, somewhere to unwind and talk shop.

I ran retros, supported testing sessions, shared what I’d learned and wrote for the internal documentation. I also kept pushing for accessibility and visual consistency across our surfaces.

Ask Ardo: [what did he do at canva beyond the code?](https://gardiner.today/future?q=what%20did%20he%20do%20at%20canva%20beyond%20the%20code%3F)

## Ask about Canva

Ardo has read this case study and the rest of the site. Ask it what I didn’t cover, and it shows the pages its answer rests on.

Ask Ardo: [what did he build on brand style match?](https://gardiner.today/future?q=what%20did%20he%20build%20on%20brand%20style%20match%3F)

## Read next

- [Perhaps the greatest design agency in Brisbane](https://gardiner.today/past/bigfish) (Bigfish): Another live product changed without breaking what people built on it.
- [The product is me](https://gardiner.today/past/this-site) (gardiner.today): Where the AI habits from Canva went next.

[All case studies](https://gardiner.today/past#case-studies)

I live and work in Magandjin, the Jagera name for Brisbane, Australia, on the Country of the Turrbal and Jagera peoples. I pay my respects to their Elders, past, present and emerging. Sovereignty was never ceded.
