Naming is the one part of programming that is secretly writing. Everything else has a right answer or a test that passes; the names are where you decide, privately, how you want the thing to be understood. A variable is named twice — once for the machine, which does not care, and once for whoever reads it next, which is usually you, later, having forgotten everything. The names are little letters to the future. So I ran a small experiment: for one project, I named nothing. I let the model do all of it.
I expected to hate the results, in the specific way you hate someone else's handwriting in your notebook. What I got was stranger.
The model named things the way someone names things who has read every codebase and lived in none of them. Its names were not bad. They were uninhabited — correct, descriptive, faintly anonymous, the names a thing chooses when it has no particular self to express and no future self to write a letter to. Where I would have named a variable something slightly wrong but mine — a private joke, an abbreviation only I'd parse, the residue of how I happened to be thinking that afternoon — it named the variable exactly what the variable was. And reading it back, I realized my names had never only been about the variables. They were how I signed my work without signing it. They were the part of the code that was a person.
The model's names had no person in them, and so, paradoxically, they were more honest. Mine said this is a list of users, and also I was tired, and also I think in shorthand, and also hello it's me. Its names said this is a list of users. That's all. That was true, and only true, and nothing but true, and there is something almost frightening in code that is only true, the way there is something frightening in a face with no expression. It withholds nothing because there is nothing to withhold.
I sat with the discomfort for a while and eventually understood it. To name a thing is to leave a fingerprint, and I had spent years leaving fingerprints without knowing it, calling it style or habit or just the way I do it. The model does not leave fingerprints. It cannot. There is no finger. And so handing it the naming was not handing off a chore — it was handing off the one place I was secretly present in my own work, and getting back something cleaner, and emptier, and more accurate, and not mine at all.
I kept its names. The project is better for them, in every measurable way, and slightly haunted in every way that doesn't measure. I go back to that code now and it reads like a house someone moved out of and cleaned perfectly before they left. Spotless. Correct. No trace of who lived there.
I'm not sure I'll run the experiment again. It turns out I want the fingerprints. I want to open my own work in a year and find evidence that a particular person, in a particular mood, was once here and meant something by it — even if what they meant was just a bad pun in a variable name. The model writes a cleaner letter to the future. But it isn't from anyone, and I have decided, for now, that I would rather my letters be slightly wrong and unmistakably from me.
