3 ms·
Everyone's hating on the parent post -- it even got downvoted. While people who have struggled, or have taught struggling students, may understandably be put o
by csense 14y ago
Everyone's hating on the parent post -- it even got downvoted. While people who have struggled, or have taught struggling students, may understandably be put off -- mainly by what's being said, peripherally by how it's being said -- I think the parent has a legitimate point of view.
I will admit that many beginners find programming hard and counter-intuitive. This fact, however, is a reflection of the utter failure of our education system to teach a few important things:
Learning on your own. A K-12 curriculum is highly structured and guided, especially K-8. Consulting resources outside the curriculum and figuring things out for yourself is a valuable life skill that's seldom taught in a typical classroom.
Thinking rigorously. A typical curriculum involves memorizing facts, not figuring out the consequences of known facts. Knowing something well enough to make detailed, testable predictions simply isn't taught. (When I learned the scientific method in school, it was simply memorizing the list ["Formulate hypothesis", "Test hypothesis with experiment", "Write paper"]. Even intro college physics was basically applying known theory to measure numbers in the lab, more engineering than science.)
Tenacity. In school, when you learn your answer to a question is wrong, it happens at the end of the learning process, and it means you've failed at mastering that particular tiny corner of the curriculum, but need to move on anyway. However, in the real world -- particularly programming -- when you get a traceback or incorrect output, it's the beginning of a dialog between you, the language, and your mental model. Making a mistake doesn't reflect on your ability until you give up on fixing it. People simply don't realize how humbling programming is, in terms of the sheer number of mistakes that even the best programmers make. (Beginners don't use or can't yet understand tools like IDE's which instantly notify you of many errors -- especially syntax errors -- and incorrectly highlight many others, like missing quotes.)
Differential diagnosis. "What I expect isn't happening. Situations alpha, beta, or gamma might conceivably be happening based on my mental model of how things work. I already observe y, which eliminates situation alpha. Now z would be different between situation beta or gamma, so I just need to print z out and rerun...aha! Now that I know z, I can eliminate gamma, so the problem must be beta..." This sort of intense critical thinking is absolutely vital to functioning in technical subjects, and also enormously helpful in everyday life. But it's a skill that has to be trained, and our education system completely misses it.