Bacalhau à Brás is, on paper, one of the simplest dishes in Portuguese cooking. Shredded salt cod, thin-fried potato sticks, onion, eggs, some parsley, and black olives on top. Five or six ingredients, no exotic technique, nothing that requires special equipment: you could hand the ingredient list to almost anyone and they would recognize every item on it.
And yet a bad Bacalhau à Brás and a good Bacalhau à Brás can come from the exact same list, cooked by two different hands, and taste like entirely different dishes. The recipe tells you what goes in, but it does not tell you the thing that actually matters: when to pull the pan off the heat, how gently to fold the eggs through the potato and cod so they turn creamy rather than curdle into scrambled egg, how thirty seconds too long ruins the whole plate. None of that is written down anywhere, because none of it can be: you learn it by ruining a few tries, by watching someone who already knows (maybe your mother, as I did with mine), by developing a sense for a texture that no recipe can fully describe in words.
The gap between the instruction and the result
I caught myself thinking about Bacalhau à Brás for a reason that has nothing to do with cooking, or maybe has everything to do with it, depending on how I look at it. Partly, maybe, because finding the right ingredients, especially the cod itself, is not the easiest thing in Charlotte, NC, where most of what I find in a regular supermarket is frozen and not quite right. I eventually found good cod at a Brazilian supermarket, of all places. It is imported from Brazil; Brazil imports it from Portugal; and Portugal gets it from Norway. A small, slightly absurd supply chain that somehow still tastes like home, though that is not really the point here.
The point is closer to this: cooking Bacalhau à Brás is not so different from writing a prompt for an AI coding tool. A prompt is, in a very real sense, a recipe. It lists ingredients: the requirements, the constraints, the shape of what you want. It does not, and cannot, specify the innumerable small judgments that separate a plausible result from a correct one, when exactly to fold, how to tell creamy from curdled, which the recipe assumes you already know how to see.
This is, I think, the actual distinction between programming as a skill and software engineering as a discipline, the one I keep returning to in my writings and in many discussions. Programming, like following the ingredient list, can increasingly be handed to a model that has read a great number of recipes. Software engineering, like knowing the exact moment to pull the pan off the heat, is judgment: knowing what a correct result should look and feel like, recognizing when something has gone subtly wrong even though every listed step was followed, trusting your own sense of the texture over the reassurance that the instructions were technically obeyed.
A model can generate a very good-looking Bacalhau à Brás from a prompt. It can also generate one that looks identical and tastes like scrambled eggs with cod in it, and there is no line in the prompt that would have told you which one you were going to get. The failure, when it happens, does not look like a failure, but like a plate of Bacalhau à Brás.
What the recipe cannot teach
I did not learn to make this dish from a cookbook, not really. I learned it the way most Portuguese cooks learn most things, by watching someone stir the pan a little longer than felt necessary, by being told “not yet” three times before finally “now”, by ruining it myself more than once before the timing became something I could feel rather than count. The recipe was always available, but it was never what mattered.
I think this is the uncomfortable lesson underneath a lot of what we see about AI and software engineering lately. The tools that generate code are, in a sense, extremely good at recipes. They have read more of them than any single cook ever could. What they cannot give you is the folded-egg judgment, the sense of when something that looks technically correct has quietly gone wrong. That still must be learned the old way, by ruining a few batches, by watching someone who already has the sense for it (thanks Mom), by developing a feel for correctness that no specification can fully write down.
The recipe was never the hard part, in the kitchen or anywhere else. It never is!