-
-
Notifications
You must be signed in to change notification settings - Fork 5
Description
For the past three years, the ordering of exercises has been done based on gut feelings and wild guesses.
Over time this has proven to work OK-ish, but it's not great. There are easy exercises that get placed too far back, exercises that are too similar to one another, and exercises that are too difficult that end up early in the track, and we mostly don't notice until someone says out loud that they're struggling with something.
@IanWhitney did a thorough analysis of the rust track in exercism/rust#127, which resulted in reordering the exercises. He wrote about the experience in an essay called Exercism Shouldn't Make You Cry
We're also talking about similar issues in F# (exercism/fsharp#133 - @ErikSchierboom) and Elixir (exercism/elixir#190 - @devonestes), and I'm sure the topic has been mentioned elsewhere and I've missed it.
Back in the day, Peter Minten talked about how we might classify exercises more systematically, in exercism/problem-specifications#63 and exercism/problem-specifications#72.
I think that if we have language-specific classifications and topics, we should do it in the language-specific repository (keeping all the language-specific stuff together).
What if we did this in config.json? We could have a new key, exercises, which contained an array of objects with the problem slug and topics. x-api could be changed to look preferentially at the new key, and fall back to the old one if it's missing. Then we could migrate all the tracks without having to do everything all at once.
The topics would be optional, but having it in the actual codebase would probably help crowdsource this data.
@exercism/track-maintainers Thoughts?