Whether this is something that you think is worth struggling through is 100% up to you. There is no innate skill that makes people capable of learning to write code. You absolutely can learn it. Some of that learning process is going to be frustrating and painful. Whether you can accept that is your call. There’s nothing wrong with deciding that something doesn’t align with your interests.
It does sound like they methods that you’ve been using so far have not been successful. You mentioned that you have resorted to copy-pasting and admitted that you know it isn’t helping you learn. It sounds like you’ve identified what one of the problems is then, so what can you do to fix it? There’s nothing wrong with getting stuck on challenges. We all get stuck. I’m a senior developer and I get stuck all the time. The important thing is what you do when you get stuck. We all have to learn techniques for researching, re-contextualizing the problem, and asking for help. As a beginner, asking for help might be a tool that you have to use often. That’s fine. One of the things that we try to do here on the forum is helping by nudging people in the direction of the next step. We might clear up a single misunderstanding that you have and see if you can make progress from there. We might suggest a resource to google. We might give you someone to talk through the problem with to organize your thoughts. We’re happy to do it.
Do what you gotta to do to get what you want. Decide if you are willing to do what it takes.
Do you want to be a programmer? Then do it. Have you tried and decided that you don’t like it? Then don’t do it.
I agree that for coding is not something in your DNA. It is difficult for everyone. For some people, certain things are easier, certain things are harder. I think that most anyone of at least average intelligence and focus can learn to code.
I used to work as a guitar teacher. I had a student that wanted to learn jazz guitar. I worked with him for years, and he just couldn’t get it. But he worked hard and eventually got it. He’s now an excellent jazz guitar player - he earned it.
If you didn’t get JS, go back and start it over. Try a different curriculum. Just keep at it.
What sucks the most isn’t the fact that I’m stuck. I know learning how to program takes time and effort and can be a painful process. However, what frustrates me the most and makes me want to give up is seeing no significant progress. What makes people continue learning a skill is the satisfaction and fulfillment they have when they learn new stuff. For me, that fulfillment just isn’t there because I feel like I’m not learning anything. I’m just going through the motions and reading documentation, watching tutorials, trying to write code etc and trying to understand what I’m doing. I’m not learning things, I’m barely going through things hoping that my brain will process them at some point.
I don’t like programming but I want to learn it because it’s a useful skill to have and it’s the only career path in my country that would not result in me starving to death or being unable to pay rent and bills. I know most people think you must be passionate about something in order to learn it, but I unfortunately know a lot of people who are passionless about their jobs (even developers) but they do it because it offers them a stable and good income. I’m headed down that path too and I don’t mind it, I barely liked any other job that I’ve had so I won’t have issues in this department.
However, not being able to grasp programming, not even the basics, makes me worried that I’ll never be able to do it. I’m quite conflicted.
Also, your story about that student who couldn’t play guitar inspired me a bit. I tried to learn how to play guitar too, a few years ago. After one year, I gave up because just like my situation now, I was not progressing at all so one day I ditched my guitar and never touched another guitar again. Your story does give me a bit of hope, though I’m worried that I’ll do the same thing with programming.
Then don’t become a programmer, you’ll be miserable.
it’s the only career path in my country that would not result in me starving to death or being unable to pay rent and bills
Wait?!? Everyone in your country that isn’t a programmer is homeless and starving? I find that extremely hard to believe. There are laws blocking you from any other gainful employment?
I barely liked any other job that I’ve had so I won’t have issues in this department
So it sounds like an issue with enthusiasm. What inspires you? I know it’s tough during the pandemic where everything seems bleak, but there must be something that inspires you.
There is nothing wrong with working a job that you don’t like. But presumably it would at least be something you are good at. But coding takes a while to learn. But I do know people with high paying jobs they don’t like. They don’t get enthused about their job, but they get enthused about the nice house they bought, and their 3 week vacation hiking in New Zealand. But I think a lot of it depends on personality type.
However, not being able to grasp programming, not even the basics, makes me worried that I’ll never be able to do it.
I would give the same advice I gave to musicians. Figure out your two biggest weaknesses and work on them until they are strengths. Then figure out what you new greatest weakness is.
A mistake some learners make is to move on before they understand. You also have the opposite problem - they are paralyzed with perfectionism. I think it’s good to keep moving, but if you find a point where you think some lack of understanding is holding you back, then make a little side quest.
Another mistake a lot of musicians make is to think that they have to work on everything simultaneously. Some of the best practice sessions I’ve had are just 10 minutes, focussed on one tiny thing. Sometimes you gain more from just focussing on one things. You don’t understand the difference between let and var? Set aside a little time and look them up on MDN. Look for some videos that talk about the difference.
Make a list of things that you don’t understand that you think you should. Keep the items as specific as you can. Don’t list “arrays”, list “array sort method”.
If you get stuck, ask the group. Write little test apps to make sure you know how.
But one of my teacher (in other field) said: You have to keep coming for practice. Everybody’s learning curve is different. Some learned fast in the beginning, stagnate in the middle, others might be slow in the beginning, fast in the middle, and so on. You never know if tomorrow is your “epiphany day” where your understanding “jumped” so high from this point to that point.
I always looked at hints when I’m stuck, event to the point of copying the whole things (not copy paste, but re-type), but when I solved the problem, I always asked Why this code works? How about if we did it this way? Change this variable, location, etc. Tweak here, there. See the result of my change, thus I could understand how a line of code affect a result. Then I made a comment on that line // this is doing this.
No, I don’t advocate to never look at hints/answers and keep banging my head to the door forever. (Almost) no one can be a master in Drunken Master style without someone teaching them how to do that style.
People always said, you have to pseudo-code before coding. At one point actually I did the other way. Copy the hint/answer, writing a comment on it, thus I create a pseudo-code out of each line of the codes.
It might works for you, it might not, as everyone’s learning style is also different. One thing for sure, programming requires us to keep asking questions, to ourselves to figure out why and how, and when we stuck, to ask others.
If front end isn’t your thing and I presume you’re learning this stuff for a job, why not look into other areas such as UX/UI design, Scrum roles, or Business Analysis ? Having front end knowledge is very useful in these roles without having to be a programmer.
This stuff is difficult but it’s also why it’s paid well.
First of all, I’d like to point out there is a key aspect of your situation that is worth considering. Its that you have an internship at a company, and are performing work for them. Yes that work is related primarily to HTML + CSS, but that is a skill you acquired, and successfully applied within 7 months.
That means your endeavor to start web development was more successful than a vast majority of those who try.
You can try to disregard this fact, but the fact is there. Many who try to switch fail, many more give up for one reason or another. But you have gotten to a point many would love to get to. “Just a chance” many ask for, well you have a chance, but your seeing what you fear. That you can’t continue, or you can’t do this work, or aren’t cut out for this.
Well you probably said that at some point when doing your HTML/CSS. If not, then you were lucky. Now is the time when you hit the “Valley of Despair”, where you realize how much you don’t actually know. Such realizations can make even the strongest cower in fear of failure. Fear of failure, or the fear of the unknown, or even the fear of something you don’t understand can all be a contributing factor to take your feeling of “I wanna do this!” to “I can’t do this!!!”.
Ultimately, you have gotten actually pretty far if your working for a company, and successfully completing tasks. So even if you 100% stop now no one can take that experience away from you. However, it sounds like you want to continue moving forward, and are struggling… That’s what we are here for, but its worth keeping in mind where you’ve been, before taking on the challenge of where you need to go next…
So it sounds like your JS endeavors are in limbo because your stuck in tutorial hell.
There are a few ways to get out of it (linked above is a resource form a certain @jwilkins.oboe on the topic!). But everyone’s path out of tutorial hell is different, as they get into it for different reasons, and thus must take specific paths out of it.
From what you’ve stated so far it sounds like you’re trying to take on more than you can chew in regards to achieving you expectations of learning. Its true learning difficult things is its own reward once you overcome them. However, if you have incorrect, unachievable, or unclear goals you can end up with a feeling of “failure”, or lack of progress, or frustration.
So this brings in what should be your goals? To “get back on track” means you know what the track even looks like. To no longer talk in metaphors, you should focus on understanding your short term shortcomings to learning JS.
This means focusing on as small of a problem as with how your learning new concepts. I’d consider nuking your entire assumption of what you know about JS and attack the concept from multiple angles, sources and approaches. Then verifying you know that single concept well enough to feel comfortable with before moving on.
Or picking up a legit textbook and doing the end of chapter problems, or going into codewars and doing low level challenges. If you get stuck, look at the solutions all of them and try to learn a few things from them, then jump back in until you start feeling more comfortable with these simpler problems.
Its to get you back into a “learning” rather than “achieving” mindset.
To spark some curiosity, and expand your “knowledge horizons”.
Ultimately if you feel burnt out about your struggles, you will need to recoup lost motivation. No amount of advice, tutorials, or guides will help you motivate yourself. Finding motivation is required to fuel you through difficult times. Where and how you get this motivation depends on your personal circumstances. Looking into “cool stuff” can help naturally. There are also other contributing factors, even some element of fear could help push your through, such as possible financial risk. Obviously scaring yourself isn’t the most optimal, but you get the idea.
Its possible you breezed your way through everything up until JS, and now feel like you’ve hit a wall. Such is natural, there will always be difficult things that we don’t understand. Tech moves fast, so continual learning is required. The key is to find a way to stick with it and not get burnt out, and find your way out of the valley of despair.
Good luck, keep learning, keep building, keep grinding it out
I would recommend you to do a programming course instead. Do CS50, it’s free. Learn how to solve problems, learn C maybe. Take your time with it. It’s gonna be hard sometimes. But, i think your main issue is with problem solving. So, take a step back and learn programming seperately.
Again, do CS50. It’s gonna be very hard. But, if you stick to it. You’ll make progress. Give every question atleast 25 mins of time before you see the solution.
Tha’ts it, i think you are reading a lot, and coding a little, it’s like learning to walk, the first steps are very dificult. You’ll spend hours trying to make a single working line of code, than less hours to make the second one. Open Chrome developers tools (ctrl+shift+J), and google any error you find.
Once you learned how to put one foot ahead the other, you’ll be ready to walk, running will require more effort.
Reading about something gives a good feeling of knowledge, TRYING to do what you read about is the frustrating, but necessary part.
It’s just like me writing this reply, trying to express my ideas in english without the knowledge of formal grammar, every writed line leaves me more doubts than satisfaction, but without the practice, i’ll not be able to improve.
Hello @drakaria ,
I think that you are too harsh on yourself.
Most of the tutorials and videos in youtube are heavily edited (and scripted) to make it looks really easy, most of the time are just a form of advertisement (used by the programmers to show what they can do) or entertainment. I think the problem is that they don’t show how many hours they spent thinking about the problem, what they had tried, they mistakes, google searches, etc. … they just go straight to the “perfect” solution.
I’m not saying that tutorials and videos are useless, but (at least for a beginner) the process (the “how”) is more important than the solution.
no matter how much I try to learn it, I still don’t understand it. I just lack the logic that is required for programming and I’m not sure if I can “build” that logic … it just feels hopeless
This is my opinion, but I don’t think that “logic” is the right word to describe the implementation of an algorithm using a programming language. A better word (IMO) is convention .An example: in JS NaN (Not-A-Number) is a number (JS has many examples like this one), another example: the call stack(this one make learn how to implement recursion really hard).
If the “logic” is so important, why most jobs requires years using specific frameworks and languages? The reason why most jobs require experience is because the second time that you do something is easier and faster than the firs time (you have the know-how(“conventions”)). Some people describe their work as web developers as “boring and repetite”. If you do something enough times, most things can be easy and “logic”/intuitive (so, most of the time experience is the important part, not being “smart”).
In this sense, if you want to learn how to program a theoretical knowledge is not enough, you need to learn about the craft(tacit knowledge). The customary recommendation to aquire this knowledge is: “just keep coding”, but that is not really helpful because this is not about repetition. A better approach is to find a mentor or someone that want to share what he knows. If you can’t find a mentor (or at least a community) you can try the “trial and error path” but this will take longer.
Cheers and happy coding
 Bisqwit has a really great video about this, he describe the process as “choregraphing”:
 When I was writing my calculator, I sought tutorials in youtube: they only implemented the basic of the basic and no tests … at that moment I realized that most coding videos on youtube are just entertainment
 “Program Development by Stepwise Refinement” 1971, Niklaus Wirth
… examples of programs are commonly presented as finished “products” followed by explanations of their purpose and their linguistic details. But active programming consists of the design of new programs, rather than contemplation of old programs. As a consequence of these teaching methods, the student obtains the impression that programming consists mainly of mastering a language (with all the peculiarities and intricacies so abundant in modern PL’s) and relying on one’s intuition to somehow transform ideas into finished programs. Clearly, programming courses should teach methods of design and construction …
 The idea of “divide the problem in small problems” also can be found in the paper (“Program Development by Stepwise Refinement”)
The creative activity of programming - to be distinguished from coding - …
It is here considered as a sequence of design decisions concerning the decomposition of tasks into subtasks and of data into data structures. The process of successive refinement of specifications is illustrated by a short but nontrivial example, from which a number of conclusions are drawn regarding the art and the instruction of programming.
Tacit knowledge or implicit knowledge—as opposed to formal, codified or explicit knowledge—is knowledge that is difficult to express or extract, and thus more difficult to transfer to others by means of writing it down or verbalizing it. This can include personal wisdom, experience, insight, and intuition.
Apprentices, for example, work with their mentors and learn craftsmanship not through language but by observation, imitation, and practice.
The key to acquiring tacit knowledge is experience. Without some form of shared experience, it is extremely difficult for people to share each other’s thinking processes.
oh dude,you are not only one who does have hard time. its normal. until i read all this i had my doubt. But im sure that most people who are not familiar with programming have hard time.
I’m learning too, so i had quite hard time with Basic Algorithm. For 90 % of that i was looking and questioning myself WTF im doing and i couldn’t do simple task as Convert Celsius to Fahrenheit, literally had no idea what to do,staring blankly. But thats normal i guess,we dont have experience and knowledge. I found on YT guy UsefullProgrammer and with his clips did it.
so today i started it again,on my own and its easier. now i have idea what to do. how to start. So i guess just to do it OVER and OVER and OVER until u can do it in your sleep.
I do hope that guys with experience gonna correct me if im wrong or doing it wrong.
Sometimes you have to focus on what you HAVE achieved.
Can i confidently use and replicate designs on Figma? No. Do I still put style on the wrong element because i dont always understand element relationships? Yes
See you are doing better than me already!
All I can say is that perhaps you haven’t found the course that is right for you yet (says me who is more than likely going to have the same issue)
I juggle between courses and projects because progress is not linear it seems. Some days you have an AHA moment.
I am willing to bet you could teach me, a never ever, something about JS .
I came across a site today, its called The Python challenge. Basically its logic riddles, doesn’t have to be Python. Give it shot
When you said, “Do something useful”, what was the first thing that you thought of? Break it down into it’s different parts and learn to do the parts and put it all together. For me, it would be:
connect to a server
handle any errors
upon success get some data
present the data
If the data was book information like title, author, price, ISBN number, and summary then put it into html with classes and style it. If it were many books (probably JSON data but could be XML) then I’d have to loop over it presenting each book in the same visual format. If the data were simple text it would allow me to focus on the parts that are new to me because I’m great at html and css.
Beyond that I’d learn to handle form submission data ( long detailed site survey forms ) and use it to send emails and do scheduling. Why? Those are things that I did before but had an employer that paid for pricey CRM services to do the automation. Probably lot’s of other practical things I just haven’t thought of yet.