📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Выучит даже дуболом — лучшие стратегии обучения для IT. Жалею, что не знал этого раньше!

Frontend22831:13

Transcription

And so you've been preparing for a long time, getting yourself in the mood, and finally, you've started learning, diving into programming. You sat down to watch courses, complete all sorts of assignments, it seems like you're watching, it seems like you understand, but when you want to create something from scratch yourself, it's as if you can't do anything, as if all the knowledge has been thrown out of your head, or you never had it at all. The thing is, I've spent thousands of hours learning in IT. And hundreds of them I also wasted watching passive courses. I tried to instill the skill of programming in myself through rewriting, rereading, mountains of notes. And then I realized, it's not that I'm some kind of idiot, or that my brain isn't wired for programming. Yes, it's not wired, but I can compensate for this with truly effective methods, learning strategies, learning how to learn. And everything started to change when I gradually, step by step, began to implement these methods and eventually developed a system based on them. And in this video, I will give you a summary of my experience. Only practical advice and what I myself have used. How to correctly approach learning new topics, learning complex topics, large ones that you haven't seen before. Why you forget material and how to reverse it? How to retain knowledge for a long time and immediately? How to turn passive course watching into something more productive, into something you can immediately do with your hands, and specific action algorithms for frontend, for JavaScript, CSS, HTML, React. You can confidently apply these methods to your technologies if you are not a frontend developer, because they are universal. We will start by analyzing the fundamental techniques on which everything is built. The first of them is so-called priming or pre-learning. To put it in context, let's recall a situation when you sat down to study complex material with many terms, and immediately tried to break them down, to stuff them into your head, and your brain simply seemed to shut off and reject them, as if they were something foreign. The problem again is not that you are stupid, but that you are trying to connect too much at once and stuff too much without preparing the ground, without making these terms, keywords appetizing for the brain. Your brain doesn't understand why it needs this information. It's not relevant, not needed. Why should it spend? So, the energy it spends a lot, and even on such complex abstractions, going in levels, levels, as it is structured in programming, you can use pre-learning. This means that you will sit down a day before the main analysis or a few days before and study the keywords, create a superficial map of concepts in your head about the material you are about to study. For example, JavaScript. Open the same roadmap, any popular one, and look at the key concepts, what follows what. Understand them superficially, ask GPT, explain to me like I'm five, closure, function, array, data structure, and so on, how they are related. But importantly, don't get into the nitty-gritty. At this stage, you are preparing the ground, creating appetizing hooks that your brain will already latch onto the next day. And it's desirable to do this not on the same day, because at night your brain will consolidate it a bit and it will go more easily, one might say, smoothly to some extent. But at the same time, don't delude yourself that pre-learning is a substitute for full learning. No, it is not. And the next day, or after a few days, you will definitely need to do the main learning block. Thus, you will do useful reconnaissance, prepare the ground, make the information relevant for the brain. And believe me, it will be much easier for your brain when it encounters ten, fifteen incomprehensible abstractions and concepts. The next, one of the most important and key concepts is so-called encoding, or simply put, information encoding. Usually, deep information encoding is implied. To understand what it is, let's compare it to cramming. What is cramming? You learn a definition like a sheep, then you look at a new gate, at this definition, you don't understand the true meaning, you don't understand the connections, what follows what, how it was formed, why it's really needed, how it's related to other concepts, how you can experiment with it in different situations, in different contexts. Cramming doesn't do this. Its antithesis does this, that is, encoding, deep information encoding. You can learn a definition 100 times, but you will forget it in a month, or you will remember this set of words. The whole point is that memory is not an archive, it's a kind of graph, so to speak, where each concept is connected to another. If you connect one concept to many others and connect these concepts to each other, figure out cause-and-effect relationships, then you won't just throw this definition, meaning, idea out of your head. It's connected to many others. And good encoding is deep. As you've already understood, it answers the questions: why, how does it work, what is it related to, where did it come from? Here's an example of closure in JavaScript. I could have just learned the definition and a simple example, which I successfully did when I was getting into it and also successfully didn't understand and forgot the true meaning. In an interview, when I was asked two or three probing questions about closure, I couldn't explain, because, well, this kind of rote memorization didn't prepare me for that. But if you approach learning the same closures correctly, you'll look: "Ah, where was it used, how did it even originate?" And it originated there from the eighties-nineties. That is, there is a specific purpose why that abstraction was introduced, how it got into JavaScript, how it developed. Again, don't dig into the nitty-gritty, you won't be writing a dissertation on closures there, but nevertheless, to a certain extent, you can dig to connect it well. Look at the environment links, there are so-called ones. You can go into the dev tools and see where this link is stored, dig around, experiment, connect with practice and see. And this will be much more optimal than just learning definitions and simple examples. And this encoding, information encoding at the first encounter, is a skill that you can develop more and more, improving it. What's good about this encoding? is that at the first contact with information, if you connect it correctly in your head, build a mental map, so to speak, then all subsequent learning will go much faster. This is also shown by studies that were conducted precisely on this strategy. And encoding is not reading a lot, it's reading meaningfully, connecting facts, looking for causes and connections. Next is active recall, that is, active extraction. To explain this concept, I ask you to recall those moments when you watched courses for hours, seemed to understand, but when you sat down to do it yourself, you couldn't do anything. Well, how so? You watched and understood. You seemed to recognize this information again and again. The key thing is that you recognized it, that is, recognition, that you actually know it, is an illusion. You just recognized it again and again. This same principle works when you often notice some information, hear about it, hear it in videos, but you don't delve deeply into it. And when a discussion about it arises, you can't really debate, discuss, because, in principle, you just recognized it, you didn't do any research, you didn't analyze the concept in detail. And the opposite of this is precisely active recall, that is, your own generation, which you can, if you do something with your own hands, you need to extract information from your brain, try to translate it into code, connect it. And here it turns out that it is much more difficult than just watching, but also much more effective. The rule is simple. When you watch a course or another educational guide, try to quickly skim through it, apply the same priming, but get 20-30% of the theory that you minimally need to move on to practice immediately. Why so? There's a thing called Bloom's Taxonomy. It's a triangle. And the higher you climb it, the better, the deeper your understanding. The very top of this triangle is the masters, who are a tiny percentage in each professional activity. These are exceptional people. We don't need to reach it. Just a little lower, two steps, we strive for that. And as you can see, recognition goes from the bottom. That is, it's knowledge of a lower order, and at the top is something of a higher order, complex. And we need to climb up as quickly as possible. There's no point in languishing at the bottom. It's ineffective and yields no long-term results. Next, which you've probably heard of, is spaced repetition, that is, interval repetition. This is Anki for us, but in fact, it works everywhere. What does it essentially mean? It's related to the concept of the Ebbinghaus forgetting curve. There is a certain curve where the principle is that on day zero, that is, with the first contact with information, while you are learning it, you know 100%, or thereabouts 90%. The next day you will know 80%. On the fourth day, 50%. And by the end of the month, you will know at most 5% and vaguely remember that you once knew this information. This is the forgetting curve. And it seems that there is a hack here, and it is called interval repetition, which essentially means that in these very intervals when your brain tries to aggressively throw this information out of your head, you aggressively counter it with repetition, Anki, testing, or something else. You constantly return to the material. Perhaps you reread it, but rereading is a bad repetition strategy. You still need to recall, and when rereading, you will recognize what I've already told you. It seems like everything is fine. I'll apply this strategy everywhere. I fell for this too. I thought, now I'll create cards for JavaScript, for React, for everything, I'll spend 10 hours on cards. Indeed, I could spend 6 hours repeating them. And this, in fact, can be described as follows: you can't fill a leaky bucket with water. In the end, it will still leak out. You need to work on truly fundamental techniques, such as encoding, that is, deep information encoding, skills that really load meaning into your head. And if you load it correctly, you might not even need interval repetition. You effectively store information immediately. Why do you need to repeat it? Something like that. Next is productive challenge. Here I would highlight several stages in this concept. And the first of them is the comfort zone. This is when you are not learning, obviously, when you have already learned a concept. It's like lifting 100 kg for 15 reps in the gym. Yes, hypertrophy will occur, but if you want to increase your strength, you need to work in strength mode. So, three to six repetitions are suitable. It's difficult enough for you, but achievable. And the panic zone is when it's too hard for you. But in fact, to be honest, you can translate every task, if you are not a beginner, into the growth zone by managing cognitive complexity. What do I mean? It depends on several factors. Among them, it might be that the material is simply not optimal. The teacher is incompetent, teaches the material poorly, and you have to break through his concepts, his language, his delivery, which naturally complicates understanding the material. Second, the material is too complex because it is voluminous, with many unfamiliar concepts. This means you need to break it down into pieces, into parts, get a general picture of understanding, connect key concepts, understand the reasons. Also, multitasking. As a rule, multitasking harms deep work on a single task where all brain resources need to be engaged. Therefore, if you are multitasking, the task will seem more difficult than it actually is if you are doing something else in parallel. And finally, what we are discussing now is choosing the right learning strategies. Do not choose rereading, rewriting, underlining, passive watching, similar low-order learning strategies where you do not apply knowledge, do not practice, do not experiment with it, where it lies dormant. Thus, you can reduce cognitive load, translate a difficult challenge into a comfortable one, and perform this comfortable challenge, thereby moving up the ladder. Well, and finally, there is meta-learning and the feedback loop. Everything seems simple here, but it's important to apply and practice it again, because I myself often notice that I learn on autopilot. I don't understand a certain topic. I don't even understand why I don't understand it. And if you apply meta-learning, metacognition, as it's called, you will become an observer of your brain, what it doesn't understand, why it doesn't understand. Correct your behavior and learning system. Here's a concrete example: when I was learning, I constantly confused `this` in JavaScript. I would sit down to solve a problem, there was an arrow function. I didn't quite understand the difference between an arrow function and a regular one. And on this example, I constantly got stuck. And at some point, I sat down and thought: "Why don't I understand? Well, there's an arrow function here. I know it doesn't have a constructor and so on, but does it have its own context? I went to look, and it turned out that it doesn't have its own context. It's hardwired. It always takes the external context. And thus, you can easily determine the context of `this` from the external context. I figured this out, and all examples with `this` then became easy for me, where there was an arrow function, because I instantly determined it. And this is a simple example, but nevertheless, the principle is this: you may have confusing examples, complex topics, many abstractions, you don't understand what you don't understand, but this is also meta-learning and the feedback loop, where you will gradually improve how you learn to ask yourself the right questions. Well, and finally, let's move on to practical examples for JavaScript, CSS, HTML, React. Let's start with layout. How would I approach it if I were learning layout from scratch now. Well, first, I would do the same pre-learning, analyze the key concepts, open the CSS, HTML roadmap, key concepts there, Flexbox, CSS, animations, grids, all of that, try to superficially grasp the key concepts in my head, how they are related, why the same flex, where it came from, why it exists, what's the point, and what were the previous animations, media queries, that is, where it comes from, why it's needed, how it's related, but without the nitty-gritty, again, not deeply, because I'm doing reconnaissance now, preparing information, making it appetizing and relevant for the brain. The next day, I would dig a little deeper, but having received 20-30% of the theory, I would immediately move on to practice. I would take a free layout or a free video tutorial on YouTube with a ready-made layout and markup. Knowing the minimum already, I would immediately move on to practice, because theory without practice is dead. I would need to experiment, look at the same flex, how things work, poke around, make mistakes, but develop the skill, connect theory with practice. And even if I overdid it with effort, I'm scared. In principle, this is how the psyche is tempered, this mental resilience will still be useful when you have to deal with more complex bugs. At the same time, with code-writing, I would never say to it: "Type for me and so on, give me the answer immediately." I would strain my own ass for a very long time and hard before asking it to give me an answer or a hint. Next, JavaScript. The same thing. We go in, look at the big picture of understanding, how concepts are related, variables, data types, functions, arrays, objects, DOM manipulation, all of that. Native JavaScript, well, you can skip it. Learn.js.ru can also be skipped. Too many details there. And if you think that by reading it, you will understand JavaScript, you haven't connected this theory with practice again, and, in principle, you can't connect it, because there is a lot of unnecessary theory. At most, it can help you when you are preparing for interviews and preparing for certain questions. But we are not talking about that now. So, you've done your reconnaissance, then you focus on one pattern, for example. The same closure, which you are most likely to be asked about in an interview. You go to GPT, ask: "Explain to me like I'm five." It explains to you. You try to analyze deeply, ask the right questions. Why is it needed? Where does it come from? Why? Immediately build the correct mental map in your head about this concept. Get the minimum theory, immediately move on to practice, take a simple task, for example, it could be from LeetCode, create a hello world function. A simple task, the simplest, but it will be very useful. Solve it, analyze it, experiment. How to solve it like this? And here? Go into dev tools, see how everything is stored there. And this environment link, objects in JavaScript. Yes, it will be hard. Working with code right away, and writing it, and then trying to do it yourself. You have to go through this. Who told you it would be easy? Yes, it's easier to passively watch the same batches of courses that are now coming out, but you won't get knowledge from it. You've solved this task, move on to the next one. Find 10 tasks on closure or look at the solutions, analyze them, try to write them yourself from scratch. The next day, repeat again, try to write them yourself from scratch, analyze. And with such iterations, analyze the concept. Next, React, what revolves around it. As usual, we start with an overview of concepts. We can read roadmaps or official documentation, but in Russian, because even if you have good English, it will create that cognitive load. You will try to understand what this English word means and so on. Analyze the topics that are there, components, props, states. For now, let's not touch on the infrastructure of Redux, how it all works, dispatch, Flux, and so on. Get a minimum of theory, immediately move on to practice. Create simple tasks for yourself or find them on the internet. Ask GPT about a counter, analyze the counter, analyze the solution, what is used, what React patterns are used, try to write it yourself, experiment, log. If you can't write it yourself, again, look at the solution, then, sit down and write at least something simple. You wrote states. Then you wrote the `onClick` methods for increment, decrement, first increment. You wrote something yourself, then you wrote decrement. Little by little, piece by piece, you will write a counter yourself from scratch, then move on to more complex tasks, like a to-do list. And as soon as you can write them from scratch, add the basic React practices, like conditional rendering, modal windows, and so on. Ask GPT, experiment, make mistakes. There should be friction and challenge. So, piece by piece, you analyze individual React patterns. And when you feel that you know controlled, uncontrolled input, modal windows, virtualization, something like that, you can move on to something more complete, a whole thing, where you will try to apply everything together. This could be a complete course, a pet project. You can immediately plan a pet project, but we'll talk about that a bit later. And it's worth mentioning Anki in practice, although it's still theory, but also practice within JavaScript, like console logs. This has its place. Anki can be useful when you are preparing for an interview, where you need to keep a clear definition in your head, answer without hesitation, concisely, professionally, so to speak, to questions. You won't be given time to think, and your answer should be deep enough, and, well, you should sound competent, confident. As if you've been asked this question a hundred times. Yes, you're tired of answering it, but you'll answer it perfectly. And Anki helps to hammer into your head stupid questions, all these typical questions, but I emphasize again that it does not replace full practice, your own experiments, mistakes, and high-level learning. After all, Anki is closer to the lower level, it's an attempt to fight the forgetting curve in the brain. Let's remember the leaky bucket. You can't fill it if it's leaky. You can create your own Anki cards or use mine. I've left my collection on Telegram via the link in the description. Well, and to summarize. A pet project. Logically, it's at the end because it combines all the pieces, all the practices, the same spaced repetitions, individual topics that you've analyzed, constant active recall. You will be doing this here. You will constantly return to this project, constantly extract, try to gain knowledge, do something yourself. Yes, there is code-writing now, but it's worth mentioning. You need to approach it very strictly and meticulously. Work with the agent as a mentor, a teacher who gives you hints and guides you, but who teaches you, teaches you to generate yourself, rather than generating a lot of this digital garbage that you just see, seem to understand, yes, again, recognize. Ah. Ah, I know this, but you don't learn. I fell into this trap. Well, when I was getting into it, there was no code-writing yet, I suffered myself. And it's good that I suffered. Now there's a temptation to press a button, send a prompt, and that's it, it'll write it for you. It's very tempting and very ineffective. Regarding the pet project, as I said, don't start right away. You can immediately plan for the future: "Ah, I want to do this, I want to do an online cinema." Well, honestly, you'll be working with streaming there, yes, and that, of course, can be tedious, maybe not very useful, because rarely can you find the same streaming algorithms, the same WebSockets. Therefore, it's better to do something more basic, like a list, a blog, and so on, without streaming. So, plan your pet project and start to digest it a bit superficially. Ah, there will be a gallery, there will be a personal account, there will be simple SEO or JWT authorization. What is it? How does it work? And you'll be analyzing it a bit in practice at the beginning, little by little. And when you start the pet project, it will be much easier for you, because you know, ah, there are blocks here, and I'll do this here, next week I'll do this. And this will be a kind of priming applied to the pet project. Well, and the finale can be summed up as follows: high-level knowledge, true knowledge should live, be practiced, experiments should be conducted, all new ideas are connected to each other, and so on. And if you want to learn to code, to master it, you need to write code yourself, encounter errors, bugs yourself, try to resolve them. The same applies to this video, yes, it's theoretical to some extent, but all the tools are practical. Many people will watch it and say: "Uh-huh, cool. I'm certainly impressed by these concepts, but I won't apply them." And that's it, they won't improve their learning system, they will continue to passively try to watch. Don't be the majority, choose at least one strategy that you liked, and start applying it today or tomorrow. Then, through pain and suffering, connect another one, because it won't be easy. Real learning is difficult. It's not like watching courses. And step by step, sooner or later, you will build your skill of effective learning, and that will be a completely different matter. In general, if you found it interesting, write something, click something. See you next time. y