Share your branch

I've been building software from my home, with globally distributed teams for almost a decade now. It's been great.

I'm currently at Supabase. A very early-stage, rapidly-growing startup. My time here so far has quite different than my previous roles at larger companies with bigger teams. There's much more to do, more to figure out, there's more hats to wear. There's more greenfield, way less established structure and process and all that. All the things you'd expect of early-stage, rapid growth startups are mostly true here I think.

Despite all this, we're able to get a lot done. On the frontend team there's just 3 or 4 of us at the moment, depending on how you count and depending on the week. We have roughly 1 zillion things we either want or need to get done. Slowly but surely, week after week, we do get it done.

I've spent a lot of time in the last year wondering how. It took me a while to realize it, but I think I've come up with a tiny, tiny thing that's a big part of the explanation.

What's yours is mine

A team member pinged me yesterday, suggesting I get rolling on a solution to a bug a customer was running into. It was getting late in my afternoon, but I spun something up quick and pushed it up. When I woke up this morning, my branch was merged, the bug was fixed, the customer was notified. All was well!

Nothing too crazy to note there. One could say that our globally distributed team simply leveraged the clock. That's true, but something else happened in there as well.

When I looked at my PR the next morning, I saw some additions. While I was sleeping, 2 of my teammates made 8 additional commits. Nothing crazy to note there either, as this happens at Supabase all the time.

No branch is too precious

I've come to think that this is one of the most important parts of the engineering culture here. No branch is too precious for you to pull down and make commits on. No branch. Even if I've been the only person working on it, I know that someone could come in and contribute at any time.

Likewise, it's expected that I'll pick up anyone else's branch and make commits as I see fit. There's no system of convention here, no "I branched off your branch", no "lmk if you want me to take a look". There's none of that noise and clunk.

This sounds trivial and obvious, of course. I've made commits to other people's branches at previous workplaces many times before. But there's something different here, something more fundamental. This cultural openness-by-default has a knock-on effect.

In this culture, openness-by-default manifests as shared-responsibility-by-default. Shared responsibility that develops naturally in a small team is like a spark. Since there's almost never a delay in work, we're able to get a lot done.

It's worth looking at this in your engineering teams. If you find your team members branching off each others' branches, see if you can figure out why. See if you can get them to change. It's a tide very much worth turning.

Follow along →@saltcod