Jump Rope with Abstractions
One skill I attempt to practice consistently is the ability to jump through levels of abstraction. This requires having a growing toolkit of abstractions, such as some of those in Shane Parish from Farnam Street’s series on The Great Mental Models. It also requires being able to have emotional awareness and detachment to abandon ways of thinking and move on to more suitable ones. This is a meta-skill that can make life better.
I have been doing this my whole life. Abstraction jumping clicked during my undergraduate education as an Electrical Engineer somewhere between Electronic Circuit Theory and Digital Signal Processing. The core of these courses is: “let us analyze differential equations”, but you soon learn is that you can take first-principles physics (and calculus) add a few constraints to make problems easier to think about intuitively. Using these abstractions and models requires constant observance of the constraints and environment. You also need to have some intuition at the fundamental level as well. If you can bound a problem, and the environment, you can do a lot of really great and fast problem-solving and design. These abstractions all breakdown and interact with each other at the boundaries. As one of my mentors once said:
The problem usually lies just past the boundaries of your understanding
That is why being able to learn new models and then utilize them is important. When you have problems abstractions give you a good idea of where to look, based on a knowledge of where they fail! Furthermore, this lets you design systems in a layered approach that allows you to target function and various levels of implementation, and then the side-effects of those implementations. Through iteration, you can grow the coupling. If applied by an undiscerning eye you can end up with very complex, over-constrained, or designed systems. These abstractions sit upon scientific literature, pedagogy, and a bit of curmudgeonly wisdom, but often the hardest thing to do is know that today you are holding a hammer and you are looking at a screw, not a nail! One thing I like to remember is a teaching of the Buddha I first read in the Diamond Sutra:
Therefore, regarding this, the Tathagata says, “By knowing the enumeration of dharmas to be similar to a raft, even dharmas are to be abandoned, then what needs to be said about non-dharmas!”
– Buddha, Diamond and Snake Sutras
In my mind this is the idea that teachings, abstractions, practices, all exist to achieve goals, they are not themselves realities. Like a raft, which is a temporary tool to bring you from point A to point B, an abstraction is to be used for a specific task and then discarded. One thing I have found harder lately is that I can get stuck on abstractions sometimes. It is not that I don’t like learning, but I think this starts to happen when society, or some part of you, says: “Hey! you are pretty good at this! You are an expert now!”. You take yourself too seriously. You are like a carpenter who has forgotten that a machinist working with metal is a useful ally to achieve his goals!
Keep a beginner’s mind, keep learning new abstractions, develop expertise but keep it new. Keep taking on new views and remember to have strong opinions held loosely