DEV Community

Cover image for Learning How to Learn Backend
Thomas Hammon
Thomas Hammon

Posted on

Learning How to Learn Backend

As I shared in my last post, I am currently on a mission to learn backend development. But the more I get into it and find other people who also want to learn, I find that there is very little focus on how people learn. I am here to help bridge the gap. In this blog post I am going over a very important topic, which is building a framework of knowledge.

Building a framework of knowledge is all about understanding how the human mind stores information, which is through relations. We don't remember specific points of information as much as we remember how those points of information are related.

For example, is there a song that every time it comes on, you remember where you were when you first heard it? Or is there a particular smell that always reminds you of your grandparents' house? This is because your brain was built to connect the dots, and it explains why the first part of learning is always the hardest: the first dot, by nature, has no other dots to connect to. If you have a whole host of dots that are unconnected, it will be even harder to remember them. Let's see an example.

This is a process that happens to everyone at least once. We are going to start on step 2, and I want you to try to figure out what is happening here:

2 - Calibrate the first stage machine for desired capacity and temperature.

3 - Introduce chemical components based off of selected capacity.

4 - Secure the entry port and activate the machine.

5 - After the primary process has completed, transfer contents into the second stage machine.

6 - Calibrate for desired duration or moisture content.

7 - Secure the entry port and activate the machine.

What's going on in this process? Is there any way to know for certain? How long do you think it would take you to memorize steps 2-7 in such a way that you could repeat them back to me? All of this information is so abstract that we can hardly interact with it. We need something we understand to ground it to, and then the entire process can snap into place. Behold, the first step:

1 - Load your dirty laundry into the first stage machine.

Just like that, the process goes from obscure to mundane. This is the problem I have ran into while trying to learn over and over again. The information is not grounded in any framework of knowledge, and so remembering it, let alone using it becomes impossible. To effectively learn, you have to start with laying a foundation of dots that the rest of the information can connect to. This is the framework of knowledge.

The most effective framework I have found is answering the question "why do we need this?" Ask that question at the biggest levels first and then drill down. You aren't going to understand why you need JWT if you don't understand why you need authentication in general. And you won't understand why you need to worry about authentication if you don't know how the front end connects to the back end, and why those concerns are separated.

Answering "why do we need this" also tells you how to use the tool you are learning. Let's start with answering the big question.

Q: How does the front end connect to the back end and why are those concerns separated?

A: The front end is made to be customer facing, highly abstracted process for non-technical people. The back end is made to be developer facing and to carry out the processes that is hidden from the client. They are connected by API calls that communicate via HTTP requests.

Because we are communicating with the front end via HTTP requests, it might be hard to know who is actually on the other end, which brings us to the next question:

Q: Are there any issues that arise out of not knowing who is requesting information from the database?

A: Yes, there is sensitive information stored in our database. We have to create a process that authenticates the user before we share their information.

Now we know what authentication provides to us in theory we can ask this question:

Q: What technical solution can we implement to make sure we are sending information only to authenticated users?

A: We can provide requests with a JWT to ensure authenticity.

Obviously, these are very vague explanations. The point is to illustrate how each level of learning becomes a framework for the next level of learning, and so on. At each level, you should strive to create a solid understanding before progressing on to the level.

What are some helpful ways that you have found to explore a new technology? Let me know in the comments!

Top comments (0)