Back to The Journal

The Chat Box Took Longer Than the Backend

Alex Wilson5 min read
Eight paper wireframe sketches of one screen spread across a lamp-lit desk

On a Sunday afternoon I shipped a lab-results pipeline in a single commit. Upload a PDF from the lab, have it read and parsed, extract every marker, store them, chart them over time. Sixteen files. About twenty-five minutes from the previous commit.

The next morning I spent ninety-two minutes deciding where to put a chat box.

Eight commits, all touching the same file, all with the same subject in different clothes. Here is the actual log:

09:06  nav restructure
09:27  nav tweaks, persistent Ask, quick-log on dashboard
09:36  quick-jump link to the persistent Ask panel
09:50  Ask Claudia as a sub-tab sibling on data tabs (replace jump link)
10:09  Log tab = entry always on top, [Ask | Log] toggle below
10:19  restore Ask Claudia at the bottom of the Dashboard
10:33  Meds/Labs/Goals match the Log layout
10:38  all data tabs default to Ask Claudia

Note 09:36 adds a jump link and 09:50 rips it out. Note that 10:19 says restore, which means something I had removed an hour earlier turned out to be right after all.

I want to be clear that I don't think this was wasted time. I think it was the only part of the morning that required me.

One kind of problem has an answer in advance

The lab pipeline was fast because the answer existed before I started. PDFs have a structure. Markers have names and units and reference ranges. A time series has one obvious shape. Every decision in those sixteen files was already determined by the problem, and my job was to not get it wrong.

That is the kind of work that has quietly become close to free. Not free of judgment, but free of the grinding part: the part where you know exactly what you want and have to type it all out. A machine can hold a specification in its head better than I can, and it never gets bored on file nine of sixteen.

The chat box had no answer in advance. There is no spec for where the question box goes. There is only what it feels like to open the app on a Monday morning and want to ask something, and whether the thing you want is where your eye already is.

You cannot derive that. You can only look at it.

The tell is in the diff

The last version differs from an earlier one by a single operator.

At 09:50 the condition for showing the panel was nav !== "dashboard" && askActive. At 10:19 it became nav === "dashboard" || askActive. Same file, same component, two lines apart in meaning, ninety minutes apart in time.

If layout were a reasoning problem, I would have gotten there in one pass. It is not a reasoning problem. It is a seeing problem, and seeing requires the thing to exist first.

That is the whole mechanic. Each of those eight commits was not a decision. It was a prototype of a decision, built so I could stand in front of it and find out whether I liked it. The building was the cheap part. The standing in front of it was the work.

What actually changed

Here is the part I keep chewing on.

When building was expensive, we made layout decisions by argument. Meetings, mockups, wireframes, a senior person with strong opinions. All of it existed because building the wrong thing cost too much to risk, so we substituted prediction for observation. We tried to reason our way to the answer because we could not afford to look at it.

Prediction was never better than looking. It was just cheaper.

That ratio has flipped, and almost nobody has updated their process for it. Building eight versions of a screen now costs less than one meeting about which version to build. Which means design stops being a debate you win and becomes an experiment you run on yourself.

I did not choose the layout at 09:06 and defend it. I chose eight and let my eyes vote.

The work now looks like indecision

Scan that commit log cold and it reads badly. Eight commits, one file, no clear direction, one of them literally undoing an earlier one. Two lines changed here. Eighteen there. Next to it sits a single commit that shipped an entire subsystem.

Any metric you could build would rank the backend commit as the real work and the eight as noise. That is exactly backwards, and it is going to keep being backwards, because the human contribution has relocated into the small diffs.

The rest of that week has the same shape. Move the nightly sync from 8am to 7am. Drop a paragraph of setup instructions because it made the screen feel like a manual. Change the assistant's default tone to something warmer. Each one a few characters. Not one of them derivable from anything. All of them the difference between a thing you use and a thing you have.

The takeaway

When the machine can build any version of a thing in a few minutes, the scarce skill is no longer knowing how to build it, and it is not even knowing what to build. It is being able to stand in front of eight versions and feel which one is right.

That skill does not scale, does not automate, and does not show up well in a log. It is also the only part of that Sunday and Monday that would have gone differently if someone else had been sitting in the chair.

Cheap building did not make judgment less important. It removed every excuse for not exercising it.

Share: