I was realizing that all that knowledge that we have, including the personal experience, It’s starting to connect in different ways in your mind. And if you think about it, you are able to start to separate them by “levels”. Starting from the very high level, like the top of the mountain, rolling down to more concretes and specific levels (in the base of the mountain). That I called as a “different layers of knowledge”.
In order to simplify and start to categorize in some way that knowledge I can find at least four kind of level of the abstraction:
Hight level: Is completely language agnostic, methodologies, abstract concepts, ideas that help us to follow and implement in any language and paradigm that we use.
Medium level: It’s still language agnostic because are a set of tools, principles, patterns and approach that help us in different ways to kraft our solutions.
Low level: Some of them are language agnostic and others not. We could start identify different responsibilities code, suggested ways to organize our code. Suggestion about right comments, choosing right naming of variables, classes, functions, etc.
- Design Patterns (Observer, Strategy, Singleton, Builder, Composite, etc)
- Hight level design patterns like: MVC / MVP / MVVM, MV*, etc
- Clean Code
- Code Smell
- OOCSS, SMACSS, BEM
Very low level: It’s full language/tool/library dependency, ordered by more abstract to more concrete.
- Frameworks (AngularJS, VueJS, Spring-Boot, Meteor, Backbone, GWT, etc)
- Libraries (React, Redux/Flux, JQuery, Lodash, RamdaJS, Stamp, etc)
- Specific Language and library code guidelines (eg: Airbnb, React, etc)
- ESLint and Prettier, are tools that use to a particular framework and language.
As a problem solver guy that we are, one of the main responsibilities that we have it’s use the right methodology, principle, concept, pattern, tool and approach for the specific problem that we are trying to resolve.
Please give me your thought about this short article, I love share ideas, learn from others and I hope this article may be helpful for someone out there!
NOTE: I has been influenced for the following talk: “On the Spectrum of Abstraction” by Cheng Lou, that talk blow my mind a couple of years ago. It’s about how to achieve more properties with the least power possible, and where should be in the right level of the abstraction to avoid a lot of problems. Please watch it or at least you could take a look this summary about that talk.