Playback speed
Share post
Share post at current time

How to Plan Software Under Uncertainty 🗺️

Interview with James Cowling, CTO and co-founder at

Hey there! A couple of weeks ago I sat down for a chat with James Cowling, CTO at Convex and former Senior Principal Engineer at Dropbox.

James’ work at Convex is incredible and I encourage you to check it out, while his track record at Dropbox is equally impressive. There, he led some of the company’s most daunting projects, including designing a multi-exabyte storage system, and later migrating it from AWS to in-house infra.

These were enormous, multi-year projects, so, our chat naturally gravitated towards the challenges of leading them.

In particular, I was interested in how you plan and execute these right. In fact, not only are these projects massive — they also happened in a hyper-growth context, where assumptions shift all the time, and the team doubles in size year over year.

It was an incredible conversation. So, this week I took all the notes from the interview, combined them with my own ideas, and created this special edition.

Other than the full video of James’ interview, here is what we will cover:

  • Dealing with uncertainty — how to embrace uncertainty and unknowns.

  • 🗿 Stepping stones — James’ framework for de-risking and executing big projects.

  • ✏️ Design for simplicity — making progress and deferring commitment.

  • ⏲️ Management and deadlines — building the right thing vs building the thing right.

  • 🌟 Simplicity culture — rewarding value vs rewarding building.

Let’s dive in 👇

Watch with a 7-day free trial

Subscribe to Refactoring to watch this video and get 7 days of free access to the full post archives.

Luca Rossi