Mohammed Hussain

Life

7

m

The fall isn’t free

On bouldering, ADRs, and a bet that didn't cash in.

I've been bouldering a lot recently. The first time I went, I knew I'd be hooked — and lo and behold, here I am four months later with my own shoes and chalk bag, climbing three times a week with constantly sore forearms.

But one thing I've only recently started doing is filming myself sending these boulders. It's interesting to watch back; I've never seen myself climb before. And I regret to inform you that it's not exactly a pretty sight. Legs cutting loose, arms bent, hips flailing all over the wall. But the point is, I finish the route, match the top, jump down and swagger back towards the camera, smug smile on my face. Then I watch the footage back, recoil in horror at the mess I made of it, and become determined to clean up the beta.

And so I hit the route again, this time taking a moment to read it, keeping my body under the hold, placing my feet more deliberately. After a few attempts, the footage paints a beautiful picture. Me, climbing the route with grace and poise.

It's an odd parallel to draw, but it's got me thinking about my own approach to software engineering right now. I'll admit I'm naïve: I haven't spent much time in the software industry, and as a result I have little sense of what good looks like, particularly in software design. But what I like to think I do understand is what makes a product feel great to use.

So naturally I prioritise shipping things that achieve the latter. A notebook experience that resonates with a data analyst and gets them value from the product. I'm scrambling up the wall and flashing the V3, walking away with a smile on my face, having achieved something. But watch it back and it's messy: I stall in the middle for a second, my fingers are sweating like crazy, and I'm throwing myself at the next hold just to get it over with.

Then up goes Nik, calm and rather delicate, moving with ease and matching the top of the route. He looks over at me, breathing normally, not a drop of sweat on him. 'Yeah, that wasn't too bad, was it.'

Bastard.

A send is a send

There's a symbiotic relationship here — AI has made the code free. It gives me the beta, so I can throw myself up the wall, achieve what I set out to do, and give the spectators a good show. Which means I can get the feature out and make it do what the user needs it to do.

Nik follows suit, coming in to clean up the code and bring it in line with our codebase patterns. See, I used to believe this made me a shoddy engineer — that, mixed with the intense imposter syndrome — but I've learnt why it isn't the case.

This loop works: it's fast and it's effective. The cost of attempting these features is low, and the opportunity to learn grows with volume. Every cleanup becomes part of my muscle memory. I'm placing my feet better than I did four months ago, keeping my weight under the hold instead of off to the side of it. The ugly send isn't a replacement for learning technique; it's how I'm learning it.

But what it hasn't done is make the fall any less scary.

The walls got taller

Since I joined, what we've built has matured into something deeper and more versatile, sitting on stronger primitives. We've still got a long way to go to reach feature parity with the incumbents, but one thing we can all appreciate is how quickly this industry moves — how the market pushes and pulls, almost throwing you off balance at times.

So while flashing these V3s is still cheap, we're finding that over the last few months the walls have got taller. The moves are still V3 (I'm a certified V3 climber, so no sweat), but the fear of falling is growing.

At the gym, I hit a climb, fall off, take my shoes off, sit around yapping, then go again. It can take a few goes, but it gets done — and crucially, each time I come crashing off the wall I take something from it, be it watering down my fear or understanding a move better.

But now we're starting to climb highballs, where a fall isn't just scary, it's potentially damaging. And the time it takes to go again is much longer — we're spending weeks on a single problem. In our case, a fall costs us a customer. Or worse — for a small team in a space where everyone and their dog is building a data agent — the company.

AI has made the climbing free, but it's done nothing for the fall. And there's a gnarly second-order effect: the cost of building used to be the thing that made you second-guess the starting move of a V7. Now every route in the gym looks climbable — in part because it is.

This has happened for a few reasons, and not just AI making the engineering free. The wall has got taller on its own: we're growing, serving more customers, facing more competition and feeling the pressure of having something to lose.

We found this out the hard way earlier this year.

We read the route and fell anyway

We made a big bet: opening our product up. Self-serve signups, plans and limits, billing, sales touchpoints — the whole thing.

We didn't flash it. We studied every move from the ground, with a proper shape and a hypothesis about what the payoff would be. We even went so far as to include a line in our risks that read: 'one big fuck-up could kill this company'.

After trudging our way up the face, we found it didn't do what we'd hoped.

Yes, we're getting signups, but conversion is low — is that because we were going after a product-assisted sales motion, because our onboarding UX just didn't hit the mark, or because we shouldn't have built this in the first place?

I've gone back and forth on what the lesson is. I don't think it's that we failed to read the route well enough, because we read it. I'm more inclined to believe free code is why the wall looked climbable at all. A year ago, a shape this size wouldn't have been within reach of a five-person team; the cost would have trimmed it long before we started. Shape Up calls that appetite, the amount of time we're willing to spend building the solution. So we built this because we could. Not necessarily because we should have.

Should we even be on this wall

Fixing this doesn't come from scrutinising the wall any harder. We did that, and yet here we are, sat on the crash mat looking up at it. It comes down to whether we should have walked up to the wall at all.

That gate already existed, and it ran, and it still let this one through, but there was nothing there guarding the layer underneath. So we're now adopting ADRs as a prerequisite for any code that changes the codebase in a significant way.

In July, Nik wrote the first ADR in the repo. It's a document about documents, and the bouldering lingo maps onto it nicely:

both of these changes must have an ADR merged into main BEFORE any $ is spent on tokens … the developer can do whatever the fuck they want until the entire shape is downhill … LLM authoring of ADRs is NOT PERMITTED.

Before we spend any money on tokens: before we get on the wall. Until the shape is downhill: until you can see every move from the ground. LLMs don't write ADRs: AI gives you the beta — it doesn't read the route for you.

All of this, backed by a CI check that requires every engineer's sign-off, makes for a happier, healthier way to modify our codebase and to make bets on significant changes.

It feels strange, moving slower and more deliberately. Reading from the ground doesn't come naturally to me; I want to get on the wall. My fingers are sweating just thinking about it.

I should be honest about what this actually fixes. The ADR is a gate on the how. It stops us burning three weeks of tokens climbing something badly, but does nothing about whether we should have been stood under the thing in the first place. That's still a shape — and free code is in our ear the whole time, lying about what we can afford to build. Shapes don't come with CI.

The fear is information

I'm still sending ugly at the gym. I don't expect that to stop any time soon. It's how I've got this far — and the mats are right there to catch me when I do inevitably fall.

What has changed, however, is how I use my fear. Four months ago I was scared of everything — and it made me climb worse: rushing, sweating, lunging just to get it over with. Now I've been up enough walls to tell the difference. Some of that fear is just unfamiliarity, and the answer is to jump. Some of it is the wall telling you the fall isn't free, and the answer is to get down, read it properly, and come back.

-msh

Written by