The basics can be considered the root of any concept, that is that multiple concepts grow from this one idea. This is significant because this implies that knowing one idea well could allow for the understanding of multiple concepts downstream. To show this visually I will be creating charts using the app Miro. You can learn more from the article ‘Miro my Hero’.

It can be helpful to think of this also as Problem -> Solutions i.e. Javascript Complexity -> Frameworks.

Perhaps one level down for a good understanding of the root idea, perhaps multiple if you take the time to master it (i.e. If you understand time well, you can probably grasp the concept of a second in time. If you have mastered the concept of time you may even be able to grasp the concept of a minute without first understanding what a second is).

Speed is a conceptual jump from time since distance is assumed to be account for in this scenario.

I mention this observation of mine on the basic principles of understanding because I’ve struggled with going in the opposite direction.

It’s not which is true, it’s which is held to be truer by a standard of efficiency.

A little background about my development story so far. I graduated from the June 2020 cohort at Flatiron School Software Engineering boot camp.
Before the boot camp started we were onboarded by learning the basics of both Ruby and Javascript.
In the actual boot camp, we learned Sinatra and Ruby on Rails both of which are Ruby frameworks.

Bootcamp Ruby progression.

From there we were brought up to speed on DOM Manipulation, which I’d classify as intermediate Javascript, through which we learned HTML by osmosis. The concept of nodes was a prerequisite to the concept of the DOM. And then React, which was a Javascript framework.

Bootcamp Javascript progression.

So, when I no longer had classes, suddenly I was responsible for my own progression. This is where I began to make mistakes. I was under the impression that I must continue forward. Not necessarily learn new languages right away but at least explore different technologies. The flaw with this logic is that all technologies are built upon another. Without first understanding what they are built upon, you will be greatly hindered in your understanding of the new technology itself which hamstrings your ability to progress.

The bold line in the center separates the categories.

With that revelation, I realized both that I need to understand the underlying principles of the technologies I utilize (i.e. Why use React instead of vanilla Javascript? When should I use React over vanilla Javascript? What does React do differently than other frameworks? Why are those differences significant?) and I needed to outline what my weaknesses were otherwise I would struggle to identify what I don’t know.

I’m not suggesting that you comb through the source code of React to find all the packages and technologies utilized in the actual framework but if you don’t understand why hooks are useful or using state management, perhaps look into what people did before those things existed would be helpful because, at the end of the day, each abstraction and technology was created to solve a problem or to remove redundancy (the more code, the greater the chance of a bug being created). By utilizing technology without first recognizing the problems it is fixing, you are attempting to solve a problem that doesn’t exist.

Identify the roots from which technologies have grown from. Identify the problems those technologies were created to solve. Identify if you have ever run into that problem yourself because if you haven’t, or don’t plan to (scaling isn’t a factor perhaps), then do you really need the solution?

Though, if you are trying to learn, maybe you could create the scenario where you need that solution (replicate the problem).

In any case, this whole article is based on the observations of my own flaws and struggles. And I still struggle to find balance and optimize my own learning habits. It’s been a matter of mental gymnastics trying to convince myself to learn the long and gruesome way and every day I just want to go faster. If you feel the same, know that desire is a good thing because that’s your drive to learn. Keep that fire going by holding fast to learning things the through-and-through.
If anyone has their own methodology or disagrees with mine, I’d greatly appreciate the feedback via LinkedIn or down below. I learn the most from others.

Thanks so much for your time!

Frontend Software Developer and Security Technician with experience in Ruby, Rails, JavaScript, and React. Flatiron Software Engineering Alumni.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store