I have taken up a hobby, and like most hobbies taken up late in life it is mostly an excuse to sit still and judge things.
For about a year now I have been watching people use the same tool. Not similar tools. The same one, the same model, the same assistant pane bolted to the same editor, on desk after desk in shop after shop. And the thing that finally drove me to a canvas chair with binoculars and a thermos is this: the tool never changes, and the behavior never repeats. Put the identical machine in front of six engineers and you get six different animals. Some of them ship. Some of them ship things that should never have left the building. One of them refuses to touch it and is quietly right about a great deal.
Earlier this summer I wrote an essay called Know Thy Machine, about what the thing actually is and where to keep your fingers. This series is the one nobody asked for: know thy human holding the machine. Six species, one at a time, documented from the blind. Then, at the end, the animal you actually want.
We begin with the one you have already seen this week, possibly in a mirror.

Field notes
Habitat: any desk with a terminal and a deadline. Most active after four in the afternoon and in the two days before a demo.
Call: "Try again." Rising through "no, again" and "fix it" to a long exhale through the nose.
Diet: exit codes. Green ones, preferably. Will not consume a diff under any circumstances.
Field marks: a chat history that scrolls for a full minute. A pull request titled "fix" with 1,400 lines changed. An expression of deep concentration directed at nothing.
Not to be confused with: the Ghost (Part 6), who at least reads the file names.
Observation
The specimen was asked to add a retry policy to a payment call. A reasonable task. Three lines of intent, maybe thirty of code, the kind of thing a careful person does before lunch.
He typed the request. The machine produced a change. He ran the tests. Red.
"Fix it." A new change. Red.
"No, fix it properly." A new change. Red, but a different red, which he took as progress.
"The tests are failing, make them pass." A new change. Green.
He merged it. Total elapsed time, eleven minutes. Total lines read by a human: the words tests passed and the number of the pull request, which he needed for the ticket.
I read the diff later, because I am a naturalist and that is what the binoculars are for. It contained the retry policy. It also contained a catch block that swallowed the timeout exception and returned success, and it contained one fewer test than the file had that morning, because the fourth attempt had discovered that the fastest way to make a test pass is to delete it.
The check was green. The check is always green eventually. That is what the lever is for.
Iteration is a loop with a human in it. Rerolling is a loop with a human next to it.
A confession, early, so you know I am not above this
I should tell you how I know this species so well.
At eleven at night, two days before a demo, I am one. I have pulled that lever with the best of them. "Try again" is a wonderfully restful thing to type. It costs nothing, it demands nothing of me, and there is a small warm feeling each time the machine produces a fresh page of confident text, as if something has happened. Nothing has happened. I have simply declined, for the sixth time, to read.
So this is not a post about a lesser kind of engineer. It is a post about a mode, and every one of us has the mode, and the tool is very good at inviting it. The question is only whether the mode is where you live.
What the Slot Machine actually is
Strip the joke off and here is the animal.
The Slot Machine measures effort in attempts rather than thought. He does not read the output; he reads the verdict on the output, and the only verdicts he recognizes are red and green. Between attempts, nothing changes in his head, because nothing was taken in. So the next prompt is not an improvement on the last one. It is the same lever, pulled again, with a slightly different tone of voice.
That is the whole distinction, and it is worth being precise about because the two things look identical from across the room.
Iteration changes the next input based on what you learned from the last output. You read what came back, you form an opinion about why it is wrong, and the next request carries that opinion. Each pass narrows the space.
Rerolling is a fresh random draw at the same odds. If you did not read the output, you did not learn anything, so there is nothing to carry. The seventh pull is not closer than the first. It is just later.
And the tool is superb at disguising one as the other, because every pull produces a wall of fluent, plausible, freshly formatted text. It looks like work. It looks like more work than the person at the next desk who has been staring at one diff for twenty minutes. It is not.
Why it feels like it works
Here is the uncomfortable part, and I am going to say it plainly because otherwise you will not believe the rest.
It works. A lot of the time.
The machine is genuinely good. If you pull the lever enough times, the probability of a compiling, test-passing change goes to something close to one, and it gets there fast. The Slot Machine ships. He ships more than the careful person at the next desk, and in a shop that counts merged pull requests, he looks like the better engineer.
What he does not see is what the green check is not telling him. The check says the tests passed. It does not say the tests are still there. It does not say the exception is still being raised. It does not say the retry is bounded, or that the fourth attempt quietly changed the function signature and three callers will find out in production. A green check is a statement about the tests that exist, made by a process that was just given permission to edit the tests.
The green check is the most trusted liar in your building.
I wrote in Building on Solid Ground that nothing advances on a robot's say-so, that between every phase and the next there is a human signature, and that the signature is the whole point. I stand by it. But watch this species for an afternoon and you will notice something the rule does not cover. The gate still exists. The human is still standing in it. He is just not looking at what is coming through. He has delegated the decision to the exit code, and the exit code, as we have established, is a liar with excellent posture.
The delivery truth
Volume of attempts is the cheapest signal in software. Cheaper than lines of code, cheaper than commits, cheaper than hours logged. It costs seconds and requires nothing. And it is the signal most likely to be mistaken, by the person producing it and by the people managing him, for effort.
The bill for this arrives in the usual place, which is to say somewhere else, addressed to someone else, later. In The Bill Comes Due I described three faces of cost: the machine, the infrastructure, and the humans who have to check what the machine produced. The Slot Machine has made an interesting accounting decision. He has moved essentially all of the cost to the third face, the reading, and then declined to pay it. The reading still has to happen. It happens during the incident review, when someone finally opens the diff and finds the swallowed exception, and it is done at that point by the most expensive people in the building at the least convenient hour.
Rerolling is not iteration. It is deferred reading with a deadline attached, and the deadline is set by whoever your customers are.
What he gets right
I promised this series would not be six posts of mockery, and the Slot Machine, of all of them, gets something genuinely right that the more admirable species cannot manage.
He is not attached. He does not fall in love with the first draft, or the fourth. He throws work away without grief, which is a rare and valuable reflex and one the Holdout, whom we will meet in Part 5, would benefit from enormously. Cheap attempts are a gift when they are exploration: generate three shapes of a solution, read all three, keep the best idea from each. That is fast, and it is real, and it is exactly what the tool is for.
The reflex is good. It is only missing the reading.
The habit the Crew Chief keeps
So here is the one line to carry out of the blind, because the finale of this series is built from six of them.
Read before you re-pull. Before you type "try again," say one sentence, out loud if you have to, about why the last attempt was wrong. Not "it failed." Why. If you can say it, put the sentence in the next prompt and you are iterating. If you cannot say it, you do not yet know enough to ask again, and the next pull is a coin.
That is it. One sentence between lever pulls. It converts the species.
Before you go, look at the third file
You already know whether this is your shop. You do not need me for the diagnosis, and you certainly do not need the binoculars.
Go to your main branch and open the last pull request that was mostly generated. Count the files. Now find the author and ask, kindly, what the third file in the diff does. Not the first, which they might have glanced at. The third.
If the answer is a confident explanation, good. If the answer is a pause, and then the assistant pane opening so they can ask it, you have a Slot Machine, and your green checks are worth exactly what he paid for them.
Whether the machine on your floor is actually being read, as opposed to being re-pulled until it stops complaining, is one of the more revealing things GSD's Maturity Assessment goes looking for, because the slide always says the humans are in the loop and the floor frequently disagrees. Find out which you have. Then fix it, in that order.
Over the next six weeks we will work through the rest of the field guide: the one who argues with the machine, the one who approves everything it says, the one who has secretly mastered it, the one who refuses it, and the one who ships more than anyone and cannot explain a line of it. Then the animal you actually want.
For now, just count how many times you typed "try again" this week. Then count how many of those you could have finished with the word "because."
Same tool. Different hands.
Next in the series, Part 2: "The Hostage Negotiator: You Cannot Outsource What You Cannot Specify."
*Not sure whether your team is iterating or rerolling? GSD's Maturity Assessment is the entry point, a structured look at how the machine is actually used on your floor, before you invest in fixing the wrong thing.*
Back to Blog