Hey guys, I’m almost done with the basic algorithm part of javascript curriculum, but unfortunately I’ve lost my flow in learning coding. I was doing it consistently for 2 weeks, finished html/css, went through half of javascript, but then didn’t code at all for the past two days.
In learning, I’ve found that you don’t want learning something to be too hard, rather is should be just hard enough to keep up with your skill progression, but I haven’t been able to solve any of the algorithm questions on my own.
It’s very stressful to consistently not know how to start a solution. I try to keep in my mind the fact that I should just understand what is going on and that should be enough, but it’s still very stressful to spend an hour on each problem only to not progress into understanding how to solve the next one. Thought I’d post this here as I’m sure others feel or will feel the same way.
Don’t stress too much. Every time I take a vacation I come back completely confused by my own work. When you take a break, I encourage you to try to pick up where you left off and look up the pieces that you don’t remember (as opposed to repeating previous work).
Thanks. I don’t even think it’s the few days off though it’s just that my overall understanding may not be where it should be. I was tempted to go back to the basic js section and redo the second half, but as you said I thought maybe not to.
Once you can’t solve 20+ in a row it’s hard to keep the brain from thinking you’re failing, but I’ll keep at it
Here’s an interesting chart I was referring to when I said “flow”
I get this feeling as well.
One moment, I’m breezing through tasks that basically only require me to change 1 or 2 characters, and the next some logic puzzle thing comes along that expects me to know things not discussed in any of the previous tasks, and shows an example that uses language that looks like they should work, but for some reason this time only psuedocode has been used so you finally look at the guide and realise some arbitrary letter should or shouldn’t have been capitalised.
When I first started I couldn’t solve one algorithm question, but what I did was I try it and then look at the solution and figure out the pattern to the problem. This taught me the basics of using for loops to loop through arrays.
Coding is a lot like math in the sense that the first couple algebra problems you solve are tough, but once you know the pattern it becomes easier.
Just keep going, switch up what you’re working on if you get stuck. If you get stuck trying to solve an algorithm touch up on front end stuff or try and build a project and then revisit it. Best of luck!
Don’t worry, this happened to me too, I was really stuck on basic and intemidiate algorithm challenges, just copy pasted the solutions to pass, then i realized that it can’t continue like that, came back to the first algorithm challenges and actually tried to come up with a solution or try to understand the given solutions, I think i went through the whole algorithm challenges section 7 times before being actually able to solve every problem.
this was in October, now I have my JS certificate and 26% done on both project euler and rosseta code challenges (have a look if you want, much harder), conclusion is, always keep on trying and you’ll get there!
@ArielLeslie What I’ve been doing is looking at the hints, solutions on youtube, or I’ve noticed there’s blog posts like this one with a solid explanation.
Do you think these are good methods of learning? I was thinking maybe I should just google the concepts (ie google how to split an array into groups , then google split array based on length…) and see if I can solve it on my own, but haven’t been able to.
I’m not saying that one should never look at a solution. They’re there for a reason. And I’m not saying that you don’t learn anything by looking at a solution - being able to quickly read and understand code is a skillset. However, I do not think that looking at solutions teaches you how to solve the problem. For the five years that I’ve been part of this community, I cannot begin to tell you how many hundreds of times I have seen students fall into a trap where they begin looking at solutions because they think that they are learning best by “reverse engineering”* the solution and soon find themselves realizing that they have had to look up every sequential solution. The lessons are progressive and if you don’t know how to find the solution to early challenges yourself, you’re extremely unlikely to be able to solve later challenges.
This is one of the reasons why here on the forum we do not give working solutions. We talk to people about what they’re doing and/or give additional information so that they can work through the experience of solving the problem.
*that’s not what this phrase means, but I see it used this way on a regular basis.
I totally get this. It’s crazy how stressful the learning process can be.
One of the big things that gets lost in self teaching is review. It may feel redundant but review is a major part of formal schooling.
It’s ok, very ok, to go back and do things again and again.
Professional musicians, athletes are always reviewing and refining the fundamentals. That happens naturally in coding jobs because they’ll come up again and again.
It sounds like you made a Herculean push and now might be a little tired. That’s ok. Start with bite sized pieces.
I think short term consistency is over-rated. If you coded for 2 weeks and ONLY took two days off then I’d say you’re doing too much. Your brain needs more time off to learn.
Musicians, artists, programmers all make the same mistake thinking they have to eat, breathe, live it! And then they get really sick and miserable and can’t understand why they’re not good enough.
On the algorithms, I been through the basic ones 3 times now on FCC. Every time I do them, I solve them faster. After I finish one round, I don’t look at them for months. I then do other kind of challenges related to JavaScript (how to make an accordion, how to make a modal, Lots of cool exercises here: https://www.w3schools.com/howto/default.asp). Don’t look at the JS, just try to figure it out and see if you can come up with a solution. Then check the answer.
Solving problems in coding isn’t all about algos. So don’t sweat it. Your brain will eventually start wrapping around how computer’s “think” and you’ll be solving problems more easily.
Take breaks! Watch movies! Go on a date (on Zoom since we’re in a pandemic)!
Message me if you ever want to code together on CodePen.
@am93 A lot of people feel the same as you.
My advice is to …
Think about it hard, break down the algorithm step-by-step until you figure it out.
Do a lot of research on Javascript methods.
Console.log the output to get a better idea of what the code is doing.
Another thing is that there are many different ways to get the exercise done. My solution is often different than the solutions provided.
After a while it get easier and easier because you learn what you can and cannot do with the language. Practice makes perfect.
@ArielLeslie thanks for sharing your experience. Once i see the solution 9/10 times it’s understandable, but I feel it’s tough to get started on each question. That’s why the research method is hard to replicate (ie the mozilla docs → solution). Would you suggest me to brush up on some of the basic js section again before starting Object Oriented Programming and moving forward from there?
@barrywbrewer@SixStringsCoder@brandon_wallace thanks guys. I set a goal for myself to complete html, css, and js from 12/18-1/24. I think I may have to lose the ambitious goal/speed I set (while doing html/css) for myself and just do my best everyday and see how it goes.
You’re right. Coding is much easier to learn with a fresh state of mind.
I’m not really sure what you’re trying to say here.
You said that there were 20 challenges in a row that you weren’t able to do. I suggest going back to where that started happening and seeing if you can do them now that you have seen the solutions and understood them (but without looking at them again).
What helped me alot was to first write down what I wanted to accomplish.
Create a step by step process of how you want to solve the problem and then slowly find a way to convert each step into actual code.
For example with the reverse a string you would do the following:
split up the word into individual characters
reverse it
put the word back together
Then you can google the following:
how to split up a string javascript
how to reverse in javascript
how to join together in javascript
Even if you have no clue how to approach the problem open up mdn docs to the appropriate section and start from there.
For example, if the problem deals with strings, open up the the string methods in mdn.
Same with arrays and objects.
Most of the methods names are pretty descriptive as to what they do. (Ex. array.split, array.join, string.endsWith)
That’s all you can do.
You just have to think big picture.
Ten years from now when you are an experienced working developer, no one is going to care that it took you 1-2+ months to finish the javascript section.
Don’t stress about it now. Just take your time and work on building a healthy foundation.
@ArielLeslie I meant that I haven’t been able to use the docs (ex mdn web docs) to get to the algorithm solutions on my own. This is why I used the solutions, but it seems you’ve suggested to go back to the point I couldn’t solve a problem on my own and redo them. Do I have a clear understanding of your suggestion?
Yeah. That’s more or less what I’m suggesting. I’m not saying that you have to repeat everything you looked at the solutions for, but I am suggesting that you might want to double-check that you actually can do those exercises on your own now.
There is a big difference between looking up syntax for single task and looking up how to solve an entire problem. Syntax is Google-able, but programming is at its heart the process of problem solving (just with really strict logical syntax because computers are dumb and super literal).
Practicing how to frame and develop a solution to a problem you haven’t seen before is critical to being a developer.