Cultivating the Skills of Context
Cultivating the Skills of Context
Have you noticed how there are jokes that really can only exist in their extremely specific context?
Here's an example. The joke is kinda obvious in context, but it entertained me, and there is really no other context in which that joke could possibly have existed.
Something I lightly advocated for recently is the use of niche analogies. e.g. I get good mileage out of analogies between programming and therapy. I also get good mileage out of analogies between farming and ethics. I also get good mileage out of analogies between farming and ethics ("cultivating" is itself something of a farming analogy). These analogies will typically only work for a small group of people, because they have to be in the intersection of the groups who understand each of the things being compared, but they may work very well for those people.
In unusual foundations I argued that you have a unique set of skills and background, and as a result may be able to take advantage of them in unique ways that allow you to achieve things more easily than advice would suggest.
A lot of software is situated - it is extremely embedded in a particular environment and use case, and has none of the things that you might expect from a more general purpose piece of software, to the point where it may be easier to write a new one than to adapt the software to a new context (this notebook blog is itself a piece of situated software).
What all of these have in common is that they are things that only work in a very specific context. They don't generalise (or "scale" if you prefer) outside of that context, because they take advantage of hyper-specific features that are not widely shared.
Is that a bad thing?
When I tell (or, more realistically, hear) a really funny joke that works only in that specific context, I always feel a little annoyed because I would like to share the joke and can't. But maybe the reason the joke is so funny is precisely because of its uniqueness - its reliance on the situation is what gives it its novelty and makes it funny.
Advice that generalises is great, because it can help more people, but the nature of advice is that the more you generalise it the less good it becomes, because you have to simplify it so people understand, you have to add preconditions or remove the things that depend on those preconditions. Often by the time you've reached enough people you've put in a lot of work and made it less good as a result. This is the whole reason I wrote the unusual foundations post - for any given general purpose piece of advice there is probably a better context specific piece of advice. So you end up trading off between number of people you help and how much you help them.
(This isn't entirely true because helping more people gives you more people to innovate on the advice, but you can have your cake and eat it too by sharing the advice in its context-specific form, along with explaining the context, and let other people innovate to adapt it to themselves)
This pattern repeats over and over again, with generalising things being a lot of work and typically making them worse.
But of course one nice thing about generalising is that you often don't have to do that work in the first place. Someone has already invented the hammer, I don't need to come up with a custom context-specific artisanal solution to hammer in this particular nail. As a result, in the moment a general purpose solution is often easier than a context-specific one as long as that general purpose solution already exists.
This is, I think, the source of a lot of mediocrity: It's too much work to do the good thing, so we fall back to the known thing. We only use a context-specific solution when there isn't an easy general purpose one, or when the context-specific one is obvious to us (e.g. the jokes).
(The general-purpose solution is, of course, not always worse than a context-specific one - often a general-purpose solution has been refined through a great deal of time and effort, and trying to adopt a context-specific one is like rolling your own crypto: It's bad)
But everything we do has a rich set of context. This means that we should expect there to be a rich set of context-specific solutions available to us, and we're often likely ignoring them and trying to fit an inappropriate general purpose solution to the situation in question.
The solution is, I think, to generalise from the solutions we find in context, but not by generalising the solution and instead generalising the process by which we found it. By cultivating the skills of looking at a context and identifying whether it permits things that are not possible in the broader world, we lower the effort of finding context-specific solutions, which will often allow us to move from mediocrity to excellence.