Saying Yes All Day Is A Different Job From Writing Code

by Serguey Shinder

The defect was a date range that included the first day of the following month, so a monthly report double counted for about a day and a half before a customer queried it. Four lines of code. When I went looking for who had written them the answer turned out to be complicated, because the lines had been suggested and accepted whole, at twenty to five on a Thursday, and the engineer whose name is on the commit could not remember reading them.

That is not an accusation. I did the same thing twice that week and I know what time it was.

We had editor telemetry, switched on a year earlier for a completely different reason, and it let me compare suggestions accepted unchanged against suggestions edited before they went in. In the morning a bit over a third went in untouched. After about three in the afternoon it was closer to two thirds, and the climb was gradual rather than a cliff. The defects we could later trace back to generated code were not spread evenly across the day either, which I expected and still did not enjoy seeing.

The mechanism is not that people become careless. It is that we quietly swapped a producing job for an inspecting one, and those two jobs fail in opposite directions. Producing fails loudly: you do not know what to type, and the not knowing is itself the signal. Inspecting fails silently, because the failure mode of inspection is agreement. A plausible thing arrives, you have already seen forty plausible things, thirty eight of them were fine, and saying yes is faster and correct most of the time. Every trade that has ever paid people to watch for rare faults has found the same curve, and not one of them fixed it by asking staff to concentrate harder.

So we treated it as a question about shifts rather than discipline. Generated code is no longer considered reviewed because the author accepted it, and wherever the change can wait, a second person reads it the following morning. We stopped doing that work in long unbroken stretches. And a change touching dates, money or permissions cannot be accepted on the day it is written: it waits overnight and is read by somebody who was not in the session that produced it.

None of this is an argument for going back to typing everything. Our two juniors ship more than I did at their stage and they are not worse engineers for it.

What changed is how I read a working day. Any task that consists of saying yes or no to a stream of convincing things declines in quality through the afternoon, the person doing it has no way to feel that happening, and the only place the decline is visible is in what got approved after four o'clock.

– Serguey Asael Shinder

Leave a Reply