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.
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 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.
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!
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.
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.
Welp, I’m new to the forum so I can’t post a link yet…?
This is the Udemy course @t-lyons is refering to:
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.
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
.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
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
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.