Rant / sharing my thoughts

Hello.
I have started learning somewhere around winter 2021, with being on and off, while being more during spring/summer. I’ve gotten my html css certification wasn’t easy but was doable.

I moved to the JS part, it was very hard understanding anything I was reading, even tho English isn’t my native language, I speak good english, also just adding I am a pretty smart person.

There was frustration, but I was enduring it.
Eventually I have gotten to the intermediate algorithm part, I am on Stream Roller challenge still.
I have to say, I don’t believe FCC is good for beginners and I feel there is a lot of missing knowledge here. My issue is I don’t have any issue coming with a solution of What I need to Do to Solve this.
My issue is just writing it in code, my feelings are that FCC just doesn’t teach you good enough on how it’s done.

Anyway, if anyone has a good book recommendation or some words I’ll be glad to hear.
Thanks for the read.

FreeCodeCamp does its best, but it also is only 1 source among infinite. I don’t usually recommend using it as the only source for learning concepts, finding problems, or practicing. I usually consider it more of a “framework” to start learning more than a 1 stop shop to learn everything.

Other sites like mdn, can be useful for reference/learning-random-stuff. Or using sites like codepen can support you while you build smaller projects or just play around.

This is normal, and actually expected. Learning to code is hard. There are finite ways to do something correctly, and infinite ways to screw it up. Throw in all the extra stuff that goes on that you may need to know, it can be a huge headache.

From learning the actual language syntax, to understanding the actual problem, to being able to think of a solution, to finally writing some code to “solve” the problem. It’s a multi-layer process that takes time to get good at, and can still blow up in your face as problems (and thus their solutions) get more and more complex.

I don’t suggest books too much when it comes to learning web-development. Things change too fast to make most books worth it. All the physical books I have on web development are out-dated. They are nice to learn specific concepts and techniques that could be used, but today there are better options that didn’t exist at the time of writing.

I’m not sure I understand this part. :thinking:

4 Likes

Fundamentally, learning how to express a logical process to solve a problem in code correctly and accurately is hard. There exists no explanation that makes it easy, similar to how there exists no simple explanation on how to apply calculus to every single problem where it may be helpful.

I’m lukewarm on the idea of learning code by reading a book. At the end of the day, reading someone else solving problems doesn’t really do much to help you do it on your own. Do you learn how to play baseball at a professional level by watching 1000 games of baseball?

That said, you certainly can search around and try different resources. Different resources work better for different people.

Looking back at your posts, fundamentally you seem to struggle with clearly expressing your “What I Need To Do” in small, actionable steps for a computer. Computers don’t understand rough ideas. They need exact, tiny steps. It takes a lot of practice to break down a problem into small, precise enough steps that a computer can follow your instructions.

2 Likes

I can recommend starting with a simple gui language like Scratch. It will give you some basics that you may not have and even though it is targeted at kids, they use it in the first week of CS50 which is Harvard’s University’s first level computer science course.
Something to try anyway.

I honestly don’t believe MDN is for beginners even though they explain every step, to me it feels like a dictionary for someone who is already an expert.

You might be correct, it just seems so comfortable learning from an actual book than something digital.

for example I’m stuck on steam roller challenge, I have gotten to the solution in words within a few seconds, but when translating my word into code this is the insane part.

You can get the idea but obviously not.
But I can workout build muscles, fix technique.

In here it feels like my right hand is my left hand and everything is backwards.

You might be correct, that this is my struggle.
For example for steam roller change which I am stuck now, I have an idea which should work took me a few seconds perhaps a couple of minutes to think of, but translating it into code everything mixes up and I am lost.

Thanks for your reply, it might be a good solution but I am not a fan of doing something else for learning something else.

MDN is a reference site, along with a learning center.

For example, you can learn about Array’s here:

Or general programming concepts from their learning center here, which is aimed at complete beginners:

I think these resources are nice as they present general knowledge without a goal. It’s one thing to learn how to solve X, it’s another to understand why X needs to be solved. It’s the general context that can be useful in understanding the “why”, which can be useful to get you pointed in the right directions to finding more specific answers down the line.

Another way to gain “context” is to just randomly “look around” the reference part of the site. It’s hard to know what you don’t know if you only stick to things you already know about. Randomly checking out different parts of the site might lead you to learning something you didn’t know about, or would have ever searched directly.

There are plenty of books that “stand the test of the time” that are worth reading. You could also learn plenty of stuff from an older/out-dated book, or find a cutting edge one now. But it depends on what you’re looking for.

At the same time, any higher level topic is just a google search away, with unlimited updated resources available.

You might want to ask for a specific topic to get some book recommendations, otherwise again google is always there to promote plenty of options :smiley:

This is generally called “having issues with the implementation”. Its possible the solution you have in your head might be “too generic”, or it might be really close to the actual solution, but getting it from your idea to the code might be where your having trouble.

Having trouble at the implementation step usually is tied with missing out on specific syntax or techniques that could help take your idea and make it a reality, along with “having an emptier toolbox” of techniques/syntax that could help. Its also possible your idea isn’t actually “concise” enough to get into code, for example “magically flatten arrays” is an idea, but not enough to actually solve the challenge.

Just for context, here’s the challenge:

If you’re drawing blanks, you could do a few things, such as simplify the problem into something you can handle and solve that. For example, what if the problem allows only 1 level of nesting? Or even something as simple as “don’t flatten the nested arrays, only count them”.

It’s hard to give step by step solutions to every/any problem. FCC did go over specific techniques earlier that could be used to solve this challenge, but its possible you forget about them, or just found them confusing.

There is one thing about this challenge worth pointing out, rather than “leaving to the reader”. Its **the solution can leverage recursion, as the input data follow a “recursive” pattern. Recursion by itself can be confusing since its essentially code calling itself, but it is a “key” to solving this sort of problem.

It’s possible to solve this without any sort of recursion, but it’s easier done with recursion.

1 Like

No offense intended, but this sounds like you’re not quite understanding either JavaScript syntax, or array-related concepts. Unfortunately most content that I’ve seen on the Web doesn’t sufficiently teach array concepts for beginners. I’d suggest looking for CS courses online to learn the concepts, like Harvard’s famous CS50X. There’s also this one which I just found: CS101: Introduction to Computer Science I (2019.A.01) | Saylor Academy

If you’re having trouble with JavaScript syntax that’s a secondary problem, but if you’re having trouble with the fundamental concepts, I’d suggest doing CS50X, or something else like it, before you get too much further. The goal for you should be to understand how multidimensional arrays work (too many resources I just Google’d don’t actually cover the theory behind this, and take a more literal language-focused explanation that probably wouldn’t help you).

Once you really understand array concepts, problems on FCC like the Steamroller should become really easy for you.

1 Like

I think ill give it a try, i do feel lack of basic knowledge, to me it feels like the cs course can add pieces to my missing puzzle.

I like the saylor course that you posted, the way they explained it sells to me.

Is it an issue that they teach it in java? They have mentioned that their knowledge is applied to all languages if I am not mistaken.

Java syntax is fairly different from JavaScript, but the concepts will translate to any other language.

Yes, very normal. This gets harder as you go along. As you go along, lessons will take longer and longer and will require more side research.

Eventually I have gotten to the intermediate algorithm part, I am on Stream Roller challenge still.

Yeah, algorithms are tough. And one thing that I don’t like is that FCC throws a whole bunch at you at once - I wish they could spread them out more.

But be assured that everyone struggles with the algorithms. The more you learn, the easier they get. And they also aren’t necessarily the most important thing - in 4 years as a professional coder, I’ve maybe had to do half a dozen intermediate algorithms and nothing I’d call advanced. It all depends on what kind of work you do. But they are good to learn as they train your “coder brain” and they come up on interviews.

Keep at it, you’ll get there.

2 Likes

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