|
Abstractionist
|
One who tends to create and use abstractions as a central theme.
The gifited abstractionist not only abstracts what is, but chooses the most leveragable of many possible abstractions. The just right abstraction is so powerful it can sway history and spawn entire technologiies and branches of science. Monumental magnifica examples are time, the number zero, experimental method, the three laws of thermodynamics, the use of booleans to represent data, the Periodic table of chemistry, and the concept of I.
The abstractionist has the ability to quickly see the essence of difficult things. As an engineer they can define problems quicker, design quicker, outline a plan quicker, design a process quicker, etc. As a software engineer, they can abstract use cases, classes and architecture quicker. As a programmer they tend to choose more appropriate names, produce cleaner code and simpler code. They not only do all this quicker but their choice of abstraction tends to be better.
I once asked a top C consultant how he approached design. He said once he understood the problem, he simply visualized the solution in code. This was a fellow who never modeled and was not using an object oriented language, but he was a great abstractionist. He know how to instantly translate a problem into the appropriately abstracted solution. The difference between him and many others is he did this internally and the solutions tended to use low level technique. This and lack of widespread componentization created a problem in that he was the only one who could make architectural changes to the product.
The moral of this story is the better abstractionist uses more visible abstractions. If the above developer had modeled his work, encapsulated the pieces and partitioned it correctly (given it bonafide architecture) as an intermediate step, the worth of his work would have doubled.
![]() |
Think, use and communicate in terms of the correct abstractions in your world. |