I think this departs from the topic fairly quickly. It rapidly digresses to treating with imagination and understanding the emotional impact of ideas than the pure concept of abstraction (to be clear, those are also useful skills, but understanding the emotional impact of an idea isn’t a matter of understanding the art of abstraction).
I’m not really into platonism, so perhaps I’m missing something about the approach here, to me abstraction consists primarily in identifying significant similarities across (relatively) heterogenous sets and capturing those in a clearly defined category that can encompass the distinct sub-categories or individual instances (very aristotelian). That then allows one to work on the category generically rather than on each item within it. As abstraction increases, specifics disappear beneath the abstraction, which is an expression of power. I think that’s the essence of Paul Graham’s argument about language power though he doesn’t deal with it directly (I suspect his definition of power would diverge slightly from mine).
Hm I feel like this article is mixing up several different things.
First four are: Program, Patterns, Concepts, Theories. OK sure, those are related to abstract thinking, although the advice is a bit vague.
A few others are: Arts, History, People, Treks, Business.
Uh I would call those things you could study to make you a better thinker, period. It doesn’t have that much to do with abstraction IMO (or at least abstraction in programming, which is what the article seems to be about).
Also, I think it’s missing an important piece of advice for programmers: study an undergrad level of pure math. That will help you abstract.
You will learn what properties are logically necessary to deduce other ones, and which ones aren’t, and how to express yourself succinctly, and abstractly.
Related thread: https://news.ycombinator.com/item?id=23692840
The idea was not necessarily about programming, but about abstraction in general (which you call “thinking”) as one of the suggestion is to learn how to program.
But I believe that if you are a programmer you will benefit in learning abstractions from other domains as well. I know this has help me in my life in programming and in connecting dots in different ways. Math of course is good, and will help you a long way in programming but not necessarily when you develop a complex system in “weird” business landscape.