Synchronous conversation in the editor when you get stuck?

People get stuck in exercises.
We’d like to help them get unstuck.

I don’t believe mentoring is the best solution for various reasons:

  • It’s async (so disjointed, slow to get a response, slow to get future responses, etc)
  • I think it detracts from the real value of mentoring (discovering knowledge gaps)
  • Technically, we have conversations on iterations, not on WIP code, and changing this would be a massive technical change that I’m not really up for.

Is there a different solution.

How about if we let people have real-time conversations inside the editor UI? And someone can invite others into their session. Then if someone is stuck, they can post a link to a friend, or in our Discord, and people can then jump in and help each other.

Pros/cons/love/hate/opinions?


Some context: Renaming "mentoring" to "code review" - #24 by iHiD

That sounds like two paths. There would be a request for a code-review - the current status quo. And a new “live session”, where you could invite someone to look at your code and chat while you edit.

I’ve helped quite a few people who’ve struggled with an exercise. They’ve either uploaded their failing solution or have posted a working solution from somewhere else and then say, I have this other code that doesn’t work. Can you tell me why?

I prefer an asynchronous interchange because it gives me time to look over the code without being “on the spot.” I also would prefer they could have their code as a failing iteration so I could see the test results, without having to copy paste from commented-out code to either the web editor or my local copy. Quite a few people paste failing code into a comment so it’s all mushed together and ask if I can tell what’s wrong with it. I really hate unformatted code in comments. Really really hate it.

2 Likes

Totally. I’m suggesting that you’d be able to have the conversation inside the editor, so you shouldn’t need to copy or paste anything really. Unless you wanted to get it running locally for yourself, but then we could have a simple “Copy” button that does that.

Yup, I really don’t want to have real-time problem-solving conversations. Asynchronicity gives me more freedom. Synchronicity pins me down.

But for others who would like that, it would be fine, as long as no one can ping me for a live conversation.

Yeah, I’m thinking this would be more the ability for someone to post into Discord and say “Can someone help me with this please…” and then someone can choose to do so. Definitely not thinking this works in the site as a part of mentoring flow.

1 Like

I like this in spirit. In fact, I like it quite a bit. But I am worried about the actual practice.

  • We have both timezone blank spots and usage peaks where students might wait quite a bit to get help. We also have tracks were there aren’t enough volunteers. These waits might read to students as the feature being broken.

  • How someone asks for help can be really problematic. Information can get left out, or the student can think the problem is in one place when it really is in another. How will their request be transferred into Discord? Will volunteers be able to see the track/exercise/code before saying yes? It would be great if there could be some automatic context to help volunteers make a decision and to ease the session start.

  • What would be the vetting process for those coaching from a Discord request? How do we make sure that students are really getting help? How do we represent this, and the experience level of our volunteers?

  • What happens when I (as a Discord volunteer) think I might be able to help – but I get into it and can’t help for whatever reason? How are sessions “released” or “re-requested”?

  • What would be the oversight process for those who have sub-optimal experiences - both from the student side, and from the coaching side? What are the steps/timing for concerns and complaints?

  • How do we set expectations for the Discord - related help? Is it “get you unstuck”, or is it “get you to all tests passing”?

  • How do we limit this to getting help, and not have it lead to informal mentoring, or second-guessing mentoring?

More later (maybe) as I think about it - but those are my immediate questions/concerns.

1 Like

@BethanyG Appreciate all those points and the thought that went into them!

To summarise my general feeling, I’m sort of imagining it could be a free-for-all. Post a link, anyone can jump into a session. Student can close the session whenever they want. I’m seeing it as a very unstructured workflow at first - almost the total opposite to mentoring. I’m also imagining this comes before mentoring (as once you’ve got tests passing, you probably don’t want this).

To be honest, if people can get help, I’m think I’m ok with it. There’s an order of magnitude more people currently getting stuck than requesting mentoring. So I think as long as we’re like “this is the wild west - there be dragons here”, it’s maybe ok to start with?

I also spent Saturday exploring using ChatGPT for this. “Why does my code not work?” sort of vibe. I got it to a point where it could pretty much correctly say “Why does my code not compile” reliably, but “why does my code not pass the tests” was wrong as often as it was right, so I decided against the whole thing (for now at least!)

I also like this idea. One of the things that interests me the most about Exercism is the human aspect, and how I can get other people reviewing my code and helping me out. This would be an extension of that, and a differentiating feature of Exercism.

Discord

We could start with links in Discord, but that to me seems a bit limiting and making someone going trough extra hoops if that’s the only option. We are basically saying that if you need help getting unstuck you need a Discord account, figure out discord if you don’t know it yet and make a post there. That seems a lot of work, and if you suspect you are just missing a semicolon somewhere, it might not be worth it going trough all that.

Ideally you could just click a button to ask for help getting unstuck, and there could be a page inside Exercism where you could see all people who requested help and join their session via Exercism directly. Creating a private direct link to a session should always be an option though, and the official Discord should encourage posting link there, my point here is that it shouldn’t be the only option.

One of the advantages of using Discord is that you might want to use the voice channels if both parties agree. I think these quick interactions might benefit more from spoken communication than written communication.

Separation from mentoring

I share this concern.

While in theory it’s easy to think as this being just help someone getting unstuck, I think in actual practice, the line can get really blurry.

I’m trying to think how these interactions could go and I’m having trouble seeing how we can differentiate this from mentoring without being awkward.

In the role of the helper:

  • After I help someone get unstuck with a missing semicolon, I might want to stick around a bit more to see if they struggle with something else.
  • In that time, they might have other questions related with the language. For the interaction to feel natural I feel I should reply if I know the answer, but doesn’t that leave the realm of helping someone get unstuck?
  • After I help them get unstuck and make the tests pass, they might ask if that’s the best solution. Again, if I know there’s a better solution, should I refuse to answer and say they should ask mentoring instead? How would I answer that without entering the realm of mentoring?

Maybe there’s a simple solution for these questions and I’m just not seeing it.

Yet another concern: I fear unstuckers might get demotivated quickly.

  • Many people get stuck on the same things.
  • There is an appreciable proportion of low-effort mentoring requests. I fear unstucking requests might have a worse ratio, and that the ‘nice’ ones might be drowned out.

I do not yet have ideas on how to mitigate these effects.

On the plus side: unstuckers might well transition into mentoring as well :smiley:

Synchronous or not, I really like the idea of being able to send a link and ask for help somebody you know. It might be an opportunity the reach of Exercism as well as address the problem. The real-time commitment from the community “unstackers” might be too much, but perhaps reaching out to somebody you know, who perhaps is not yet on Exercisme has the right balance of allowing a way to get through the issue for the person learning, get more people to the platform, and not put extra pressure on mentors

This idea of a link does exist, hopefully it does not require them to be registered as a mentor for the track. I do not believe it does due to the message in the graphic of suggesting a friend can mentor.

image

1 Like

This works only after you have finished your exercise, doesn’t it? And I find the distinction between “unstucking” and “mentoring” described above very useful.

I believe that it works before you complete the exercise, if you mean by “complete” that you have clicked on “End Discussion”.

If you mean by “complete” that the tests are passing, then this is only true if the submission of the exercise is via the web editor, rather than submitted from the CLI.


I also do find the “unstucking” and “mentoring” described to be very useful.

The private mentoring link becomes available as soon as you have solved the exercise, i.e. submitted a passing solution. (Merely passing the tests is not enough; you need to submit. Edit: In fact, passing the tests is only required in the web editor, which blocks submission until the tests are green.)

Marking as complete does not affect (availability of) mentoring.

<mixed-metaphor-police pedantism-level=“strong”>
No dragons in the wild west… Scorpions maybe.
Dragons live in “uncharted waters”.
</mixed-metaphor-police>

:stuck_out_tongue_winking_eye:

More seriously, a couple of UI-related questions

  • would the interface have the editor pane on the left and chat pane on the right?
  • would the editor be read-only for the helper? Would it be updated in real time as the helpee edits their code?
  • would the help session be locked to one helper, or can anyone with the link join the chat?
  • I can picture the “Get a helper” button posting a message to a discord channel.
    • I can also picture the helpers who might hang out in such a channel start to ignore posts from certain people (due to … reasons).
  • I’m imagining there would be a new “chat” tab on the RHS of the editor, and you could basically drop into someone else’s editor session.
  • They could choose whether it’s read-only or read-write for the helper
  • I’m imagining it would be anyone with the link could join.
  • Yes to posting in a Discord channel
  • I can also imagine people start ignoring other people and I’m fine with that :slight_smile:

That may be true for exercises which were done solely in the web editor on the platform.

Here is a private mentoring request for an exercise that is not solved, and has never passed the tests.

You are able to request mentoring before the tests pass if you submit via the command line tool.

@kotp While this is factually true, I don’t think it’s particular relevant to the decisions we need to make. as 80% of people don’t use the CLI, and we actively don’t want that to be a requirement for getting help.