Long-ish, Teaching programming, not code shaming. Non-intuitiveness of Git and PR workflows.
Ok so I did a live code review with my masters student im teaching last week, made changes in a branch in multiple commits, opened a PR so they could read through and digest later, so far so normal.
During lab meeting they said "I got some good feedback from jonny, and ill be working through that, but there are like 15 commits so it might take me a bit" which made me go ??? a little but shrugged it off. I was trying to model committing often with each change having a descriptive commit message, but the PR was relatively small and this is not a live/public project, so I figured they would just merge it to main and keep working on it there. We're still working our way up to a stable main/work on feature branches git flow.
It appears as if they thought they had to go through and manually re-apply the changes I had made in each commit in order, not rebasing or cherry picking, but copy and pasting code in their editor. The idea of merging was new to them, as was the entire PR interface. I had made a guide for code review a few months ago with lots of annotated screenshots and etc., but there were enough strange terms that they couldnt really parse it - what the purpose was, what the start point of work done on a branch and end point of merging meant.
Always a reminder that you need to go back further than you think when teaching. I dont know how to balance allowing for self-exploration with scaffolding well, and teaching git is harder than teaching programming sometimes because it's "invisible" and happens between the code, but the code is something you can look at and see.
addition, re: describing my teaching methodology
@jonny One detail I just realized I forgot: when they're going in the wrong direction, I don't usually tell them "that is wrong", but instead ask them a "self-reflection" question that prompts them to take a moment and think about it more. For example, "and if you did it that way, how would thing X change?"
It's less confrontational, and helps them to learn identifying the 'failure points' early, where they can catch themselves before making a mistake, by making self-reflection a habit early on.