nskien.xyz

Learning from first principles

Tutorials flood #

Today's advanced technologies are very generous to us, and we are living in perhaps the most comfortable period in our history. I am aware that there are still many places in the world that are not as easy as others, but for most of the world, we are doing decent when compared to the people in our past.

People are having longer life expectancy, food is becoming more available than ever, planes and automobiles travel faster than many horses combined, and we can communicate with each other even when on opposite sides of the planet!

But there is a difficult aspect to these advanced technologies that we are having is that, because they are advanced, scholars and practitioners of a technical domain quite often lose touch with the fundamentals. This usually happens when the barrier of entry for a field drops, and therefore welcome people from other domains that are struggling with their domain's job shortage to make a career switch.

This series of events, combined with the power of the internet, born many pieces of advice, tutorials, and bootcamps that target such desire to move into a field quickly. This has made the way for the highest level techniques and tools are be introduced widely over the Internet, setting the trend to serve the swarming amount of requests for such resources. Those large numbers of requests exist because, at the end of the day, those advanced concepts are what the recruiters are looking for in those job listings.

This post is not about critiquing this flooding event of tutorials and advice, which encourages one to jump into the most practical toolings and techniques at the start of one's academic journey or career. Understanding the most practical things that are being used in one's targeted industry can be a big help in getting those lists from recruiters checked, but some difficulties arise when applying this strategy. All of the difficulties derive from the high-level abstraction of these advanced technical solutions.

High-level abstractions #

Advanced techniques and tools for performing technical works arrive to solve fundamental problems.

Understanding how to perform advanced techniques first thing is equal to leaving everything that built such techniques out of mind. This creates a distance between the learner and the concepts that they are trying to learn. Higher-level tools improve by adding onto existing layers of solutions to the problems that lower-level tools have solved, therefore more and more the higher level the tool is, the more distant it is separated from the original concepts.

By skipping the fundamental concepts, one will have a hard time understanding the reason why things are the way they are in higher-level tools or practices. This error may lead to misuse of techniques or tools at the lightest, or malfunctioning products when the blunders are serious. Layers of abstractions are there to ease the development period when we already know what is going on, not to persuade us to forget the reasons why those abstractions are made in the first place.

Best practices exist because many people faced similar problems in the past. Those people then came up with a general method to fix those problems. You sure can fix the same problems differently, and the community will benefit tremendously if the method you came up with is more efficient than current best practices, but often that takes long hours and deep knowledge about such problems. Layers of abstractions behave the same here.

Learning from the fundamentals #

I believe that the fastest way to advance quickly in a technical field is to build your knowledge base from the fundamentals (I think it should be the same for non-technical fields as well, but since I'm a software developer, my experiences are mostly in the technical realms). Grow your knowledge like how trees grow. Roots first, then base, then branches, leaves. Understanding the concepts closer to the roots and base will give you the base for abstractions in the higher part of the tree to latch on and live in your metaphoric tree. Without the root and base, branches and leaves will have nothing to latch onto, and will fall off the tree and then die.

Understanding the fundamentals helps you understand higher-level abstractions quickly and, therefore move on fast. Missing the fundamentals, and we will be stuck trying to wrap our heads around the reasoning of the concepts we learn. This both hinders our ability to understand fully new concepts and our ability to combine them with our previous knowledge.

Learning from the fundamentals gives us not only a deeper understanding of the things we learn, it also gives us more time than starting straight from the higher level concepts.