Trustworthy Reification
Not all meals created from the same recipe are equally delicious. Not all programs that accurately sort a list are equally useful. High-level specifications, such as a recipe or a prompt, are only practical because I trust the chef or engineer to execute them in a way that aligns with my values and context.
1 Some vignettes
A few weeks ago, I started at Topos as a postdoc. For the next while I’ll be working with David under a grant called The Structure and Dynamics of Working Language. The mystery at hand is how an abstract specification compiles into a tangible reality. For example, how a high-level recipe for pie turns into a literal pie. One that is created with particular eggs and apples by a particular person who rolls the rolling pin in a particular way. That language really works — in other words, that it is sufficiently useful that its practitioners carry it forward — hinges on a mutual relationship of trust and adaptability between the one who outlines the abstraction (the specifier) and the one who executes it (the reifier). Below is a series of vignettes that elaborate this theme.
1.1 Peanut butter and jelly sandwich
When I was in 5th grade, Mrs. Parker told us to write the instructions for making a peanut butter and jelly sandwich. She then set about constructing sandwiches based on our instructions, but at every step she deliberately misinterpreted any ambiguity in the instructions. For example, if I wrote “put the pieces of bread together”, then she would put them together with the peanut butter and jelly facing outwards. The results were absurd and hilarious for her audience of 10 year olds. This exercise is a classic introduction to computer science for kids. The lesson is that computers — unlike people — don’t have the shared context or capacity to reasonably interpret ambiguous instructions. Hence, giving instructions to a computer requires a much more rigorous level of precision than giving instructions to a fellow human.
1.2 Hiring a professional
Now that I’m back at work, my baby is looked after by a wonderful caregive rather than one of her parents. Imagine if I gave our caregiver hyper specific instructions:
Put on her left sock, then put on her right sock, then read her Dinosaur Dance. When you get to page three, point to the wings on the Pterodactyl and say “those are its wings!”.
Not only would that be absurd, but it would also make for a terrible working relationship and poor care that doesn’t respond to my kiddo’s actual needs and moods. Instead I share my high-level hopes and expectations (keep my baby safe, be attentive, and support her independence), and then trust our caregiver to translate those into a specific reality (the low-level details of how she interacts with and makes decisions regarding my child). I imagine a similar story with hiring an interior decorator. In the hiring process, I select someone who’s designed spaces that I admire and who shares or at least understands my taste. I give a brief (the requirements, goals, and preferences for the space), but ultimately I trust that they will honor my aesthetics in carrying out the vision. In both of these examples, it’s critical that both trusting the professional and honoring the client is responsive rather than blind. I don’t want to work with someone who blindly honors my preferences even if they think they won’t lead to a healthy baby or usable space. I’ve hired an expert because I want their expertise! Conversely, I don’t want to blindly trust that expertise. Since the expert isn’t me, we may discover missing shared context that we need to flesh out.
1.3 Pass the salt
One of David’s canonical examples of working language goes like this:
When I say ‘pass the salt’, 10^{20} atoms including your arm and a salt shaker move through space, resulting in some sodium chloride crystals arriving in my bowl of soup. It is as though language transmits momentum: it makes objects move.
Language works in the sense of physics but also works in the sense of social expectations. “Pass the salt” doesn’t specify precisely where the salt should land, and it wouldn’t work if an utterance of “pass the salt” usually caused salt to end up in my hair or on my lap. I trust that the reifier (you, and notably not an alien or optimal opponent) compiles the language into physics that aligns with my implicit expectations and our shared context in addition to the letter of the request. The semantics of “pass the salt” is deeply rooted in the existing social and physical dynamics of the world.
1.4 Policies
At Topos we have a Flexible Work Policy which says, “The underlying principle of this policy is that we expect a commitment to working together in the office, but are not dogmatic about it and the work comes first.” It gives some specific expectations regarding general working hours and office presence, but it is fairly abstract and outlines the purpose of each expectation rather than establishing hard and fast rules. This level of abstraction is reflected in how I account for my time at Topos. I let my manager and colleagues know when I’ll be out of the office for a vacation, but I don’t punch a timecard. All of this language works at Topos because of the high levels of trust between the policy-makers and the policy-reifiers. Topos trusts that I understand the spirit of the policy. I trust that Topos policies will be responsive to my particular situation. Topos trusts me to honor the mission of the organization and to do the work towards it. I trust that Topos is not self-serving at the cost of my own well-being. In systems where there is less trust both given to the workers and earned by the organization, the accounting systems and the policies are more specific. Runners at an Amazon warehouse are expected to account for their minutes rather than for their days as I do at Topos.
2 Reification and technology
Trustworthy reification is particularly salient at this moment in technological history, because the lesson that I learned in fifth grade about giving computers specific instructions is no longer true. I can give ChatGPT a vague prompt like “Write an algorithm that sorts a list of names by last names” and it produces specific code that respects not only the intentions of my request but also the context of modern day programming. It uses meaningful variable names, adds comments, and flags edge cases.
As technology speeds up the reification process — in large part because it can reify more and more abstract instructions — we (the specifiers) want to be in a virtuous cycle of trust with it (the reifier). These vignettes illustate how developing and maintaining trust relies on:
- Communication and responsiveness between specifier and reifier.
- The nature and dynamics of the shared context.