Am I just not cut out for programming?

I started learning web development (Front End) 7 months ago. Started with HTML and CSS and 2 months later I started learning JavaScript too. It’s been 5 months since I started learning JavaScript and I still can’t write a single line of Js code. I mean I can but it won’t work. I can understand JavaScript in theory and I have a general idea of how it works but I just don’t know how to use it. I swear to god I literally DEVOURED every single JavaScript tutorial I could find on youtube, I also finished 2 courses on Udemy and did like 80% of freeCodeCamp’s JavaScript basics course. I tried working with it on my own personal projects but I just don’t get the hang of it, all I can do is sit in front of my screen and get angry because I can’t do anything with JavaScript.

What’s even worse, 2 months ago I landed an internship at a company. They’re not very helpful but they aren’t extremely demanding either. I had a project to complete but it was mainly HTML and CSS and I consider myself good with those, but I know I’ll soon need to dive deep into JavaScript and I know that will basically blow my chance of this company hiring me. I can confidently look at a Figma layout and clone it in HTML and CSS. It’s JavaScript that’s the problem and it seems like 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, I feel like I’m progressing on the visual/markup side but the programming side feels stagnant no matter what I do.

Even freeCodeCamp’s beginner Js course feels like too much. I did like 70% of it on my own, but after that point I couldn’t do it anymore and started looking at the hints and sometimes copy-pasting from there (even though I know it’s not helping). Even for the project that I was assigned to - I barely did any Javascript, I just left some of the elements without any sort of functionality and only did the stuff that I could find tutorials for, and basically everything from there was “monkey see monkey do”. I feel like I am literally out of options and don’t know what to do. I feel so stupid…I feel just retarded.

Is it time to call it quits with web development? I enjoy HTML and CSS (even CSS can frustrate me endlessly sometimes) but I know I can’t be a front-end dev without JavaScript. Literally everything nowadays is built on top of Js and Js frameworks. I’ve also lost like more than 50% of my initial motivation. I initially hoped I could become a successful front-end dev and I was really motivated a few months ago but ever since JavaScript started screwing me, I lost it all. I just can’t bring myself to write code anymore because I feel like it’s worthless anyway.

4 Likes

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.

12 Likes

Of course, ArielLeslie offers great advice.

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.

1 Like

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.

For instance, if you asked me to give you an example of something specific in JavaScript that I don’t understand, I wouldn’t know what example to give you because I genuinely don’t even understand what I don’t know. I am struggling so much with understanding JavaScript logic as a whole, to the point where nothing JavaScript related makes any sense to me. So it’s hard to pinpoint a specific issue when EVERYTHING is the issue.

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.

I don’t like 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.

Find solutions.

3 Likes

It’s your call, to stop or continue.

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.

1 Like

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.

It is going to get harder with React, Redux and so on but the fundamentals are JavaScript. A lot of learning this stuff comes down to your mindset and how you react when you get stuck. Sometimes when I’m stuck I just put it aside for a few hours and get back to it later only to figure it out right away.

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.

You’ve done multiple JS tutorials, and freeCodeCamp. Cool, do freeCodeCamp again, and pick up a book or two on JavaScript. You want to get out of tutorial hell, so try to stay away from tutorials and use alternate sources.

Furthermore, instead of trying to go from point A and B in terms of concepts, learn random ones to see what else is out there, and possibly spark your curiosity. Something as simple as creating a nodejs instance to play around with a JavaScript array method like find.

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.

Even going as “far away from JS” as understanding what a computer is, how the internet works, and the theory of computation from a math and theory standpoint can help.

All of these resources help you 2 fold.

  1. Its to get you back into a “learning” rather than “achieving” mindset.
  2. 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.

Finding motivation will help you fuel you through the path you setup for yourself, and that path should be to learn how to learn JavaScript. Your current methods don’t seem to be working so you’ll need new methods. Any method you haven’t tried before might be worth trying.

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.

Today you might have trouble learning JS, tomorrow it might be how to use the new React Hooks. Or even further down the line how to get system A to work with system B without running into problem C. To be a developer is to be a problem solver, the current problem just so happens to be how to learn JavaScript, which itself is used to solve more problems.

Good luck, keep learning, keep building, keep grinding it out :+1:

4 Likes

I am here to offer 0 help whatsoever but! I can tell you that I 100% feel your pain. I can write html, css, even PYTHON in my sleep but for whatever reason JavaScript makes absolutely no sense to me. I got my FCC JavaScript Certificate but I needed a lot of help along the way. I’m retaking it just to see if I can pick up on something that I may have missed but once I get to more complicated code its like my brain shuts down or explodes, whichever happens first-haha; but I digress. Just know you aren’t alone, you ARE smart enough to learn it and if this helps at all, then wonderful. Ah, one last note; I have heard from several developers that JavaScript has a pretty steep learning curve. To have to go over tutorials and lessons many times is not unheard of or looked down on. It’s a new language, literally! I wish I had the answers, I wish I had magic dust or elixor or something but, alas, all I have are words of encouragment and a virtual shoulder to ‘cry on’.

Just wanted to butt-in and say this is the most solid advice I’ve seen and I needed to see it, so thank you.

2 Likes

have u tried the Odin project too?
it is a lot of reading of different sources but I think it’s helping me to feel comfortable with JS (I’m still nub)

2 Likes

Hey,
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.

I used to leetcode, and knew CPP so learning JavaScript was not that hard.

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.

1 Like

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.

1 Like

Hey Drakaria, i just wanted to let you know that you’re not alone. i have also been struggling with javascript. while I was reading your comment, I kept feeling like I wrote it because our experiences are so similar. I have read books, watched tutorials, bought several courses but to no avail. I haven’t given up though and I feel you shouldn’t either, I can share some books and resources so that we can figure it out together

2 Likes

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[0][1].

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[2][3].

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[4] .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”[5]. 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)[6]. 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 :slight_smile:

Notes:
[0] Bisqwit has a really great video about this, he describe the process as “choregraphing”:

[1] 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

[2] “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 …

http://sunnyday.mit.edu/16.355/wirth-refinement.html

[3] 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.

[4] Convention Definition & Meaning - Merriam-Webster

a principle or procedure accepted as true or correct

[5] Chris Allen - Why Johnny Can't Code Good - λC 2017 - YouTube

[6] Tacit knowledge - Wikipedia

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.

1 Like

I look at hints all the time. After awhile, I could do it on my own. Don’t worry, it gets easier

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.