Slow Learning Javascript

I would like an honest opinion on this. I did the Front End Certificate from FCC from June - December of last year. Since End of December I have been working on the Introduction to Javascript section. I have had to look up the answers to the last several challenges (I am currently on " Testing Objects for Properties"). I have 19 more challenges to complete the Basic Javascript course. I feel I am understanding the basic structure/syntax structure of the problems with only a few tests failing. However for the last 5 I have taken I have stalled in my learning.It takes a week sometime to get through a challenge. And I have been on " Testing Objects for Properties" all weekend long. I try to supplement my learning with javascriptinfo.co, MDZ, Youtube (RealHardCandy https://youtu.be/U9jx2ioaEVU) and my notes (this sometimes takes up to hours). I really want to get good at this and thoroughly understand and comprehend the basics.

My question is, in addition to the Read-Search-Ask approach I was wondering if anyone could give me pointed on how to be a better problem solver with FCC? I desperately do not want to look up the videos for these but sometime have no other option. Is this normal to spend so much time on a problem? How can I just cool out, relax, and enjoy the process? Is this just FCC introducing us into being a better web developer/ programmer?

4 Likes

JavaScript is, I believe, several orders of magnitude harder than HTML.

Some of the concepts can just take ages to click. It reminds me of watching my daughter learn to ride her bike. She just couldn’t do it for so long, until one day she just could. She just kept needing to get back on the bike.

It can help to do several things:

  1. Take a complete break. You’ve been banging your head on the problem for hours. The problem will still be there tomorrow, so will your head. Go do something else.

  2. Take a tangential break. This problem is hard. Solve a different problem. It’s probably easier and will help you reinflate your ego.

  3. Keep going. Who knows, maybe the solution is one well crafted console.log away…

7 Likes

Thank you. Perhaps I should change to Udemy. People on Twitter keep pressuring me to build stuff when I’m not sure if I’m ready to build in the week. I go into the weekend thinking I’ll get a lot done and end up with nothing. I read document after document and video after video and still can’t answer the challenge right. I’m trying to work on my problem solving skill, as I know this is what this section is trying to do. The user story problems have got me confused with the actual problem. I’m not the only one.

I like seeing some good boilercode and kinda reverse engineering whats going on. It helps me get a feel for what should be where when trying code out. Congrats on the Front End Cert!:vulcan_salute:

For starters if you flew through the Javascript section, I’d question how much your actually learning.
Learning programming is not an easy task. Learning HTML/CSS is much easier, simply because they are standards and just require learning syntax. Javascript has syntax, and requires you to program it. It’s like comparing knowing vocab words (syntax) and being able to write eloquent poems, they are just on totally different levels.

I’d like you to ask yourself why does it take you a while to finish challenges?.

  • Is it because you don’t know where to begin?
  • Is it because your fighting bugs?
  • Is it because you feel like you have no idea what your doing?
  • Is it because your typing slow? (I doubt it hehe)

It might be a combination of the first three, so lets address them.

Is it because you don’t know where to begin?

Generally if you feel lost on approaching a problem, you should lean on what you do know about the problem. Taking the Testing Object for Properties problem as an example, the problem relies upon the following:

  • Knowing how conditionals work in Javascript (if/else statements, ternaries, etc)
  • Knowing how functions return values

So you should know the above two concepts, and using the example provided, you should be able to understand how to use the hasOwnProperty api. If not, looking it up on mdn. Using external resources is very convenient, easy and recommended.

Now if you don’t know the above concepts you should stop, and back up and go learn those concepts again. Programming builds upon itself, so if your foundation is lacking, you will have a tougher and tougher time grasping more difficult concepts. This makes scaling your learning not sustainable with a weak foundation.

Back-track and verify you understand supporting concepts, if you have a tough time on X that uses Y, go learn Y and then repeat doing X. Repetition is required for learning, don’t think finishing a challenge means you know something.

Is it because your fighting bugs?

If your code isn’t behaving as you expect, the first question you should ask yourself is “how does it currently work?”. One of the most important things to know about programming is understanding the problem is more important than solving it.
The reason for this is there are endless resources on how to do X, but only limited resources on why something is doing Y. Plus, knowing why something is working a certain way can be a door to learning another approach for something else.
Learning thru struggling is more important than solving the problem when your starting out. Embrace the struggle of dealing with bugs, and finding the solution. This is what experience is made of. Learning to soak up the why something doesn’t work is more important than learning how to make it work. Obviously knowing how to fix it is good too, but knowing what’s actually wrong is always more valuable.

Is it because you feel like you have no idea what your doing?

If I asked you how much do you not know, you may answer with a few things. Now if I asked you a question on a topic you have no clue about, and never heard of, the list of things you don’t know grows a little larger. The reason for this is you know what you don’t know, but you don’t know what you don’t know (crazy hu?).

What I mean by this is you can only try to learn things you know about, and know you don’t know (like some concepts in Javascript), but there are things you may never have heard about, or experienced. I bring this up because programming and web development is a large field, requires a lot of knowledge and you can’t be an expert in everything. But if you know you don’t know something, you can always go out and focus on learning that topic.
So if your just starting out programming Javascript and feeling like “I don’t know what I’m doing”, you need to go out and find what you don’t know, only then can you try to learn it.

So now you may ask “So how can I find out what I don’t know”. It’s simple, you have a goal (become a web developer) and try to do what you want to do for that goal. (build web apps)
Odds are you will hit a wall pretty quick for one reason or another (programming JS). At this point you have an arrow pointing at what you don’t understand.
Taking this further, you can dig down into specific topics that you should focus on. (Testing Objects for Properties) At this point you have a very clear focus on what your missing and since you already mentioned a number of extra resources, you have all the places to get your answers.

You will need to put in time and grit to learn JS, but I believe anyone can do it. The only way you fail is you give up. Keep grinding against the problems, understand them, look for answers, and build up your skills. If you don’t understand the solutions dig into why. Stay curious and don’t be afraid of failure. The struggle is where you learn, if you skipped over problems before “cuse they are too hard”, then go back and re-do them until they become simple. If you have problems or bugs, dig into them until you understand why the occur.

I believe in learning through failure. Spend 5 hours trying 50 different ways, only to get it right the 51st time means you learned 50 new things. If you just got plain lucky the first time, you missing out on all that extra experience when failing. Its fine to look up solutions, but be sure to back-track and re-attempt the problem later from scratch to re-enforce what you learned. Repetition is key in learning almost anything, no one figured everything out from scratch haha.

Keep building things, stay curious and keep learning, good luck :smile:

PS. I consider myself a good problem solver in general because I’m competitive. I believe a problem only beats me because I give up. Being able to take a problem, break it down, under stand it, and over come it is extremely rewarding but requires patience, time and grit. Keep up the process, and enjoy it as much as you can, since there will always be a day where you just plainly get stuck haha!

6 Likes

Hey man, there’s no rush. I think I started learning in late 2016, and came to FCC in 2017. Hoping to get my first job later this year. Props to the people that want to get a job in 10 weeks but it just isn’t for me. I’ve taken days or weeks on problems or projects and enjoy having multiple things to work on, take a break from, or go back to. I want to learn not only how to do this, but how to enjoy it, and I think mental self-flagellation can only achieve the former.

1 Like

Thanks so much for this. Inreally appreciate it.

That’s the thing. I really want to enjoy it, but sometimes it causes me mental anguish. Trying to extract everything I need from FCC’s limited word problems, then finding out (even after writing psuedo code) that the solution required something totally left field is frustrating. I’m not enjoying FCC at all. Feels more like a mind fuck than trying to help us become developers. I’m 5 months into learning Javascript on various platforms and have built nothing. I feel I am perpetually in a never ending swamp of online tutorial, videos and programs. Devs everywhere tell me I need to build something but I don’t even know how/where to even fucking start because I’m still on tutorials. I’ve got a rotation of various unfinished resources. I feel like I’m massively failing at this.

To understand a FCC exercise’s solution I’ll go down a pandoras box of resources explaining the concepts in various ways and still not understand the solution.

I don’t know if it may help you, but before coming here I followed tutorials and completed the projects on Khan Academy, both for Computer Programming and Computer Science, and I had no difficulty with FreeCodeCamp JavaScript course


Maybe you would benefit with a different kind of learning, maybe where you can have one on one interaction with an instructor?

Have you tried pair Programming with someone else?

Have you ever thought “I want to build this”? This is what brought me to review with joy all the object oriented Hell, because I want to build something specific

1 Like

I was hoping to complete Basic Javascript before I move on to Javascript30 (Wesbos) and Gordon Zhu’s code along. But I realize I may have to move on from FCC. If these last few challenges are killing me I know Record Collection challenge is gonna be the death of me. Perhaps I will come back to it in a bit.

1 Like

Maybe you need some more of the basics, or work on your problem solving skills (as in, solve things in pseudo code before coding them)

1 Like

I agree. This article is sort of helping me with that.

3 Likes

I’m on “Record Collection”. What’s your advice? because I feel like this is the end of my life

Hahaha, well said. I have messed around with web development since age 11 and I am now 38. HTML was pretty simple, CSS was a little bit difficult to comprehend, but I would say that JavaScript or any web programming language is probably 50 times more difficult than both HTML and CSS combined. I still can’t program in any of the languages. It was just last night that I first started entering usernames and passwords into a database with php, and it started to click.

My main annoyances are making drop down menus in a NAV BAR without it collapsing and learning the beginning stages of programming languages. A lot of the commands are the same or very similar in the different languages though.

1 Like

break it down to the smallest requirments, and each requirement to the smallest steps.

Read-Search-Ask

If you get stuck ask in the forum

I feel like the ES6 portion of the curriculum is pretty difficult and not extensive enough to really make an impact. Is there any other external resources where I can learn ES6 much more thoroughly? (I am looking for free resources) :grinning:

ES6 is just JavaScript, “ES6” is the version name, try searching on MDN for the topics that you feel you need more infos

ES6 has introduced many more things than what the fcc curriculum teaches about, in the same way that the javascript language is far more vast than this.

The You Don’t Know JavaScript book series has a book on JavaScript