The 80% Abstraction
engineering.gusto.com
engineering.gusto.com
I always bristle at this. Nobody does something without some semblance of a plan. It's what connects each action to the next. Especially in an organization, momentum is a thing. The tendency to contribute critically instead of originating (applied game theory), is a thing^. Edison, Ford, et al didn't wait to figure out the right thing. They did something with a vision. Often times waiting around for something that feels right instead of brainstorming wireframes, is the wrong choice.
^Is there a term for this yet?
> Management by perkele is originally a Swedish expression for a Finnish leadership approach that, according to its proponents, takes required actions in a quick and swift way, instead of a prolonged pondering of all possible alternative approaches and points of view before actually getting anything done.
The abstraction is either good or it isn't. Some stuff just does not abstract well. A function or an API is not necessarily "an abstraction".
Since there are many ways to abstract the same concepts, splitting them into two categories (good, bad) where all the good abstractions are equally good and all the bad abstractions are equally bad seems an unrealistic and impractical way of looking at things.
To a degree, yes. But they're not always introduced for that reason. There are cases, where the caller is expected to fully understand the implementation of a function, yet it may still provide value, for example, by:
- ...reducing the mental demand for understanding the calling code by making it easier to visually scan.
- ...reducing the mental demand for understanding the called code by narrowing the scope of the logic through parameters / encapsulation / etc...
- ...preventing repetition by being callable from multiple places
So the active analysis is effort you have to expend until you know which part to do major effort.
This means to me the analysis can be helped by specialized processing, indexing, and filtering to minimize analysis done during all the runs. The trade-off of these specialized steps must be over-all more efficient than just doing the active analysis every time.