We Added A Setting Every Time Two People Disagreed

by Serguey Shinder

By the spring of 2023 the administration screen for our warehouse system had a hundred and forty three settings on it. I know the number because a customer rang about pallets being allocated to the wrong bay, and it took two of us four days to reproduce. When we finally did, it needed three particular settings in one particular combination that, as far as we could establish, exactly one customer in the world had.

Afterwards I went through all of them. For each setting I looked at what every customer actually had it set to, and then at the ticket that had introduced it.

Sixty one had never been changed from their default by anybody. Twenty three had been changed by a single customer. The tickets were more interesting than the numbers. Again and again a setting had been born in a meeting where two sensible people disagreed about how the system should behave, whether a part picked order should hold its bay or release it, say, and somebody, usually me, had said we could make it configurable. It ended the argument in under a minute and everybody left happy.

What it actually did was postpone the argument indefinitely and send it to the customer, who had not been in the room, did not know the question existed, and in most cases never found the screen. It also did something we did not count at the time. Every yes or no setting doubles the number of systems you are shipping. A hundred and forty three of them is not a product with options. It is more combinations than anybody could test in the lifetime of the company, of which we tested one, the defaults, and the customer with the pallet problem was running a different one.

The code carried the same history. Nine settings were read in the allocation routine alone, each an if statement wrapped around a slightly different idea of how the business worked, and nobody changed that routine without asking me first, which is its own kind of failure.

We removed the sixty one. It took a month and prompted no complaints at all. For the twenty three we rang each customer and asked why they had changed it, and for fourteen of them nobody there knew, so those went too. A new setting now needs one sentence in the ticket naming the real customer who needs the other behaviour and explaining why the two cannot share one. Most proposals do not survive the sentence, and the conversation that follows is the one we should have had the first time.

A setting feels like generosity towards the customer and like tact inside the meeting. Most of ours were neither. They were decisions we could not bring ourselves to make, written into the product in a form that meant we never had to.

– Serguey Asael Shinder

Leave a Reply