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 b...
For further actions, you may consider blocking this person and/or reporting abuse
In my bootcamp we tackled JavaScript before we got to React, but coming from Ruby to JavaScript was a real mind-f**k for me. I don't know why, but I REALLY struggled with vanilla JS.
Then we got to React, and I still had barely any idea how to do basic things in JS. I didn't understand core concepts like DOM manipulation, event bubbling, barely anything.
But, something about React helped so much! And while I still wouldn't call myself a JavaScript master by any stretch of the imagination, I completely understand those concepts SO MUCH better now. The "why" and "how" make so much more sense to me.
I am actually really excited about going back to building things with vanilla JS. And all thanks to React for making things so much simpler to understand in many ways.
I’m glad you got away with it!
Thanks! Me too! That JavaScript section of my curriculum almost defeated me, but luckily I got through it. I was pretty beat up by then, but React was the lifeline I needed!
I am on the "learn to code the way baby learn to talk side". They know nothing about grammar, they don't read the doc and they are the fastest learner you can imagine. Why? Because they learn to make extremely efficient mistakes and thus making extremely good guesses (PAC learning in AI terms).
I think it's very important to start on a project ASAP and start "guessing". It puts you in a situation where you actually need something new. It's very important, because you know "why" and "where" you need that skill/knowledge even before you even know what it is (it actually really wires thing up in your brain). And if you struggle that's even better: you learn what doesn't work, what seems and the emotion only reinforce the learning.
It create those "HAHA" and "I see what you did there" moments that you never get by reading a book on closures before
this
even go crazy. Trying all sortthis
binding in Meteor.js only to read Scope & Closure is one of my most efficient learning experience.Do frameworks help for that? Definitely: you can use reactivity and a lot of it's implication without caring about event bubbling for exemple. Framework help you focus on structure rather than technical mundanities. Better: if you "guessed out" one framework, then the error you made along the way, will make you even better at "guessing" the next one and so on.
The only thing is to learn to identify quickly which grey area is slowing you down too much and where your guesses are being infecients.
It's called induction teaching and basically is the way most decent pedagogy is done today.
The old way of learn "all the theory before even doing an exercise" is virtually not used anymore. Not even for maths classes in French schools (if that doesn't say something, then what does?)
Top comment
"Fundamentals first" is a concept we are struggling with teaching art/design classes. There's this balance of being stuck in education hell and actually working on a useful project. The most successful creatives (which include developers) have a project they want to make before they start learning. That helps a ton with motivation. Learning the fundamentals usually means that work on their project has halted until they know enough. But the problem is that it's impossible to know how much you need to know to start working on your project idea. I believe that even if they did know how much knowledge they needed to get started, they would be doing nothing but learning for so long before furthering their project that they would burn out.
I think the best way to learn the fundamentals and not burn out due to inactivity on your first project, is through "just-in-time learning." Learn some fundamentals, then do some exercise that pushes your project forward in some way. When you try out each new skill, you need to figure out how to somehow apply it to your project. Learning HTML? Use HTML to create a proposal for your project, using semantic markup. Learning CSS? Mock up an interface for your project, or a promotional page for it. Learning JavaScript? Create an array that has all the tags for your project, or an object that has the data type for your project.
If courses were designed with more open-ended assignments that would help push people's projects along as they learn the fundamentals, I think people would burn out less while still learning things in the right order. I do like the in-browser unit tests that freeCodeCamp uses for grading, but right after those tests, people should be directed to work on their project. That will also help the fundamentals stick.
What order you choose to learn thing in is your business, not anybody else's.
However, you need to keep in mind the two reasons why 'fundamentals first' is what so many people recommend:
The first point is just a non-issue for some people (they quite simply are fine with "because that's the way it's done" reasoning for why they should do things they way they need to do them), but even for those for whom it's an issue, it's just a side effect of how they learn.
The second point though is something that often gets neglected, even with 'fundamentals first' approaches, and it's a huge but often never discussed issue among software developers. Understanding how the tool/library/platform/framework you're using actually works is important for a couple of reasons:
<template>
tags and the Fetch API. However, the developers quite often either just don't know this (they know how to use framework X, so that's what they'll use even if there are better choices) or they don't know enough about how the framework works to be able to prove to the people who are responsible for the decision that it's actually worth it (and it usually is, a truly minimal MVC layer is only a few thousand lines of code client side, compared to the almost 500k lines of code in React).I agree with many things. One thing that helped me is to put the problem in the center of everything and always think about the frameworks and languages as a tool to solve them.
We sometimes just fall in love with coding and forget what we do it for.
I beg to disagree: in theory it would be perfect if you could gather all the knowledge to chose between let's say mini-homemade-MVC and React. In practice that is a very tough task for even the most seasoned devs/CTO, let alone a beginner.
I would rather say, the day you can make that, you have mastered the fundamentals. Before that, I think you're much better off trying something a bit blindly and learn from your mistakes.
But that doesn't mean that knowing the fundamentals first can't help you significantly. I'll admit my particular example was a rather complex one, but there are plenty of simpler ones. For example, properly understanding the fundamentals helps you decide when it matters enough to use a more complex data structure than trivialities like a list or map.
I’m an advocate of “build ton of stuff and pause for learning when faced with recurring problems”. Beginning with nearly 100% practice and naturally moving to learn more theory when it becomes important.
It’s definitely not necessary to know how things work in order to be able to use them. The features and interfaces are poorly designed if it requires the consumer to know about the ugly details.
However once a person is gaining experience it becomes very useful to dive into the fundamentals. That will serve well really quickly when advancing towards seniority.
One point about this. You can approach learning however you want. You can learn React first, it's the pragmatic way to the first job and it's a useful skill at the end of the day. But you're not deferring the confusion in the learning process. If you learn React to apply it, once you have your job it's a different part of the process, where learning is done on the job and any confusion about the basics will reflect on your productivity. What will you say to your team? I'm a beginner that know react but no idea how vanilla js works in the browser? Maybe you jumped to typescript and you're writing stuff without having any idea how it impacts the Babel output (or parcel or whatever)?
Well, in all interviews I've been to and all I've ever held, you wouldn't get to React questions without passing fundamentals.
Then again, maybe you mean purely learning, in which case I would say React makes more sense after going through some basics.
It depends on your way to learn things, there's no better approach for everyone, there's no magic on using a methodology or another, it's all about the way we learn over the base learning process our brain needs. check this for further information 😁
Huh, interesting take, I like it, and thank you for the read!
I think I agree with you to an extent, I will say this: Having OS knowledge of Linux, understanding how networking works, and understanding the difference between templating languages allowed me to progress(both in salary and levels) a lot faster than folks coming out of framework-oriented bootcamps.
On the other hand, you're right, if you want to get stuck in the industry fast, i think you're right. But I think you should have metered expectations if you choose not to progress in learning after that.
I found with JavaScript, I understood arrays and loops very quickly. I somewhat understood functions, callbacks, and objects and I really struggled with regular expressions. Learning React and D3 significantly heightened my understanding in all these areas. The other element I found was time. Some things which had previously been confusing became a lot clearer when I wasn’t attempting to force more coding information into my brain.
I've seen this pop up a lot on twitter last week. So here's my take on the subject.
Someone can totally learn a JS framework without having good knowledge of JS. And said person could totally make cool stuff with that framework if it works out. Obviously things are going to go wrong and when they do, it's going to be all black magic and debugging will be a massive pain because of the lack of fundamentals.
A different person can start learning JS from the fundamentals and not touch a framework and go through all the theory and deal with all the abstractions and muster the motivation to learn it as a whole but we all know that you never finish learning JS.
The "fundamentals first" advice is mainly of some people trying to save others that world of pain (or at least part of it) but then the issue comes when they take well-meaning advice and share it like it was gospel and then others are doing things wrong if they don't follow that advice.
Sure, go ahead and learn Vue, React, and whatever while barely knowing anything more past functions in JS. Nothing is going to happen until it happens and you find it the hard way. It's like trying your older brother's bike when you're just starting to learn how to ride.
Just because you can do something doesn't mean that you should.
Well, when I started out, (Baack in my day..) I learned HTML, CSS and Javascript because that was all there was. PHP showed up shortly thereafter. Today things are a bit different with the frameworks and tools forming a layer over the basic HTML, etc. I don't think you can ignore the fundamentals because in the end what tools generate, or frameworks serve up is HTML, CSS, and Javascript.
That said, I think you have a good approach: Learn the basic fundamentals, move on to the tools and frameworks. Having the fundamentals will help you understand how the tools and frameworks do what they do.
Totally agree with Dan that the order you learn things doesn't really matter, it depends on how you prefer learning (sometimes referred to as "top to bottom" vs "bottom to top")
What's important, crucial even, is that you don't lock you into a single framework and explore whether some things could be done "by the platform" rather than through the framework (or using HTML and/or CSS vs just JS: there was a time, before flexbox and grid, where complex positioning required JS computations, this is no longer true in most cases; don't fall into that trap, because CSS will be much more performant, efficient, and a portable knowledge: works with any framework!)
As soon as you're quite comfortable with JS or a specific JS framework, explore (if/when you have time) whether it wouldn't be better if done by other means.
Totally agree with your points.
I still believe some basics have to be learned first. I've written about not starting with React and focusing on JavaScript and general understanding of DOM instead.
Of course anyone is free to learn what they want in whatever order they like. However, the trend nowadays seems to be for coding bootcamps to release in the market plenty of "React developers" who end up struggling in the real world because they have not been given the time to learn those basics.
Don't start with React
I mean, you eventually learn them right? It gets to a point that you need them to keep working on some project.
Feel free to debate in the comments section!