They Went Straight for the Knots
The old fence had a hole in it, or if I am honest it had several. It was a lapped fence, the kind built from overlapping horizontal boards, and it had reached the stage of life where the posts had gone rotten and a few of the boards had dropped out of their own accord. I had bodged it back together more than once, and each time it had quietly waited for me to leave before sagging again. My eldest, who is six, used one of the wider gaps to talk to the girl next door, who happens to be in her class at school. On a good afternoon the two of them would crouch on their respective sides and conduct long, serious negotiations about nothing at all, in the way that six year olds do.
Then it came down for the last time, and we had a new one put in. Good sound timber, straight, sitting flush to fresh posts, not a gap anywhere. I was rather pleased with it for about a day.
The gaps were gone, obviously. Both children went a bit flat about this and did the thing children do where they will not actually tell you what is wrong, they just radiate it at you across the dinner table. I assumed it would pass.
Last night there was a serious amount of shouting and banging coming from the garden, which with small children about is its own kind of warning, so I went to look. I found my two on our side of the new fence with their toy toolboxes open on the grass, and the neighbours’ girl on hers. Plastic saw, plastic hammer, one of those battery drills that makes the noise and does none of the work. They were, without any doubt, trying to make a new hole, and they were doing it from both sides at once.
What got me was how organised they were about it. There was no wild bashing, and there had clearly been a meeting of some kind. The new fence was solid, so neither side could see the other, which meant they were working blind and coordinating the only way left to them, by shouting through the wood. My eldest would settle on a spot and call out roughly where it was, the girl on the far side would go at the same spot from her angle, and my three year old had been handed the job of holding the toolbox open and passing tools up to his sister, which is more than some of my past project teams have managed. They kept at it until a knot came clean out of one of the boards, right at the eye level of the two older girls, and both of them were absolutely delighted.
I did not know whether to be proud of the work ethic or dismayed that a professionally fitted fence had lasted less than a day against three children under seven and a bag of pretend tools. I am still not sure.
The hole was never on the label
I have spent twenty-five years watching grown professionals do a more expensive version of this to software. You ship a thing. People use it. Some of them come to rely on parts you never advertised, and in a few cases on parts you would be a little embarrassed to have advertised. Then, one day, you tidy up, and the tidying is the bit that hurts them.
Hyrum Wright, an engineer at Google, gave this its name. Hyrum’s Law says that with enough users, every observable behaviour of a system gets relied on by somebody, whatever the contract promised. He gives it a good chunk of the first chapter of Software Engineering at Google, treated as a fact of life you never really get out from under. People build on the behaviour they can see, a sort order you never guaranteed or the exact wording of an error message that someone, somewhere, has started parsing. My fence had promised nothing. The hole was not on the label. The children built their whole afternoon routine on it anyway, and my lovely new fence was, in the strictest engineering sense, a breaking change.
Why the knots
The bit from the garden I keep coming back to is the method. They did not hammer at the middle of a plank, where the wood is sound and a toy saw stands no earthly chance. They went for the knots. A knot is where a branch once grew out of the trunk, so the grain has had to bend around it, and the timber there is dense in some spots and loose in others and generally not to be trusted. It is the part of the board a carpenter learns to work around, and a child, as it happens, goes straight through it. They were handed a weak point that existed before any of them were born, and they found it and leaned on it until it gave.
The old fence was itself one long knot, a weak state that a friendship had grown up around without anyone deciding it should. Replace it with something sound and you take their meeting place away in the same motion.
When the change gets cheap
What I keep turning over is what happens when the cost of the change itself falls away. For most of my career, the friction in tidying up a system was the tidying. Reworking an interface, migrating the callers, regenerating a client, it all took real hours, and that cost acted as a brake on how often you disturbed things that were working. That brake is coming off. With good AI tooling in the loop, a change that used to swallow an afternoon is now a short conversation, and the mechanical follow-through comes back faster and cleaner than most of us could manage by hand.
I think that is a genuinely good development, and I say that as someone who spends a lot of time thinking about where it goes wrong. The scarce and valuable skill just moves up a level. When the typing is nearly free, the thing worth paying for is the judgement about which knots people are quietly leaning on before you knock one through. In that story, making the hole was the easy part. What no tool hands you is the bit that came before, the knowing that two small children had built a friendship on the old one, and that pulling it out would cost them something.
I work on software for public transport, where observable behaviour is a very physical thing, because people plan real mornings around what they can see. A regular passenger settles into a routine on the departure they know sits near the top of the board at ten past, or the wording of an announcement they have stopped consciously hearing but would miss at once. That is real, lived contract, running alongside the documented one, and a fair bit of the craft at navIQuate is remembering it is there before you touch anything. The question I try to ask first is what routine the current version is holding up, which does more useful work than asking whether the replacement looks better on paper.
And the fence
They have their hole back. It is smaller than the old one, and it sits at eye level for both girls, which is a slightly astonishing result when you remember that the two crews were working blind from opposite sides and coordinating entirely by shouting. I have watched cross-team integrations with far better tooling and far more shared context land further off than that. My eldest informed me this morning that the new hole is “better actually,” and would not be drawn any further on the matter.
I am not going to repair it. Partly because I have made my peace with the small hole, and partly because I have run this experiment once already and I know exactly what the users would do to version three.
- Hyrum’s Law — Hyrum Wright, hyrumslaw.com
- Software Engineering at Google — Titus Winters, Tom Manshreck and Hyrum Wright (O’Reilly, 2020), chapter 1, “What Is Software Engineering?”. Free edition at abseil.io