One person's best learning resource is another person's nightmare.
We still have not understood how to tach coding. The subject seems to be completely non linear, and some people get stuck and cant move on and the teachers cant figure out why and they cant figure out why, it could last 1 month or could last 5 years, and at some point some random thing they read or watched completely unlocks them.
I think I generally agree. A student getting stuck on something doesn't mean they're not learning. To the contrary, those can be some of the times the student learns the most.
In the case of them not "getting" pointers, for example, getting stuck might reveal they need to go back and solidify their understanding of the memory model, or how data is represented. These are good things to know you don't know!
Even getting stuck on yak shaving can pay dividends – having the student carefully compare their command to the instructions, learning what does and doesn't work, and patiently building experience with their tools. Even if they feel like they're doing nothing, they're probably learning.
So I think the major problem with self-study using online CS materials isn't people getting stuck per se... it's that those materials are no substitute for teachers and a cohort of learners. Some people do just fine without that support! Others do not.
> To the contrary, those can be some of the times the student learns the most.
I agree, its like 'level up' in a video game :) but I think it is very hard to not despair when you are hitting your head against the wall for too long. If you check the learningprogramming[1] subreddit it is full of stories of people giving up.
It seems in programming, maybe because the pay is so high, the intersection between good teachers and good programmers is not very high.
I read a some of papers investigating `how to teach mastery` and was comparing tutors vs tools, and the very best results were from tutors + tools (sorry I tried to find links in my history but couldnt). Tutors beat tools, Tools beat not getting any help, but even the best tools were not substitute for a teacher.
Maybe now with chatgpt the tooling will greatly improve, for example having an random error most kids just give up and wait for next lesson to ask a question, but now they can just past it in chatgpt, and most importantly they can ask chatgpt the stupidest and most embarrassing questions that they would never ask in class, or to their teacher.
Is this not the nature of learning in general? Why is it supposed that learning things in the linear A-B-C-D fashion is even possible for most humans, rather than supposing that most people would need to revisit certain topics before learning new topics, e.g. A-B-A-D-C instead of A-B-C-D?
By linear I did not mean the order in which you study, but rather how your understanding builds up, as in, how much time you put in, and how much you grow.
For example if your native language is subject verb object (cows eat grass) it is quite linear to learn subject object verb (cows grass eat) languages (e.g. Japanese), you put in time, and you make progress. There are other subjects where when you get stuck you cant move on, and the pedagogy and androgogy systems we have came up with for math/physics and etc are getting better and better to understand what people don't understand and how to move them further. Which on its own is quite problematic when you have a class of 30 kids and you are moving with the 'average' kid which does not exist.
In the same time, programming is fairly new, and teaching it is still evolving, educators still disagree on what is important and in which order (reminds me a bit of this Feynman video about 'Greek' versus 'Babylonian' mathematics https://www.youtube.com/watch?v=YaUlqXRPMmY)
There was a great example someone used, the amount of people who get confused by the equal sign, and some actually never go through understanding references and values for many years:
x=5
y=x
x=6
print(y)
and
a=[]
b=a
a.push(1)
print(b)
Now I am teaching my daughter and I spent about 3 days per week just on pointers and strings (We even made a card game we play from time to time https://punkx.org/c-pointer-game/), and I can see when she is stuck and what exactly she is stuck on, but how can you do that with 30 kids, when the most subtle nuance in the questions they ask can give you the deepest hint in what they are missing?
> We still have not understood how to tach coding. The subject seems to be completely non linear, and some people get stuck and cant move on
The same can be said about any subject or skill.
If you go to any class, you'll find some people are interested, others aren't. No matter the subject, be it sport, physics, math, chemistry, art, history, etc. Same teacher, same material, different reaction from students.
There's no artificial "ceiling" at play that's specific to coding.
I think the problem with coding is that people who are very interested still get stuck, I suspect this happens less often with people interested in chemistry/math etc. (possibly because of survivor bias because people drop out of it sooner, because there is no money in it)
There are countless reports of people 'not getting it' after studying for 4 years, they cant make fizzbuzz, and I dont mean they dont get some nuance of it, they literally cant even start typing.
I dont think there is artificial "ceiling" to coding, I think we still have to learn how to teach it, and particularly how to teach it to a mass of people.
It’s so true and refreshing to hear. If I had to characterize my own successes in learning, they come from very “honest” teachers, and those aren’t always in intro courses. A few examples, learning PowerShell from Snover, one of the creators via Microsoft Virtual Academy (probably a bit dated by now) or Calculus 3 from Professor Leonard on YouTube. I often have to go through a few dozen resources to find the one that works for me.
We also can’t teach math well for the masses, there’s a long history of failure. Like New Math or the STEM pipeline. Embarrassing stuff really and I don’t know what a good solution is. It’s one reason I don’t totally hate the new approaches to how math is taught that get lambasted on social media (this is not New Math which was much earlier) because the past isn’t working well enough.
We still have not understood how to tach coding. The subject seems to be completely non linear, and some people get stuck and cant move on and the teachers cant figure out why and they cant figure out why, it could last 1 month or could last 5 years, and at some point some random thing they read or watched completely unlocks them.
(For me the thing that helped me was Richard Buckland's Higher Computing lectures: https://www.youtube.com/watch?v=hE7l6Adoiiw&list=PL6B940F08B...)
The best way to learn is to keep trying and particularly trying to understand what you do not understand.
As Feynman said on his last board: What I can not create, I do not understand.
So if you are one of those people who is stuck, or you watch CS61A/B and it does not work for you, just keep looking and trying.