exercism icon indicating copy to clipboard operation
exercism copied to clipboard

Enable to "force" unlock exercises?

Open PragTob opened this issue 4 years ago β€’ 14 comments
trafficstars

Hi there wonderful team,

first and foremost I want to thank you for your extremely good work making learning so much better for so many people. So, truly - thank you πŸ’š

I guess there is a strong opinion about this somewhere, but if there is I haven't found it via google or github - appologies.

I think it might be a good thing to be able to "force" unlock exercises. If there is, I haven't found it.

Why would I want this? Well, if you are already more advanced you don't necessarily want to spend the time doing the more "basic" exercises you already know how to do just to get where you want to be.

Example use cases:

  • I know some $lang but I want to practice $topic (Elixir example: I want to learn about Linking for instance)
  • I'm new to $lang but I already did the basics elsewhere before coming to exercism, I don't want to repeat the basics I just did (I know some repetition is good)
  • I want to check out advanced exercises in $lang that I'm highly proficient in to see how much they'd teach someone about it whom I want to recommend exercism to (this is my case, I know I could check github but I'd like to also solve them)

Example of the amount of exercises one might need to do:

Screenshot 2021-09-28 at 15 35 52

My suggestion would be, instead of stuff straight up not being unlockable/doable to have a popup that'd be like "Sure you want to unlock this exercise early? We strongly encourage you to follow the learning path" or to have some sort of setting that'd go "unlock all exercises".

I think this would be beneficial for learners and could hence widen the audience of exercism.

Again, thanks a lot for all your work. Go have a bunny:

IMG_20180317_110254

PragTob avatar Sep 28 '21 13:09 PragTob

Hi and welcome to Exercism! :wave:

Thanks for opening an issue :slightly_smiling_face:

  • If you are suggesting a new feature or an improvement to Exercism, please take a read of this post, which will likely result in a faster response.
  • If you are reporting a bug in the website, thank you! We are getting a lot of reports at the moment (which is great), but we triage and reply as soon as we can.
  • If you are requesting support, someone will help shortly.
  • For everything else, we will reply or triage your issue to the right repository soon.

github-actions[bot] avatar Sep 28 '21 13:09 github-actions[bot]

🐰

For context, a related discussion happened here: https://github.com/exercism/exercism/issues/5888

angelikatyborska avatar Sep 28 '21 13:09 angelikatyborska

Yo! Thanks for your support! πŸ’™

You can unlock all the practice exercises by switching to Practice Mode ("Disable Learning Mode" button on the ... on the track page - nicely hidden away). However, that doesn't let you unlock Learning Exercises. Quoting myself from the issue Angelika linked to "The problem with letting people complete learning exercises in practice mode is that when they then switch back to learning mode (which people tend to do) then their concept trees are in really broken states"

I always find this a tricky area to get right. I was in v2 as well. I've spent ages considering it all over the years and not really come to any position that i like. Maybe when someone joins the track we give them the option of Learning or Practice mode to make this distinction clearer? I think we had this in v2 at the end (I've lost track though - feels like a lifetime ago! πŸ™‚)

Open to thoughts! :)

Thanks for the bunny! 🐰

iHiD avatar Sep 28 '21 14:09 iHiD

πŸ‘‹

Sorry for the long silence, with my arms injured I don't do OSS so never check my github 🀦 And thanks for letting me know!

It is tricky no doubt and thanks for engaging with me!

I can't believe I'll be able to help much as I'm much less familiar with this than any of you, but let me give it a shot and you can tell me how wrong I am :)

  1. (imo easiest) I wouldn't hard lock any exercise. Show a pop up like "are you sure?" and then just let them do the exercise. Yes, it'd somehow mess with the learning trees but I guess the logic is something like "needs to have fulfilled all prerequisite exercises to do this exercise" and that could/should still work imo. I solved a more advanced exercise and if that was the last requirement that should allow me to try and solve the next one. And I could "override" it anyhow if it didn't let me. I'm surely missing some complexity here. But this would retain a guiding hand but allow for more freedom.
  2. Switching back and forth between learning and practice mode: Again I don't know the implementation but instead of switching an exercise binary to "done" vs. "not done" it could have a third state "done, but requirements not met" and when switching back to learning mode these wouldn't unlock anything. It comes at the cost of whenever I finish an exercise I need to potentially mark exercises I point to as "done" (as now all their requirements are fulfilled).

Both would be helpful, but 1.) should be easiest and give most advantages (- everything I'm missing).

Theoretically speaking I have hackdays at work the next 2 days and since we wanted to use this at work to bring people up to speed with it I could try it and learn myself everything I'm missing πŸ˜†

Thanks a lot for taking the time to respond to me!

IMG_20180321_123515

PragTob avatar Oct 06 '21 15:10 PragTob

Yo. Sorry about your arms!

I'm off for the next week but I'll get back to this when I'm back πŸ™‚ Technically none of this is hard btw - it's all product decisions. I'll think more on it when I'm back and fresh!

Sidenote: If you fancy encouraging people to hack on Exercism during your hackday there are 800 or so issues across 55 languages here that could do with some help! https://exercism.org/contributing/tasks πŸ™‚

Thanks for the extra bunny!

iHiD avatar Oct 06 '21 21:10 iHiD

@iHiD okidokes! Have a wonderful vacation!

One other thing that I can think of for the "free form" vs. "learning" mode as the "easiest" solution:

Case of emergency just nuke progress and let folks do it again, but their old submissions should still be around so they could just resubmit them once they get there.

PragTob avatar Oct 07 '21 09:10 PragTob

Just wanted to chime in. Locking the exercises is a really really bad idea. Learning Elixir, I did a single "easy" execise, then 2 "medium" ones, then a bunch of "hard" ones. I would not have had the patience to wait. Ironically, today all the exercises that I had not started are still locked. At minimum, clicking on a lock should hint at the "disable learning mode"

marcandre avatar Feb 17 '22 19:02 marcandre

Hi @marcandre. Firstly thanks for all your work in the Ruby ecosystem! Exercism wouldn't be here if it wasn't for people like you building the tech that underpins on.

Locking the exercises is a really really bad idea.

I appreciate your opinion but I disagree. We've have had nearly 1m people use Exercism, and had hundreds of thousands of mentor discussions, and we've learnt a huge amount from that, including that if you don't provide structure, people tend to not grasp the fundamentals of a language properly and instead start hacking around reusing their existing patterns and getting themselves into a real mess. Rather than learning the actual idioms that make Elixir (in this example) different from Ruby, they would just reuse their Rubyisms while writing Elixir and develop a whole set of behaviours that then need to be undone for them to really get good at that language.

Fundamentally, if you're a decent developer it's easy to work through exercises in any language and complete them without trouble. But that's not what Exercism's about. Exercism is about getting you to think like an Elixir dev, not just write Elixir code. And that's why structure, and mentoring along with that works.

Of course there will be exceptions, and maybe (probably?) you're one of those people who has enough experience across languages to be able to doΒ learn new idioms and put your Ruby-hat aside while doing Elxiir, and not need that structured pathway. For that 1% of people Practice Mode is there and available and will work great. But for the vast majority of people structure and learning pathways are important to actually get the idioms, which is why we have them.

At minimum, clicking on a lock should hint at the "disable learning mode"

I agree we should probably make it easier to find Practice Mode. One problem with making it too available is that I suspect lots of people would reach for that and not actually take the path that's best for them. So while I agree with making it easier to find, I still want to strongly nudge people towards Learning Mode.


As I said in my comments to @PragTob, I think this is a complex issue to get right, and there's lots we can do to improve things. This issue/thread isn't by any means dead, it's just one of numerous improvements/challenges that all fight for my brainspace, and which are harder when they're product-level decisions because they have far-reaching consequences. Thanks for chiming in πŸ™‚

iHiD avatar Feb 18 '22 10:02 iHiD

Just to add another use case for supporting unlocking, my team is looking at using Exercism for group learning at work. We're a group of developers who are already proficient in the language, but we're looking to hone our skills, learn from each other and have fun doing programming exercises.

Without the ability to unlock exercises, Exercism is tough to use because we simply have too many people to ask everyone to tackle a large number of easy exercises.

LandonSchropp avatar Jul 18 '22 17:07 LandonSchropp

@LandonSchropp For your use case you can probably just switch to Practice Mode to unlock everything straight away.

iHiD avatar Jul 19 '22 00:07 iHiD

@iHiD Ah, I didn't realize there was a practice mode. Thanks!

LandonSchropp avatar Jul 19 '22 22:07 LandonSchropp

Is the "Practice mode" still available? I'm on /tracks/kotlin and can't find it...

image

marcandre avatar Jun 14 '23 22:06 marcandre

So I finished the Hello World, and now all the exercises are unlocked πŸŽ‰. Is that true for all tracks? If so, this issue can definitely be closed...

marcandre avatar Jun 14 '23 22:06 marcandre

@marcandre No, that is not true for all tracks. Kotlin has only practice mode, where after doing "hello world" all practice exercises are unlocked. Some tracks have both learning mode and practice mode. In learning mode, you have to do learning exercises in order, and doing learning exercises unlocks some practice exercises. In every track with a learning mode, you can switch to practice mode which removes all the learning exercises and unlocks all practice exercises.

The original issue author's problem is about being able to unlock all learning exercises at once.

angelikatyborska avatar Jun 15 '23 07:06 angelikatyborska