DEV Community

Paul B Kim
Paul B Kim

Posted on


My 2 cents on learning web dev as a beginner.

Everybody is different when it comes to learning.

But I just wanted to point out that going straight into documentation is just not realistic especially when you just started learning programming. Hence this is not the right advise for everyone. (Again, you may be different than I am.)

I've started learning programming through my bootcamp since August of this year. I had tough time learning in the very beginning because they told me to dive into documentation and somehow understand it without any prior knowledge. And then I had to make lodash from scratch and etc into first 2 weeks of the course. If you're a true beginner, you probably realize anything in MDN hardly makes any sense when you barely understand what loop is or what if statements are.

I think tutorial really helps in this type of situation because it gets you understand some of the concept before going into actual coding and build muscle memory even if it's just by coding along.

Now that I am learning React, and took a tutorial course, everything in the documentation makes much clearer sense. I still go over the videos that I did not understand fully.

What I recommend after this stage is just console logging shit out of everything. For instance, I watched in tutorial video using useState or useRef and I just didn't understand how this whole thing worked. And then I started delving into it by console logging all the functions or methods I didn't understand.

Building something on your own is obviously essential part of learning, but I don't necessarily agree this should be your very first step. After watching tutorial and playing around with a code little bit, building becomes whole lot easier and you can think in much deeper level as to how to make things work efficiently with less code than just making it work.

Another process that helped me a lot in the learning process is to make your own methods of ES5+ JS syntax from scratch. Split, join, spread operator, higher order functions like reduce, map, find. This may sound completely stupid but it actually helps you understand these methods much better. Same thing for node.js. I recommend NOT using express library until you are able to do creating server, basic routing with plain Node.js. Once this part is done, try to make your own middleware as you are using express. I know this sounds tedious, but it actually helps beyond just understanding syntax. Hard concepts like Authentication, or tokenization can be understood much better in this manner.

Last point. A lot of people will disagree with this, but learning React or other libraries without solid javascript knowledge is not necessarily a bad thing. I, for instance, learned JS for only a month and still had a hard time understanding practical usage of Bind, Generator, some data structures like set, and async. A lot of these make much more and more sense as you are using React and Node. Because you are in an environment where you're forced to understand those concepts. If you console log into method, helpers, functions in framework you get to see what they are made of. If you spend time on trying to understand those, a lot of stuff that didnt make much sense in JS become clear.

No matter what they tell you, start learning postgre and mongo as you're learning express. You get much more deeper understanding of web development. You are probably not going to make interconnected database or gigantic schema. But, this way, even if you build just a todo - you will find yourself approaching much differently than when you first started out vanilla js todo.

Now that I understand the basics of react, I now feel urge to learn css and html as I am building UI components myself and I feel like I can learn them much more efficiently.

Learning is just never linear as one might hope. I hope this helps some of you who feel 'lost' in first few weeks of learning....

Top comments (0)

Visualizing Promises and Async/Await 🤯

async await

Learn the ins and outs of Promises and Async/Await!