Josh Graham

As an engineering team grows (along with functionality and number of users), the need for consistency in some areas increases dramatically. You quickly notice problems if the technology with which the software is developed differs from the technology on which it is deployed, and if developers have local environments that differ because their machines are self-managed. It also makes for an increasingly challenging exercise for new starters to become effective quickly. We’ve decided to build a Standard Development Environment (SDE) to address these issues. Read more...

David Hearnden

Today, I’m testing new features of Canva’s dynamic flag system. Next to me, a fellow engineer is working on the pipeline that updates design images in response to design edits. These are separate features, and both have broad reach through components that make up Canva. As we iterate, each of us is running an isolated, functionally-complete Canva universe, of between 16 and 32 separate components (depending on how you count). We can exercise Canva’s full suite of features: creating and publishing designs, searching images, purchasing and downloading prints, browsing the social graph, interacting with designs in the stream, and so on. We’re not doing this using a vast network of distributed machines; we’re doing this entirely within the confines of our laptops, without even needing network. Read more...

Josh Graham

When I think about world-class software development teams, I think about shipping, surety, and scale. Approaching software as a craft enables developers to build something that delivers value, has a sense of quality and is aesthetically pleasing (both on the surface and in the code itself), and is able to adapt to the success of the business. Read more...