Backend Engineer on the Print team
Backend Engineer on the Print team
- Hear from Nik, Backend Engineer
Hear from Nik, Backend Engineer
What attracted you to join Canva?
I have a friend who used to work with Dave Hearnden, Canva’s CTO, back when they were both engineers on the Google Wave project. He suggested that I apply, and my first impression was very good. This was back in 2014, and the attention to detail was amazing for such an early product. There was just this sense of delight at being able to make designs so easily.
When I met the founders, Mel and Cliff, their vision was crystal clear. I think that’s really important for a startup. Even though they aren’t technical themselves, they have a real technical sense. They can dream big, but they also know what’s possible and how to find good people to help them build it.
What is the backend developer role like at Canva?
There’s a real mix of backend development roles at Canva. Some roles involve focusing on a single product or feature and working more full-stack, others are more infrastructure based. As our Search and Recommendations team expands, there will also be more demand for work involving algorithms and machine learning. That work is currently done in Scala, but it also has to interface with the Java backend. There’s also the infrastructure team, who are helping Canva scale to millions more users and providing tools for other backend developers to do their jobs more easily.
In general as a backend engineer you get to play with a lot of cool technologies on AWS, you get to design APIs and services and interact with different data storage technologies. There’s a wide range of domains you can work in. There’s Print where I work, there’s the media service which handles all of our images, the search space, billing, there’s the service which stores the designs and renders them into images, and quite a few more. Canva has millions of users, images and stored designs, and there’s a lot of complex and interesting work on the backend.
My role is setting the technical direction in the print team, so I do a lot of design work. I think about how we’re going to represent print jobs, orders, and all the options people can select. That includes how to charge people for things and how to send things off to the printing factories. We’re using Java on the backend, but the design work is more high-level modelling rather than language specific.
I’ve spent a fair amount of time mentoring as well. We started the print team with just two backenders, myself and another engineer. He had only just joined Canva, so we were building together while I showed him the ropes. Mentoring is super fun, and I find it really rewarding as well.
What technologies do you use on your team?
In the Print team we decide what infrastructure we want everything to run on, there’s nothing mandated from the wider engineering team. We’ve got all of AWS at our disposal, so we choose things like which data stores to use, or whether we want to use queues or not.
The infrastructure team makes everything very easy for us, they give us the tools that allow us to focus on our core jobs as backend engineers. If we decide tomorrow that we want to upgrade one of our databases for example, it’s just a matter of changing something in a text file, deploying that change and it’s upgraded. That’s done using Terraform, which allows us to declare all of our infrastructure as code. Whereas 20 years ago you’d have to buy a computer and plug it into a power socket and a network, now we can do the same thing with a couple of lines of code.
The whole print service runs on AWS, for example SQS, which is an AWS queueing service. Each message to the queue is a print job, and a worker will take each job off and route it to the appropriate printing facility. We also use Amazon’s Relational Database Service, which is running MySQL. The actual services run on EC2 instances, and we also use S3. In general we try to choose the best tool for the job, not just the thing we’re already familiar with using, so for example we also use MongoDB and Cassandra for different things. Then there’s technologies specific to the printing facilities that we use, which each have their own APIs that we interface with.
What do you find most interesting about your job?
Firstly it’s the impact of what I’m building, I’m really motivated by knowing that our work will be used by millions of people. We knew when we started that there was a lot of pent-up demand to print from Canva, then actually building the print service and seeing all the positive reactions was really motivating and inspiring. I’ve seen that instant positive reaction several times after building things at Canva. On the engineering side, I always seek out projects where I’m going to learn a lot, that’s a massive driver for me. I really like that my day-to-day role allows me to do that.
How would you describe the culture of the Print team at Canva?
People really care about building the best product possible, rather than winning for themselves and pushing their own agenda. That’s the same right across Canva. We talk about ideas, challenge each other and enjoy being challenged by other people as well. We’re very collaborative.
On the Print team we have a very concrete product that we’re building together, so there’s a real sense of supporting each other in a common goal. Everyone brings their own unique skills to that and we have a lot of fun.
What are some of your favourite office perks?
There’s almost too many to mention! There’s the awesome breakfast and lunch, and the bar of course. The quality of the food just shows how much we’re cared for. There’s a real feeling that the founders want us to be as happy as possible, so we’re doing our best work. Sometimes I have lunch here and it’s some of the best food I’ve ever eaten.
I love our coffee machine too! Of course I could walk a hundred metres down the road and buy a coffee, but I like the challenge and the experience of making a coffee for myself. The beer taps are great as well – beer just tastes better out of a tap for some reason. Then there’s the staff kitchen, so if I want to make myself a cheese toastie in the middle of the day I can.
We have a lot of internal clubs at Canva, which each have their own little budgets. I’m part of wine club, beer club, burger club, book club, whiskey club, sushi club, ramen club, cheese club and “Yolo club”. You’ll have to discover what that one is for yourself.
What skills or attributes are you looking for when hiring backend engineers at Canva?
We’re not looking for specific skills, or people who already know Java. We do all of our development on the backend in Java, but that’s not a requirement for people coming in. We’re really looking for smart, technically capable people who are really strong in at least one area, and pragmatic people who get things done. We also value curiosity and the drive to go the extra mile to make great things.
If you’ve worked on any interesting side projects, or had your own startup, that can be a good sign. Anything that shows that you’re driven. When you’re releasing a product you always have to make tradeoffs, so if you can demonstrate how you balanced those tradeoffs in a previous project, that can be a good indicator too.
Why is now a good time to join Canva?
We’ve got a lot of talented people working here, so you’ll learn a lot. Particularly now we’re growing so fast, there’s a lot of opportunity for people to grow and expand their skills. So if learning is something that really drives you, and you’d like to experience the challenges of a fast-growing company, now is a great time to join Canva.
Software Engineer - Observability
Senior Software Engineer - Engagement
Principal Software Engineer - Observability
Full Stack Java Engineer - Backend Passion
Senior Software Engineer- Pages Platform
Sydney or Remote (Aus/NZ)
Data Warehouse Engineer (Open to Remote across ANZ)
Senior Software Engineer - Edge Systems
Sydney or Remote (Aus/NZ)
Software Engineer - Java, Product & Features
Java Software Engineer