Victor's "Up and Down the Ladder of Abstraction"
Up and Down the Ladder of Abstraction is an interactive essay/visualization explaining how to properly treat the mechanism of abstraction in designing solutions, using analogies in the form of programming a car to go down a road. It starts by coming up with a basic algorithm for this basic environment and showing the result in real time.
The next step is to simply control for time, that is, allow the user to scroll through any moment in time rather than necessarily watching the whole process. From there, we can begin to control the variables of our algorithm: set your values and scroll through time, or pick a specific point in time and adjust values. This is no longer concrete, or representative of the actual experience of driving like our original video had, but it is not abstract enough to make strong decisions.
An easy move here is to abstract over time, that is, show the path of the car as a line. From there we can adjust values and see how the path changes. We can step back down the ladder of abstraction while retaining our new knowledge by reintroducing the time slider and the visual of the car, while still retaining the line. We can move back up the ladder of abstraction by showing the whole range of possible paths on top of each other. This alone is not particularly helpful, so we can add in a histogram showing the values on x and the length of the path on y. Stepping back down the abstraction, we can allow the user to choose a specific value once again, highlighting both the path on the map of all paths and the position in the histogram.
We've got an idea now of how our algo works in a singular environment—but what do we do about testing it for different environments? The search space of all possible relevant environments is too big, so we can extract a feature we think is important—in this case, how sharp the turn in the road is. We can then proceed to move up and down the ladder of abstraction, virtually flattening out the road and the paths so that the path of the car on different roads can be shown all at once for different algorithm values. Our final visualization could be something 3D, comparing our algo value, an environment variable, and the resultant speed. We could easily parse this chart to say, “For the range of these possible environments, what algo variable produces the best average speeds?”
In many of my processes, I like to abstract ‘all the way’ and all at once. I do find that I often have to step back all the way down to actually understand what any intuition I'm gaining really means in the real world. While the technical topic of “Think at different levels of abstraction” seems pretty banal, I'd highly recommend reading this work.
Favorite Quotes: (One extracted section of the work I think needs to be screenshotted in full, mostly for its nice visuals)