The Different layers of knowledge

Apr 26 · 3 min read

After has been coding for more than 10 years, writing in many languages, working in many project (some big ones and also very small ones). I could say that I really love what I’m doing. But one of the things that I enjoy more, is to learn the history about each paradigm and languages where come from (mainly the first ones). For instance, to goin deep into OOP I work with Smalltalk (with their fascinated live environment with Objects, messages, for every where). Also keep reviewing the important of encapsulations, polymorphism, side-effects, dynamic programming, composition over inherits, taxonomy, etc. And then in the other hand, in FP playing with Lisp, Schema, Javascript, Mondas, Lenses, Transducers, Functors, non-side effects, Pure, Lexical and Dynamic scope. Also at reading level one of my favorites topics are DDD (by Eric Evans and Vaughn Vernon), TDD (Kent Beck, Hernan Wilkinson, Kent C. Dodds, Carlos Ble Jurado, etc). Also always following smart peoples like Martin Fowler (Code Smell, DSL, MicroServices, etc), Uncle Bob (SOLID, Clean Code & Clean Coder), Abramov (React/Redux ecosystem), Douglas Crockford (Good Part of Javascript and all your videos), Eric Elliot (his amazing book “Composing Software”), Hernan Wilkinson (OOP, Smalltalk/Pharo, TDD, 10Pines) watching tons of conferences from them among others as well.

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

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!

Also you can following me on Twitter, or contact to me by Linkedin.

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.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade