The problem with learning programming

You can’t expect everything.

58 posts were merged into an existing topic: Just a conversational thread about JavaScript

I think saying your opinion about someone’s teaching is okay. I know they teach for free and ı appreciate that. But hopefully they take this post to improve their future way of teaching something.

I believe they welcome suggestions for making freecodecamp better and better. :slightly_smiling_face: I am actually glad you agree that that stuff could be explained perhaps in a different way that is more clear to us beginners.

Because, I need a little help too.

You’re absolutely right. And because of you guys, I am strong enough to keep going. :+1: Thanks for helping everyone. :grin:

1 Like

Yup, this is why I love the FCC community, because there are a lot of people that is willing to help others that is really in need. Also the fact that they will receive feedbacks is just the best thing about forums like this.


If you want to contribute to freecodecamp, to help improve it, it is an open source project: it came together from the effort of hundreds of people, and it keeps improving thanks to hundreds of people, you can be one of us.

you can read everything about contributing to Free Code Camp in the contributing docs.

1 Like

Leaning programming is not a difficult task. To learn any programming language means to implement the data structure and use of particular language format. Keep practice it again and again until you get success.

1 Like

My thoughts exactly. I agree with you @SarbjitGrewal. I must acknowledge that most programmers are good at what they do i.e. coding but they are very clueless about how learning takes place. Unfortunately there are tons of tutorials labelled as beginner friendly but when you look at the content, language used and how they are structured, most learners will have a negative learning experience and that includes FCC to some extent.

Programming is not harder or easier than any other discipline out there but what makes it hard are the so many clueless instructors ( but very good programmers) producing ‘lousy’ tutorials. This helps perpetuate the notion that ‘programming is hard’ yet it is not. You can be good at it with time and effort if you follow the right course. I honestly think before a tutorial is released on a platform such as this, it is thoroughly reviewed otherwise instead of helping people learn, you will find you are doing the complete opposite i.e frustrating the learning process.

1 Like

i agree a little, (not trying to hijack @SarbjitGrewal @firdavsiQ ),
some of the excercises i see in “great” JavaScript books (which im currently learning) completely throw me, until i realise they have added some fancy syntax to their example code that isnt necessary to learn the principle being explained. A teacher needs to lose their ego at the door as best they can, and not use the teaching as an ego booster to show “how much they know” or “look how cool this feature is” or "this example is similar to xxx in ____ (enter another language here!!). I also don’t understand the need to show a beginner “look how great you can simplify this code”, when a beginner (i.e. ME) barely knows how to code at all in the first place! Improvement in coding should come AFTER you know the basics. Nobody runs before being fairly competent at walking!

Ive lost a ton of time going backwards in my learning because someone experienced adds in a word to their code that i think is a keyword (that i suddenly dont know and isnt necessary to explain the concept), or some new syntax that i think is important to a concept (that i think im stupid for missing)… only to find out that the fancy parts of the example code arent actually required to learn the principle being explained.

Also a lot of coding, for me, would be good to have practical examples of the principle being explained in REAL WORLD CODE to solve a REAL WORLD PROBLEMS, otherwise i feel like im just learning the “order of the planets” or “random dates in history” as a pointless exercise in future code aesthetics. I like to see how code translates into results. There is little to no practical value in code that does nothing useful.

I noticed last night, while perusing Kyle Simpsons well regarded YDKJS books, that the first book in the series on github says; “Keep in mind that even though this book is titled “Get Started,” it’s not intended as a beginner/intro book” - im supposed to have three months coding experience to “get started” :exploding_head:

FCC does a great job for free, but im a big believer in Kaizen. Im currently struggling to get recursion and other concepts in ES6, while not knowing enough practical JS code to build… anything! Surely thats the wrong way round? Ive been looking for basic “decomposition” excercises online (which i havent found) and ive got three personal web projects to build (i dont have enough knowledge to get the JS on any of them to work).

if you have suggestions of things to change, you can open an issue on github to discuss it, challenges are ever-changing
freecodecamp is proud to be beginner friendly and if you think there is anything that could be done better, Free Code Camp listen, and contributors make changes

I don’t agree that “learning programming is not a difficult task”. Different parts of programming are difficult to different people, and leaning to be a true expert is quite difficult.

The fact that different people encounter difficulties in different parts of learning is why I generally try to avoid language that minimizes the difficulties others are having. By saying things like “you simply…” or “you just…”. Different people have challenges while learning something new, and that’s ok.

1 Like

It’s entirely possible that this is the person is trying to show off and has an ego problem. It’s also possible that they are trying to build you up to broader understanding and best practices.

A lot of pedagogical theory support teaching by

  1. reminding people of something they already know
  2. building something new off of the current knowledge
  3. mentioning future learning towards the final end learning goals

With coding, there is the minimum code required to get the example to run and there are modifications and extensions that push the code closer to best practices for real world examples.

1 Like

This topic temporarily took a turn into discussing the value and history of JavaScript. Those replies have been moved into their own topic.

I don’t think they’d accept any suggestions from people who come from third world countries. Do you think they do?

Free Code Camp has a wide variety of volunteer developers from across the world.

Ok, Do they accept a video tutorial on their curriculum but the simplified version created by me?

you just need to open an issue on github to suggest changes
everyone can do that, from all over the world.

That may be a tad too far from what the curriculum is right now, plus there is version 7.0 being worked on and it should be realesed sometimes this year with a completely different approach. At this time only changes to the currect challenges are accepted, not creating new ones.

But if you have suggestions on specific challenges, those are welcome.

you are certainly welcome to make your own video, or even try to become one of the authors for /news (here the style guide if you are interested, everything is written there)

or do you mean the scrimba videos for Get help -> Watch a video? there are a few of those that needs to be updated


That might be a good idea. Make a YouTube video on the subject and maybe link people to it. That might help. Also, keep in mind that there are plenty of confused beginners just like you who are ask questions here every day. Why not start answering their questions? It’s a great way to reinforce your own knowledge while helping people out, as you seem very passionate about that.

This is great in theory but breaks down extremely quickly.

What you’re talking about is more complicated than I think you presume: you can try to explain some fictional “purest form”, but there a. isn’t really any such thing and b. it’s all an abstraction anyway (for a for loop, is an instructor first supposed to explain while loops? or do they then need to explain the underlying implementation using jumps in the underlying code?). A teacher, any teacher has to pick a level that’s not too high level and not too low level and make assumptions about the student’s knowledge.

They often get it wrong! Being able to judge that level is extremely difficult. And bear in mind that the explanations that clicked for you may not click for someone else. There are teaching methods that work better than others, but they’re overall methods, not just explanations, which are often (not always) very much dependent on the student.

Programming is about joining together simple primitives, and becomes complex fast – the “how things connected” overlaps with another few concepts, which overlaps with another few concepts, and so on, exponentially. And all of those are actually complex underneath. A teacher has to pick a cutoff point – like with the loops, they’re just saying “here’s an array to loop through”, not “here’s an array to loop through, let me explain where this array came from and how it works”. They don’t need to do the latter because that’s not what they’re teaching.

That’s literally what FCC is doing. It is not perfect by any means, but it is also open source. And writing teaching material that works is brutally difficult: saying “just make it better” isn’t going to be very helpful.

Some people are definitely better at teaching than others! But bear in mind that the people who are giving excellent explanations are often only able to that because they have expert knowledge of the material.

This relates to the first few things here, but that’s extremely difficult to do. “Real-life coding” is the same, but with huge amounts of stuff tacked on that isn’t remotely relevant to teaching basic programming. The best FCC can currently do is to teach extremely simplified examples (the curriculum is moving towards being project-based, but that comes with its own downsides as well).

What you’d consider real-life coding means being able to translate some requirement into code, and that code has to be built up of the primitive building blocks you’ve been taught in the “pointless” examples.

The challenges that are closest to real-life examples are also the ones that tend to trip people up immediately (the Record Collection challenge for example). And those are often saying “we have already shown you, via simple examples, the basic building blocks you need to do this. Now put those blocks together”. And then the projects do that again, at a larger level – they’ll often say use some library or framework. That library is just made up of the primitives you’ve been shown and will be used via those primitives. Each thing build upon itself, and it gets very complex, and it becomes increasingly difficult to teach – at some point, the curriculum needs to say “we’ve shown you all the individual bits, now put them together”.

ES6 is Javascript. The way it gets dumped in at that early stage in FCC is a bit of compromise, it was added after the sections surrounding it already existed. It does drop a load of things onto you without warning, but you need to be aware of those features because they are now standard. If you go out and look at JS codebases (which you should do), they are going to be using the syntactic constructs that were introduced the language five years ago. They won’t be being used to make the developer look good, they will be being used because they are useful.

I understand it is hard, I can remember it well. But you also need this challenge: you can’t just keep going over basics. Going over basics over and over often feels great, but it becomes less and less useful.

This is simply not true for very large % of learners (I would say the vast majority).