Javascript curriculum leaving me with many questions

I’m having trouble learning Javascript, which I’ve tried to do many times over the years using a number of different resources. It feels as though there’s a lot of emphasis on the how but not the why, which has always been my problem with formally learning programming. It really feels like:

  • Here’s a hammer
  • Here’s a nail
  • Use the hammer on the nail to attach pieces of wood together
  • Now build a fence

I’m struggling with the same things over and over, which is basically “why does this do this?” as well as “How is this solving this?” I can fly through the practice until there’s something that needs more than just shallow recognition of symbols, and then it’s just replacing symbols one by one until the tests succeed. There’s little underlying understanding of how to achieve the goals, and I can see others in the forums and exercise help sections having this same issue. I feel that this is where pretty much every learning resource is similar and falls flat.

Specifically with FCC, it feels like one exercise to be “familiar” with concepts and be able to use them to solve problems is just not enough. I’m doing “Algorithms and Data Structures”, at “Nested FOR loops”, and there’s a ton of people in the help section saying they have solved the test but are not able to understand why or how they are supposed to be used.

I’m a network and system administrator that runs a bunch of different Linux servers for companies so I’m technically adept. I’m also able to troubleshoot code problems and solve them with no problem during the course of my normal work.

Are there any suggestions anyone has to alleviate this? I’m definitely not an idiot, and I can’t stand advancing without a good understanding of the curriculum. I read stories about people passing these courses in a couple months and getting high end coding jobs all the time but it seems impossible. Are people getting these jobs with as little actual understanding as I have? If not, what other resources are being used?

UPDATE: I’ve spent the last several days searching for more comprehensive training and I seem to have found it here:

It says it’s the “weird parts” but it’s really just “the parts”. In just an hour and a half, a couple dozen lessons or so, I am so much more comfortable and feel like I actually have some actual understanding. It’s somewhat slow with very little coding so far, because it’s actually walking you through how the language works, but wow, I really feel like I’ve found a lot of what was missing. I bought it on sale for eleven or twelve usd I believe. After FCC I suggest this course.

1 Like

I don’t know what kind of understanding you’re trying to have of the language. But, if you want to learn how Javascript works then you need to focus on the concepts first, implement that using your self created inputs/data to understand the behaviour of the concepts. Once you’ve the understanding of the concepts, then you can watch videos/read documentations of how Javascript works under the hood. And FCC won’t give you detailed explanation of the concepts but will be brief and precise of what they are and how they can be used. Rest of the things have to be done with Googling, reading documentations and watching youtube videos. To be honest FCC covers a lot of things that I didn’t find in other resources but the catch is that it won’t be in a detailed explanation and FCC’s JavaScript curriculum will force you to think, which will help you develop the algorithmic thinking. Mostly because of the algorithm challenges they have.
Besides, FCC has been a valuable thing for me and it has and can change lives for the better.
Heartfelt gratitude to Quincy Larson and every member of the FreeCodeCamp team for making learning to code possible for people all over the world. They are making a difference.:heart::blush:

1 Like

Thanks for the reply. I’m not criticizing FCC; as I said this is something that many people struggle with and I have encountered this in every resource I’ve used to try to learn, not just FCC. I want to break through this “block” and I’m reaching out for help from people that have had this same issue and persevered. I am asking specifically which resources these people have used to get through this.

I’m trying to have a fundamental understanding of Javascript. As of now, I’m finding myself and others are sometimes copying answers from the help section because high level concepts are introduced in 4-6 sentences. The subsequent lessons often build upon the last concept for the next lesson, so just skimming them as you suggest is not possible.

Let me give another example: Replacing FOR loops with Recursion

The lesson says that we should be able to recognize these two things are identical:

multiply(arr, n) == multiply(arr, n - 1) * arr[n - 1]

but which exact lesson would I refer back to so that I could make sense of arrays with negative indexes? I can work this out logically (a function named multiply that takes two inputs has the same value as a function that takes two values (one being negative) multiplied by the value of the array signified by the index n-1) but I’m not sure how or why to apply this to the problem. Why would I want to use recursion instead of loops, anyway? When I google “javascript negative index array freecodecamp” the only result is a lesson faaar beyond my current one. When I google “Replacing FOR loops with Recursion” (the lesson name is too broad) I get tons of results that are out of scope for this question and have none of the specifics i need to properly understand this lesson.

Again, not a criticism but more of a statement of the situation from a learners perspective. As someone that runs servers for a living, I’m an avid reader of documentation and watching videos but I’ve literally been doing that for years to little avail. I was specifically looking for a structured curriculum instead of random pieces strung together.

Honestly, the only way to get comfortable using these tools is to build lots of things.

It wasn’t clear to me from your post. It wasn’t clear to me from your post - have you done all of the algorithms challenges and projects yet? Those are the sorts of things you need to practice… It’s normal to get stuck while doing those sorts of projects and problems. When you get stuck, I recommend making a post with what you have so far and where you are stuck so we can help get you unstuck. That’s actually a pretty good approximation of how professional devs work together to get over hurdles. We’re here to work with you!

1 Like

This is like the math textbook observations an author casually makes that most students won’t make but understand anyway. It’s an example of a deeper conclusion you can make from a fairly simple starting point but takes a lot of experience or insight to make on your own to prompt you to look for such insights.

I think your hangup here is the negative indices. There aren’t any and a quick search for “javascript negative array index” will tell you why. The way multiply(arr, n) is written, it implicitly expects a positive n, so try a simple example with n = 3. Then the equality is just multiply(arr, 3) == multiply(arr, 2) * arr[2] or multiplying the first 3 elements of arr is the same as multiplying the first 2 times the third, which is true. This is the sole point of this lesson and equalities of this type are the basis of recursion. No other knowledge is necessary except that arrays are zero indexed.

I always attack abstractions I don’t understand with concrete examples (like n = 3 above) until I can understand the pattern the abstraction is using, usually without reference to the particular programming language. Then you can write the abstraction in whatever language you like and start investigating special cases where it may fail, like what happens if n = 0 or if n < 0, etc.

2 Likes

Hope, it wasn’t offensive cause that wasn’t my intention. Just wanted to point out both the positive and negative sides. Anyways, I’d suggest that for recursion you shouldn’t lean on what FCC has to offer cause it is a complex concept that many people have a hard time to wrap their heads around including me. Recursion is a very essential concept and hard to understand at first and for that you should look for resources that elaborate about recursion.
I hope you for you success. Keep trying, you’ll get it eventually. Humans are capable of achieving anything. So, don’t underestimate yourself.

Side note - once you start doing this, you really inhibit your learning. I’d go back to where you first started doing this and try to write solutions without copying… When you get stuck, ask questions on the forum instead of copying the solutions. The process of getting stuck and working through it is hard, but that process is the core of what programming is all about.

1 Like

Personally, I’ve come to realize getting such concepts right with seemingly little explanation is an indication of my level of understanding of the preceding concept. Of course I often find it frustrating and sometimes demoralizing when I don’t even know the first line of the solution (sometimes, I’m on a challenge for several days). I think FCC curriculum is deliberately structured that way to enhance the learner’s problem-solving skills.

1 Like

Part of the issue is that people tend not to read long explanations, so we make shorter explanations with the expectation that people can come to the forum if they need clarifications.

1 Like

Thank you for clearing that up that lesson. I started to doubt my own understanding of that expression.

Was about to write my life story then… let me just tell you what helped me.

Do a follow along YouTube tutorial or two using HTML, CSS and JavaScript. Doing this will give you some context, why and how we use JavaScript, why we might want to loop through and array for example. Having context was a game changer for me. Also, I came to appreciated the way FCC does things. YT tutorials are great for getting stuck in and giving you confidence. But, generally you will actually take away a very small proportion of what you did in the tutorial. But, understanding the big picture, writing some code and getting some opinions/background along the way is nice. FCC is coming at it the other way, focussing on the fundamentals, making you figure it out your self, and you writing your own code. This will create better retention of what you do.

But, in the end, volume is what is all about. Just do more and it slowly slots into place. If you get stuck find a different approach (i.e. YT tutorials) and then come back.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.