In a couple of talks last year on the theme of network-enabled apprenticeship, I referred to an example of the transmission of tacit knowledge. What happened was that Jim Hugunin accidentally taught me a feature of the Python programming language — the use of the special underscore variable to store the value of the most recently evaluated expression — without ever realizing that I hadn’t known about it, or that his use of the idiom transferred it to me.
Now Chris Gemignani has taught me something else about Python in the same accidental and unconscious way. Last week I mentioned his geocoder for Excel. He’s also written a Python class that’s useful for batch geocoding, and when I found it today I was struck by this idiom:
print “location: %(latitude)s, %(longitude)s” % address
If you’re a non-programmer, here’s a bit of background. Most programming languages include some version of printf, a function that use a format string to control the interpolation of the values of variables into text. So in Python, for example, this statement…
print “location: %s, %s” % ( latitude, longitude )
…would interpolate the values of the variables named latitude and longitude into the format string “location: %s, %s” to produce an output like:
location: 42.933659, -72.278542
It’s quite likely, though, that those variables will be members of a data structure like this dictionary:
address = { ‘latitude’: 42.933659, ‘longitude’: -72.278542 }
In this case, your normal instinct will be to write:
print “location: %s, %s” % ( address[’latitude’], address[’longitude’] )
That works fine, but the alternative Chris revealed to me is better:
print “location: %(latitude)s, %(longitude)s” % address
Although I use Python extensively, I had never discovered this! It’s better in two ways. First, it’s more concise. Second, it associates the names of the variables directly with the percent markers in the format string. That’s not a big deal when there are only two variables to keep track of, but often there are more, and matching up the positions of the markers in the format string with the positions of their corresponding variables in the corresponding list is tedious and error prone.
Quite possibly none of this means anything to you, because you’re neither a programmer nor a Pythonista. Even so, I’ll argue that this principle of transmission of tacit knowledge is profound, and can apply to almost any discipline that’s subject to online narration.
There are all sorts of obvious reasons to narrate the work that we do. By doing so we build reputation, we attract like-minded collaborators, we draw constructive criticism, and we teach what we know.
Sometimes there’s also a non-obvious reason. It’s possible to teach what we don’t know that we know.
[