Where the Code Stops

·9 min

The uninstall

Five months ago I published a post on this blog about a CLI I built in four days. It ended like this:

The result? A tool I actually use every day to manage my accounting.

It's not on my machine anymore. I deleted it at some point and I couldn't tell you when.

What bothers me isn't that I stopped using it. It's that stopping was never a decision I made. It went out the way a light goes out in a room you already left.

The other thing I shipped this year is on the App Store. Five euros ninety-nine. It's on my phone right now, second screen, in a folder I don't open. It has sold once.

So I went through my machine to see how bad it actually was. Not how it felt. The dates.

Seven projects, six months

February 12 to August 2.

What it wasDays aliveShipped
Twelve e-commerce ideas, business plans only33no
This blog20yes
A mobile app11yes
A training platform for someone close to me36no
A public procurement SaaS67no
A landing page for that same subject2no
The procurement product, rebuilt from scratch5no

One of them is a product a stranger can buy.

In March, four were open at the same time.

Twelve e-commerce ideas in thirty-three days is one idea every 2.75 days. Not one of them got built. They all stopped at the pitch deck, which is the step right before the one where I would have had to call somebody.

And one subject comes back three times in four months: three codebases, three business models, the same idea. Another comes back twice. Five of the seven aren't new projects at all. They're old projects with fresh scaffolding.

I don't abandon ideas. I reopen them in a clean repo, which from the inside feels like something completely different and isn't.

The big one

The longest one lasted sixty-seven days and started with two conversations.

A friend told me he'd spent two or three days putting together a single bid for a public contract. My brother subcontracts for a company that bids on these, and he'd like to bid himself. He tried once. It went nowhere.

Two people, two real problems, in the room on day zero. I never went back to either of them.

What I did instead was write this in a product doc:

The promise: answering a public tender should stay as simple as filling out a form.

Then I opened an editor. The first commit is called Initial commit from Create Next App. The second one, the next day, wires up authentication for four identity providers.

Day two. Four ways to sign in, zero users.

Sixty-seven days later: roughly 200,000 lines, 326 commits, 55 database tables, 27 business domains, 2,516 passing unit tests. An internal audit I ran on the thing calls the codebase "well above average." No TODOs. No @ts-ignore.

That same audit mentions, in a single line, that there is no billing layer. No payment code anywhere. Two months building a product for companies, and I had never written the part where a company pays.

It was never deployed. Nobody outside my machine ever opened it.

The one time it touched the ground

Near the end I ran a backtest. I took a public contract that had been awarded a year earlier, pushed it through the whole pipeline, and generated a complete bid for it.

Then I wrote myself a report on the result.

The bid my system produced would have been thrown out. Three blocking defects, and none of them had anything to do with writing quality. They were the kind of thing a human decides.

The bid that actually won that contract was worse than mine. It won anyway, because three companies bid on a segment where the median is two.

My own report says so, and I keep coming back to this line:

None of these factors is the formal quality of the bid.

And to this one:

Our rule "never file a reservation, ever" is absolute, and it has never once been tested against reality.

Two months optimizing a bar that nobody in that market was measuring. An afternoon of phone calls would have told me. I had the numbers. One of them is my brother's.

He had offered me a different plan months earlier: forget the software, be the assistant yourself. Take the contract, write the bid by hand, get paid per file or on the win. It needed zero lines of code.

I kept coding.

The wall is always in the same place

Here's what I finally noticed, and it's why I'm writing this instead of starting project number eight.

When the platform died I figured I had maybe 20% left. I've said that about almost everything I've built. So this time I went and looked at what the last 20% actually contained.

There was no code in it.

It was: call my brother. Show it to my friend. Pick a price. Deploy it somewhere real. Answer the first person who uses it. Decide it's finished and say so out loud.

Every one of those is something I have to start on my own, with no ticket, no error message, and no way to check afterwards whether I did it right.

That isn't a problem with projects. It's a wall, and it stands in the same spot every single time, on the line where writing code stops and everything else begins.

I can build anything. I can't begin anything that isn't building.

It isn't only about repos, either. There are things in my life that have been sitting at zero percent for months, and lined up next to each other they all have the same shape. They need me to start something that isn't construction.

The exception

One project crossed the line. The mobile app. Eleven days, still live.

Why that one?

Because the App Store is the only task outside of code I have ever faced that was both mandatory and procedural. I couldn't publish without doing it, and it told me exactly what to do, step by step, with a checklist and a reviewer at the end.

So I did it.

And then I stopped at the exact point where the work outside of code went back to being optional. No updates, no second version, code frozen for four and a half months. One sale, which I have never once tried to turn into two.

I'm not incapable of doing work that isn't code. I'm incapable of starting it. Hand me a form and a deadline and I'll fill it in. Leave it up to me and it won't happen.

What the AI actually did

I have to be careful here, because the easy version of this paragraph is a lie.

AI didn't make me build the wrong thing. I was building the wrong thing long before there was an agent in my terminal.

What it did is narrower than that, and worse. It's a machine for starting. It takes away almost the entire cost of beginning. It takes away very little from the cost of finishing: deploying, pricing, support, the first user, the decision to stop. It takes away nothing at all from the cost of keeping something alive.

Which makes it an accelerator bolted onto the one thing I already did far too easily.

Two hundred thousand lines in sixty-seven days, alone, is not something to be proud of. Building used to be expensive enough that the cost itself forced the question: am I sure about this? At that speed the question never gets forced. Every day produces evidence of progress and none of it is evidence of value. I had 2,516 passing tests and zero bids submitted.

There's a second effect I feel constantly now. Everything looks buildable, so nothing gets ruled out. I open twelve directions and close none of them. And when I quit, the reason is almost always the same sentence: this already exists, and better.

You can't answer that one from a chair. Only a user answers it, and I keep not asking one.

I also had no expertise in public procurement. None. I assumed enough documentation would stand in for it. My own backtest is the proof that it doesn't. The winning bid was full of defects and won regardless, for reasons no document encodes.

Where I actually am

The platform is dead. The rebuild is dead too. Five days, forty commits, never pushed to a remote. It doesn't exist anywhere but here.

I had a good name for it. I'm keeping the name.

I don't have a conclusion, and that's the honest part. I know where the wall is now, which is more than I knew in June, and knowing where a wall stands has never once been the same thing as getting over it.

The version of me who wrote the last post on this blog thought the problem was speed, and solved it. The tool from that post is deleted. So I'd rather not close this one with a rule I'll have broken by September.

What I'd like to know, from anyone who has crossed this, is what it took. Not the productivity system. The specific thing that made you pick up the phone the first time.