Is "fundamentals first" the best approach to learning web development?
Tags: webdev, healthydebate, codenewbie, career
Published: 2020-08-20 16:27:34

A bit more than a year ago I started learning web development. Coming from a Computer Science background, where the I/O with computers is usually based on a terminal, they were exciting times. 

So I started focusing on fundamentals as most people recommended: HTML, CSS and Javascript. 

As I was doing this in my free time while also studying my degree I got exhausted by the time I got to Javascript and had to put it down for a while.

When I picked it up again, I progressed much faster through Javascript and started learning React. It was like unlocking a tool I could got creative with. I started enjoying coding.

Now with some perspective, I wonder what would have happened if I had started the other way around. Actually, a thread from [Dan Abramov](https://twitter.com/dan_abramov) got me wondering.

> Apparently this needs to be said but you can absolutely start with React and skip “JS fundamentals” IF YOU WANT. You’ll be confused about some things for sure (!), but for some people (incl. me) getting something on the screen is the only thing sustaining the initial interest

My past self would have argued the same, you would get confused about many things along the way, and while it's true, he makes a good point:

> People keep answering: “but they will be confused”. YES they will be confused. The goal is not to eliminate confusion from the learning process, it is to not to lose people who give up because what they’re learning feels too far from what they want to be doing (make an app).

I even got confused going through fundamentals first. Specially with CSS. I remembered the moment I understood where flexbox was useful, like six months after "learning" it. 

You are not going to see the importance of advanced topics of JS and CSS in the beginning, while is a totally worthy effort, you understand why much later. 

The point I want to make is that while it's good for you to master the fundamentals, you realize it much later, which can discourage you to keep learning.

> Note I didn’t say you never need to go lower level. You do — you will get stuck otherwise. And after you learn it, you’ll be convinced you “should have” learned that thing first, because you have an emotional understanding of why it mattered now.

And this is the most important thing for me: You **should master fundamentals,** that is no deal. The question is **when**. 

Some people hold that should be in the beginning, perhaps biased by the former point. 

I personally feel that you can set three phases:

1. Get the basics of HTML, CSS and Javascript right. Don't get burned out.
2. Pick up a framework, **but keep in mind** that you have some gaps to fill later on. 
3. Master the basics on demand as you make projects.

You get a motivation boost in phase 1 because **you are starting**, in phase 2 because you are finally **more powerful than before** and in phase 3 as you **progress doing and getting your hands dirty.**

Finally, this is just my opinion. The most important thing is that you keep learning and feeling motivated to do so.

[This](https://twitter.com/dan_abramov/status/1295667530800025600?s=20) is the thread I was talking about, thanks for reading 👋🏻.