The functional programming section of the JS cert is making me want to quit

I’ve been working through the JS certification and it was going really well up until the functional programming section. I really struggle keeping track of what everything is doing in my head what with callbacks and higher order functions. I think the problem is compounded by the fact a lot of the code in using ES6 functionality. Just as I got used to how things were done with normal functions, arrow functions come along and really increase the brain fog as I look at the code. I don’t know. I’ve hit obstacles in FCC before that have been tough to get around. I know that when I have managed to get past something that has been giving me trouble, it feels amazing and spurs me on. But this just feels different. I’ve been banging my head against it for a while now. Has anyone else felt this way or have any tips to get through this. I keep feeling like I’ve hit my limit and that I can’t grasp the more in depth JS stuff.

2 Likes

I find when I reach a section like this, I walk away for a bit and look for supplemental items to get me further.

Look up Functional Programming in JavaScript on Medium and read some of the articles.
Look up tutorials
Take some video courses. Either on a site like Udemy or Stackskills, and/or look up youtube, kahn academy.

As the web progresses you will need to know this. Branch to get a better handle on the ideas then come back to the section later.

1 Like

I am in the same boat as you.
Functional programming has been a hard concept for me to get my head around. I actually just searched on Udemy for a Functional Programming class and found one I really like. You build a few projects using that concept. I’ve only done the first project but it’s help A LOT.

I suggest you another medium that will help you!

Good luck!

I also suggest taking a look at youTube, and specifically funFunFunction – he has a very understandable way of approaching the complexities of functional programming, and ES6.

But yes, taking a break and changing the scenery is often a great plan.

3 Likes

Thank you for your response. Yeah I’ve definitely learnt to supplement FCC with other things. I’ve been using a book called Head First JavaScript which has really helped me get through some bits I’ve found tricky. Thank you for the advice. I’ll look up some functional programming info.

It really is nice to hear I’m not alone! So thank you for responding. That sounds great about the Udemy course. Glad it’s helping you. Could you give me the name of it or link to it?

Ooh I’ve heard a lot of good things about funFunFunction so I’ll check him out. Thank you for the tip. Yeah, I was thinking I might do Harvard’s CS50 course just to give me some mental breathing space and then come back to finish the FCC JS cert.

1 Like

Welp, I’m new to the forum so I can’t post a link yet…?
When you visit the Udemy page search for “Functional Programming for Beginners with Javascript”.

1 Like

This is the Udemy course @t-lyons is refering to:

https://www.udemy.com/functional-programming-for-beginners-with-javascript/

It looks decent and is highly reviewed. When I get to functional programming I will probably check this course out. Thanks.

Everyone feels this way when they approach some new task they never did before. Difference between people who succeed and those who do not lays in mentality. One kind of people will say “I am not cut for this” and walk away or get discouraged. Second kind of people will say “Holy shit I don’t understand this”, but after a while they will go “But how cool it will be if I would understand id though” and make an effort to learn it.

If you have issues with concepts of higher level you just need to practice level before it little bit more. It is not about theory, but practicing it. Once you practice previous stuff actively, it will be engraved in your brain and next step becomes easier. Your brain is not going to learn shit by reading theory or technical documentation, that is not how our monkey brains work. Monkey see, monkey do, so just stop reading and start doing when you feel like you are stuck.

You do not need to keep track of all of that shit. Just like you do not keep track of English words you are using right now. Just take a break from learning and try to make random shitty stuff in JavaScript. No need for fancy pages, just blank page with random elements will do. Make one and go use JS to play around with it, that is what JS was created for. Google how to do something with HTML element using JS when you want to do it but do not know how. Once you start actually using it instead of learning, it will all click. Mistake lot of people do is they just try to learn more and more without ever using what they learned on previews step.

1 Like

If your feeling like your struggling learning “new” stuff in JS, i’d say slow down and make sure you actually learn each new concept instead of jumping right in and feeling overwhelmed while trying to understand multiple new concepts. ES6 is syntactical sugar over what you should already know, you don’t need any of it, but it’s useful in many cases, which is why modern JS code is usually “easier” to write/read than older JS. But with this comes new concepts and learning curves. Feeling lost while learning these concepts means you need to make sure you understand the issue each new concept is trying to solve/help with.

For example Arrow functions have some pretty interesting syntax but function more or less the same as normal functions (there are fundamental differences in how they work, so they aren’t a 1-to-1 replacement) The only way to understand the syntax is to use it and play around with it so its less like magic, and more like just another tool in the toolbox.
There’s no reason to not play around with anything you don’t know, just hitting Ctrl+Shift+j in Chrome will open up the dev-tools and you can type away into the JS console!

The idea of hitting a wall and feeling like “I can’t ever figure this out” is a fallacy, you can find the solution to any problem if you put your mind to it, and keep working on it. You only really fail if you say you fail and give up. So it’s up to you if you want to find the solution, and you have the time to devote to wrapping your head around it. I had at least 3 years of day-to-day programming “experience” before running into Functional programming concepts in JS. I had a hell of a time figuring it out I wrote out at least 50 examples of ES6 code, to learn .map, .reduce, .filter, and .find. It eventually became just as second nature as writing out a console.log. It’s not something you can magically just know, you gotta devote time to learning. How much time depends on you, but thinking it takes no time at all is the wrong approach.

Finally, it usually helps to use multiple resources in a “shot-gun method” of learning. Where you look into multiple resources to get an understanding of the same concepts. I personally think MDN is the first stop anyone should go to for references, and learning almost anything web-development related. For example, here is the document on arrow functions

Finally, I want to point out that nothing beats just bashing your head over the code. The more you use it, the more you become familiar with how it works. Stuff like program an app without any if statements, or refactoring all your function calls to arrow functions in a program are good ways to force yourself to learn new approaches and overcome the challenge.

Goodluck and keep developing :smiley:

4 Likes

You don’t need to keep track of anything, the documentation is there for you!

For some things you will use them so often that you will not need to read the documentation page, but now and then a refresh may be useful also for those

1 Like

Thanks for the advice and encouragement. I really appreciate it! The correct mindset doesn’t come naturally to me but I just need to force it and crack on. You’re right about me needing to get my hands dirty and make some things. I’m gonna try and make Yahtzee! Thanks for your input.

Wow. What a wonderful reply. Thank you so much for taking the time to type it! There are a few inspirational posts and articles I save to refer back to when I’m struggling with a new aspect of coding, and I’ll definitely be coming back to this one!

That’s so reassuring to hear that you had 3 years experience before you ran into functional programming. I think in this self taught way, you can get really hung up on trying to go through the material as fast as possible and worry that everyone else is going much quicker than you. Also really reassuring to hear you had to use the array methods many times before they became second nature.

I’m going to take some time away from tutorials and actually apply the things I’ve been learning. I’m gonna try to make my own version of Yahtzee using JS. Thanks again for the really encouraging comment.

1 Like

Banging my head as well.

You’re right, everything is constantly changing in tech and you must develop the skills to search multiple sources for answers.

Awesome reply, worth reading for all of us who struggle or struggled.

For everybody struggling with JavaScript certification, I found this website to be a gold mine.

https://javascript.info/

it has a " two part course" which takes you from “Hello World to Hello Universe” - basically :slight_smile:

The site is divided into 2 main sections and supplementary materials. I use the site together with FCC´s JS certification course.

Try it out :slight_smile: It helped me loads.