Wanted: Advice from CS teachers
-
My students aren't lazy, but they *can* be a little perfectionist: scared to take risks or sit with not having the answer right away.
They are really upset when their code won't run... but staying calm and *systematically* looking for the cause of the problem, knowing that if you just work through the tree of possible causes you will find it is not something they are good at.
I think I need to teach this.
Maybe I will give them some broken code and we will find the errors together.
@futurebird I had an engineer do that, with me, when I first started programming professionally and it was a big help. Both for giving me a framework for looking at the errors, but also just showing me that, yeah, sometimes those errors are difficult for EVERYONE to understand, and to not panic. It really helped me build confidence.
-
@futurebird I like to say that when students are in front of a computer, their ears disappear.

@jenesuispasgoth @futurebird Also, sometimes their humility!

-
@futurebird @ligasser Teaching math is a dyad: You or the student are communicating. In coding, it's triadic: you, the student, and the error message -- which won't always appear in calming, student-friendly language.
When an error message interrupts you, the dynamic shifts. Students feel prompted to react to the sudden problem immediately.
@jhlibby @futurebird I only did an intensive introduction C++ course. But it was with 18 year old students. They seemed to have a better abstraction of the computer, at least I don't recall them being offended by errors...
-
Wanted: Advice from CS teachers
When #teaching a group of students new to coding I've noticed that my students who are normally very good about not calling out during class will shout "it's not working!" the moment their code hits an error and fails to run. They want me to fix it right away. This makes for too many interruptions since I'm easy to nerd snipe in this way.
I think I need to let them know that fixing errors that keep the code from running is literally what I'm trying to teach.
If them interrupting becomes a problem, I would tell them: “It will not work. Even if you ‘fix’ something, it will often still not work. Your _task_ is to find the errors yourself. Try as many things for the next five (ten) minutes. Then I will go around and help you”.
If that does not work, I tell them: I will go around in _this_ order and help you, until then please stay as quiet as possible so that the others can concentrate.
But both have only limited effect, depending on age and other factors. I cannot completely avoid this behavior (mostly with male students) -
So Your Code Won't Run
1. There *is* an error in your code. It's probably just a typo. You can find it by looking for it in a calm, systematic way.
2. The error will make sense. It's not random. The computer does not "just hate you"
3. Read the error message. The error message *tries* to help you, but it's just a computer so YOUR HUMAN INTELLIGENCE may be needed to find the real source of error.
4. Every programmer makes errors. Great programmers can find and fix them.
1/
@futurebird Something I noticed in junior developers is that they sometimes tend to blame the library or language when something goes wrong. Whereas a more experienced programmer would know to blame themselves first.

-
So Your Code Won't Run
1. There *is* an error in your code. It's probably just a typo. You can find it by looking for it in a calm, systematic way.
2. The error will make sense. It's not random. The computer does not "just hate you"
3. Read the error message. The error message *tries* to help you, but it's just a computer so YOUR HUMAN INTELLIGENCE may be needed to find the real source of error.
4. Every programmer makes errors. Great programmers can find and fix them.
1/
@futurebird I mean, sometimes the computer really does just hate you 🤪
-
Things to Try:
* look for typos
* look at what the error message indicates.If these don't work consider reverting your last changes to the last working version of your code. Then try making the changes again, but be more careful.
If you can't revert the changes, start removing bits of the code systematically. Remove the things you think might cause the error and run the code again. Isolate the change or code that causes the problem.
You can be a great programmer.
2/2
@futurebird Also, I've noticed that learner programmers very rarely read the error messages with any level of attention.
Ooh, you could do a reverse challenge.... provide them with the error message and have them write the code that produces it!
-
Wanted: Advice from CS teachers
When #teaching a group of students new to coding I've noticed that my students who are normally very good about not calling out during class will shout "it's not working!" the moment their code hits an error and fails to run. They want me to fix it right away. This makes for too many interruptions since I'm easy to nerd snipe in this way.
I think I need to let them know that fixing errors that keep the code from running is literally what I'm trying to teach.
@futurebird during my course (kind of cs 101) I proposed a pokemon-error game: when they start using an ide with the standard helloword first program, their first task is to make edits to cause errors: for each one they must collect the message, translate and note down. also classify as warning, warning-but-actually-error, compile/link/runtime/logic error.
Someone responded well, with a longer updated list, but the goal was to defuse the negative reaction, it kind of worked. -
@futurebird during my course (kind of cs 101) I proposed a pokemon-error game: when they start using an ide with the standard helloword first program, their first task is to make edits to cause errors: for each one they must collect the message, translate and note down. also classify as warning, warning-but-actually-error, compile/link/runtime/logic error.
Someone responded well, with a longer updated list, but the goal was to defuse the negative reaction, it kind of worked.@futurebird If I had time l'd create actual physical cards with a picture of the "errormon" and the characteristics, and let them pick their preferred errors to keep.
Better, yet, they could draw their idea of animal representation. -
@futurebird during my course (kind of cs 101) I proposed a pokemon-error game: when they start using an ide with the standard helloword first program, their first task is to make edits to cause errors: for each one they must collect the message, translate and note down. also classify as warning, warning-but-actually-error, compile/link/runtime/logic error.
Someone responded well, with a longer updated list, but the goal was to defuse the negative reaction, it kind of worked.@futurebird when teaching a python bootcamp for people that never programmed (often from humanities background, with a special social anxiety around STEM) I introduce the "mystery solving hat", and 3 steps:
1) decide what should happen (sometimes this is not crystal clear to begin with)
2) modify the source and check the result
3) put on the mystery solving hat to discover why it didn't go the way you wanted, using errors as clues towards the solution.
"that's how professional programmers work" -
@futurebird when teaching a python bootcamp for people that never programmed (often from humanities background, with a special social anxiety around STEM) I introduce the "mystery solving hat", and 3 steps:
1) decide what should happen (sometimes this is not crystal clear to begin with)
2) modify the source and check the result
3) put on the mystery solving hat to discover why it didn't go the way you wanted, using errors as clues towards the solution.
"that's how professional programmers work"@futurebird I stress the concept that "smart" "competent" "professional" programmers spend significant time chasing errors, and code rarely works from the start ("have you heard of bugfixes and security updates?!").
and I bend a bit the reality adding "there's even a programming style that begins with purposely not-working code, to get to the functioning version gradually" (TDD). it's half truth but fun. so they can stop feeling stupid and can enjoy the intellectual challenge. -
@futurebird during my course (kind of cs 101) I proposed a pokemon-error game: when they start using an ide with the standard helloword first program, their first task is to make edits to cause errors: for each one they must collect the message, translate and note down. also classify as warning, warning-but-actually-error, compile/link/runtime/logic error.
Someone responded well, with a longer updated list, but the goal was to defuse the negative reaction, it kind of worked.@giuseppe_aceto @futurebird This is _such_ a cool idea!
I'm thinking for me, about 1/4 way into the course, where they have a little more to work with, and really need to read those messages to solve bigger problems. But certainly early, and for the high anxiety sorts, maybe at the beginning, yes. -
Wanted: Advice from CS teachers
When #teaching a group of students new to coding I've noticed that my students who are normally very good about not calling out during class will shout "it's not working!" the moment their code hits an error and fails to run. They want me to fix it right away. This makes for too many interruptions since I'm easy to nerd snipe in this way.
I think I need to let them know that fixing errors that keep the code from running is literally what I'm trying to teach.
Not sure that I can qualify as a CS teacher (I only taught a few informal classes, mostly Scratch) but as a user I can relate.
There is some existential dread in having your basic tools not working without warning.
A bit like physicists in the three-body problem start despairing when physics starts to behave in an unpredictable way.I have this when I work on Arduino and a thingy doesn't work as it should.
1/?
-
Not sure that I can qualify as a CS teacher (I only taught a few informal classes, mostly Scratch) but as a user I can relate.
There is some existential dread in having your basic tools not working without warning.
A bit like physicists in the three-body problem start despairing when physics starts to behave in an unpredictable way.I have this when I work on Arduino and a thingy doesn't work as it should.
1/?
Like, I worked on a thermal captor and the hardware itself provided unreliable measures - there was nothing I could do about it and it threw all my project into the gutter.
I have the same inner and unsettling reaction when I press the button on my computer and for whatever reason, it doesn't power on.
If I get an error message, something I can understand and act upon, it's not the same. Maybe I'm still screwed if I can't fix it, but at least I understand what's wrong.2/?
-
Like, I worked on a thermal captor and the hardware itself provided unreliable measures - there was nothing I could do about it and it threw all my project into the gutter.
I have the same inner and unsettling reaction when I press the button on my computer and for whatever reason, it doesn't power on.
If I get an error message, something I can understand and act upon, it's not the same. Maybe I'm still screwed if I can't fix it, but at least I understand what's wrong.2/?
With software rather than hardware, I don't have this total distress when a bug makes a Python program I wrote not working (which is basically, anytime I write a Python program).
I'm not really proficient in Python, but I know how to debug. Painstakingly and not very efficiently, but at least I have an idea of how to proceed.3/?
-
With software rather than hardware, I don't have this total distress when a bug makes a Python program I wrote not working (which is basically, anytime I write a Python program).
I'm not really proficient in Python, but I know how to debug. Painstakingly and not very efficiently, but at least I have an idea of how to proceed.3/?
I do have this gut-wrenching despair when something doesn't work in Godot, though, and it's not something I understand as a possible bug of my code but rather as some knowledge I'm lacking (Godot is great but also extremely rich, and I have only a grasp of its most basic functions); when I'm completely at a loss, in other words, when what I'm missing is out of my intellectual reach.
4/?
-
I do have this gut-wrenching despair when something doesn't work in Godot, though, and it's not something I understand as a possible bug of my code but rather as some knowledge I'm lacking (Godot is great but also extremely rich, and I have only a grasp of its most basic functions); when I'm completely at a loss, in other words, when what I'm missing is out of my intellectual reach.
4/?
Colonel Michel Goya (who's probably as evil as any professional soldier, and alas betrayed his father's Spanish Republican ideals, but who do think) explains in his book "Sous le feu" how not knowing what to do is completely debilitating in situations of stress, while if you give precise orders, even soldiers who are actively shot at will gather their spirits and do what they need to do, though they are still under fire.
5/5
-
@futurebird i think Microsoft in the 90s set up this attitude towards computers that still lives today: “it’s your fault if it doesn’t work”.
I never had to use Windows — ever — and every time I would sit down to try, something glaringly bad would be right there interfering.
And I’ve been a dev and UX person for nearly 40 years.
I wouldn't say exactly "it's your fault" but more "there is no hope".
-
"Error handling code is code."
It had not occurred to me that a student might not see it that way "some guy wrote code to try to tell you what went wrong" but I can see how this might not be how a student might see the errors.
It's like when I realized as a kid that all books are just ... written by people. A revelation. I think I thought, on some level, books were a natural product of the universe. When I realized they could have typos, bad ideas it was so exciting.
There's a famous anecdote about Yachar Kemal, the uber-famous turkish author : one day when he was visiting the countryside, a shepherd¹ asked what was all the ruckus.
Another villager answered "you don't know ? the guy who wrote 'Memed, my hawk' is here, he's visiting !".
And the shepherd was completely puzzled :"but... nobody wrote 'Memed, my hawk' ?"
(in the sense of "it exists, it hasn't been created, and especially not by a mere human").¹IIRC
-
Colonel Michel Goya (who's probably as evil as any professional soldier, and alas betrayed his father's Spanish Republican ideals, but who do think) explains in his book "Sous le feu" how not knowing what to do is completely debilitating in situations of stress, while if you give precise orders, even soldiers who are actively shot at will gather their spirits and do what they need to do, though they are still under fire.
5/5
Also, when you post such interesting questions that will generate a lot of insightful answers, maybe you'd want to tag them ?
So that they can benefit other people...