Building a good foundation to learn languages

I’ve been here learning on freecodecamp for a small amount of time and I’ve been truly enjoying myself although at times I feel that I am not getting sufficient information on particular parts of the lessons. So before I continue learning languages , I would like to know what should I be doing to build for myself a good foundation to learn programming languages.

I am currently working on the JavaScript certification (ES6 8/31) , and I feel that I would benefit from a resource that could show me and expand more on some of the basics and perhaps a more in depth explanation on how particular functions are executed. Just like the video in this lesson breaks down the process of recursion. https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion. That video helped me out a lot.

I hope that I am not being too vague on the type of help I am looking for, And I would appreciate any and all help . Thank you !

While you’ll have some favorite resources that you go to first (MDN is a good one), you’ll never be able to rely on one resource, or even just a couple. Part of what you’ll learn as you go along is how to be a good technical Googler and to skim resources quickly for quality.

1 Like

Hi,

I think it is best you mention what functions you want to understand in more detail so that we can tell you where to go to.
But I cannot resist giving you some general advice.

  • There are courses and resources out there, but a lot is learned by googling information and working on projects. For this you need the necessary terminology and FCC does teach you that.
  • But sometimes it’s hard to see how the pieces of the puzzles fit together and that can be extremely frustrating. Personally, I suffered for years from vague-itis. There’s is this space in between beginner and upper-intermediate that you need to fill but the courses you find are either too easy or too hard or not relevant for what you want to learn.
  • What helped me most of all, besides FCC of course, was CS50 (on EDX, it’s a Harvard course), an introduction to compter science. It’s not easy but you can do it at your own pace and take the free or the paid version. The teaching is great, the projects you build are great and you learn the computer basics you need for any language, you also learn C, javascript, python and SQL.
  • I also found some great courses on Udacity. A lot of them are for free. The paid courses are quite expensive. Try ‘networking for web developers’ , ‘intro to ajax’, 'object-orientjed javascript (advanced and absolute fantastic course), ‘linux command line basics’.
  • I’m sure you’ve heard of MDN, the best and most detailed resource there is for javascript. It took me a few years to understand the articles on MDN, the language used is technical and tedious but accurate and often you find great examples there.

If you have more specific questions, ask.

Greets,
Karin

2 Likes

Sorry I was a bit too vague in my explanation but its hard for me to find a medium between vague and rambling.

To be honest the advice you gave me was exactly what I was looking for and for. Once I get home from work I will in all likeliness spend my few hours researching the resources in your reply.

Regarding MDN, I began using that about a week or two ago and yes , the first couple of times I looked at the explanations and shamefully just exited out the page. Although the last couple of times I’ve used it and it has helped me out tremendously. The only thing that is giving me issues is the use of terms I have yet to learn and I am trying harder to instead of glossing over the fact I don’t know that term yet is to look it up and learn more about it before moving forward. I guess too I feel that im progressing slowly but I dont have anything to compare my progress to.

When it comes to functions that I want to understand better. I had made this post about Grasping the rest parameter and the explanation that was given to me was good, but I think I am not expressing my question properly or its just me and im not understanding a perfectly good explanation.

This is what i feel i’m failing to understand about the rest parameter in the function:
const sum = (…args) => {
return args.reduce((a, b) => a + b, 0);
}

"One last question since b is the current value. when this particular part of code is executed does the code go through iterations where b will equal the value of each entry in the array at one point or another when it is (being) added to a or is b equal to the sum of the array already ? "

Sorry for typing so much and I cant thank you enough for taking the time to give me that advice !!

This is normal. MDN (and many other documentation resources) are written as resources for people who are comfortable with programming and the way documentation talks about it. When you’re first starting out it can feel like looking something up in a dictionary, only to have to look up more words in a children’s dictionary. This is why I try to remind people that learning how to read technical documentation and discussions is one of the skills that you build as you are learning to code. It’s also one of the reasons why it’s good not to have everything you need explained in a single beginner-friendly resource. You’re still learning to find, select, and understand technical resources, but you’re getting better. Never feel shy about coming to us here on the forum with something like “MDN says __________ but I don’t understand the ______ part.”

2 Likes

I appreciate that since at times it does feel as though I’m being a bother. Also it seems that the skill of learning to read technical documentations and discussions is one you learn in the process of learning the language.

I really appreciate the replies, it certainly helps with the feelings that comes with the struggle of learning to learn (if that makes any sense).

Hi,

DON’T BE SORRY, you are not typing so much and you are definitely not a bother.

Yes, you’ve hit the nail on the head. Reading technical language is a skill. It takes knowledge of terminology and a technical “background”. This background is an understanding of how all the pieces of the puzzle fit together. The problem is, you don’t know how many pieces there are and you have no picture of the puzzle. But you are learning. It takes time but you will automatically become more comfortable with resources like MDN if you keep learning and working on projects.

One of the most difficult and important things I learned is that technical language is quite literal. You READ EXACTLY WHAT THE TEXT SAYS. I studied literature so I’ve learned not to read a text literally. I interpret, associate, ask myself what I feel when I’m reading a text and look for metaphors. All this is useless when you are reading an article on MDN. That technical language used to frighten the hell out of me. Once I understood that I simply had to literally read the text word by word and take in all the details, I learned much more easily. I can now empathize with techies that do a course on literature and read a text quite literally and get stuck on details. It’s really a different skill.

About reduce:
Well, I looked it up on MDN and I understand it like this; you’ve provided the optional initial value in your function. On MDN I read:
accumulator will be equal to initialValue , and currentValue will be equal to the first value in the array. On the next interation b will equal initialValue + the previous currentValue and so on. There’s this beautiful table that shows the values of a and b through each iteration on MDN.

I don’t understand your problem with the rest parameter. The code works (though I had to type three dots manually, copying your code didn’t work).

Greets,
Karin

THANK YOU ! This answers exactly what I was trying to ask (gotta learn how to better ask questions too). This really stumped me during the lesson because while I could use the reduce method I wasn’t really understanding what exactly was happening, and I saw that table you mentioned and it shows me that what I thought was happening is exactly what is happening. Being able to visualize the process of the function helps me to apply it later in a challenge.

What I am doing currently to try and help me with the technical terms is while I do these lessons I have my notepad open and once I’m done with the lesson I go and type up a summary of the lesson and what I learned . Which since i started doing that has helped me out a lot to retain the information.

Again Thank you very much both you and ArielLesie . I really appreciate you two taking the time to help me!

1 Like

You are very welcome!