How to become an abstract thinker
As developers, we are told many things about “abstraction” it is sometimes perceived as evil as it makes the code obscure and not understandable to others. On the other hand some say it is good and we should strive to achieve good abstraction as abstraction is what makes the difference between a normal developer and a 10x developer.
We have all heard about abstraction. The concept is simple: find similarities, create an abstraction from it, use that abstraction by specializing it with what is different in a specific instance of your code.
We know many abstractions. We use it all the time: algorithms, data structures, frameworks, and many others. But we often do see abstraction for what it is. Abstraction is obscured to us, it is in front of our eyes, and we do not see it. Even early at school we learn it, but no one names it:
The sky is blue
The moon is shining
The two sentences have exactly the same part of speech (Article — Noun — Verb — Adjective) but totally different meanings. The part of speech is an abstraction. Nowadays AI is very good at find those abstractions whether it is in text or in images. But we human have a much thought after ability, we can do knowledge transfer. We can transfer a learned concept from one domain to the other. Machine still struggle at that.