Are there some students who can't learn how to code? Mark Guzdial asks that question on his blog and says that “Teachers must always answer "No!"” There is some pushback from teachers in the comments. I think we as teachers have to act as if the answer is “No” even if we might not completely believe that is the truth.
I took on a variation of this question on this blog some time ago at Any Monkey Can Learn To Code. There garth Flint pointed out in a comment that “I could teach a monkey syntax. It takes significantly more work to teach someone what to do with it.” And I think that gets to a big part of the question – what does it mean to learn to code?
The syntax is pretty easy. Well compared to a lot of things. I think most of us would agree that anyone can learn the syntax of a programming language to answer the standard multiple choice questions the standard test companies like so much. But is that really coding? Not really. Coding is how you use that syntax to solve problems and that can be a much higher bar. That is also what some people think not everyone can learn.
If a student doesn’t learn coding whose fault is it? Teachers may need to take blame in some cases. If the majority (or significant minority) of my students do poorly on a test or project I feel I have to assume I could/should have taught the material better. If only one or two do poorly I’m more likely to assume it is the student. Students don’t always pay attention, they don’t always review the material, they are not always at their best on test day. There are lots of reasons a student might not do well. Is it because they are not capable of learning the material?
It’s a hard question. We all know students who say “I can’t learn math” or “I’m not good at languages.” Does that mean they really can’t learn it? Or does it just mean they have to work harder to learn it? I’m not sure we have research to back up either answer.
A lot of software people I have met want desperately to believe there is something extra or special about them that they can write software. The idea that not everyone can do it is appealing. And there are teachers who want to believe that they are great teachers (ok we all want to believe that) but who also want to believe that any student failure is the fault of the student. That they can't get it. It helps one sleep at night.
Ultimately though the job of the teacher is to do all they can to help the student to “get it.” You have to assume that they can get it; that learning the material is possible in order to do that job well. So maybe some students can’t learn coding. Or can’t learn it well. But we have to live as though they can. Giving up on a student prematurely is not fair to the student. So we try. And hope the student works at least as hard as we do.