(sorry for the lack of useful links, I’m a new user, can only use 2)
I imagine this is a popular topic per this post, but not having found more discussions about it I will do it here.
From the docs
Quoting/paraphrasing Exercism’s tracks documentation:
Concept - things that a programmer would need to understand to be fluent in a language
introduction.md
: provide a brief introduction to a student who has not yet completed the corresponding concept exerciseabout.md
: provide information about the concept for a student who has completed the corresponding concept exercise to learn from and refer back to
Concept Exercises - designed to teach specific (programming) concepts
introduction.md
: introduces the concept(s) that the exercise teaches to the student
If I understood this correctly…
In a concept, before the user joins the track, it shows the about
file. After the user joins the track it shows the introduction
one until the user finishes the corresponding concept exercise at which point it shows the about
for future reference.
In a concept exercise, there’s an introduction
that gives a summarized explanation of the exercise’s concepts.
My take on this
The reason for having two concept versions is so that it first shows the more simplified version with only the necessary information to solve the concept exercise so that the user can get to writing asap.
This does seem like a good approach to keep the learner motivated, it’s like a gamification of learning. Just like in video games, you don’t want to explain everything in the tutorial, you explain the basics and let the player learn the rest playing so that they don’t get bored in the tutorial.
But shouldn’t that be the job of the concept exercise introduction? If the user wants to get to writing asap they would skip the concept and only read the exercise introduction. The concept would always be a detailed explanation.
Something strange I found is that in the Python track, the exercise Guido’s Gorgeous Lasagna introduction is as detailed as the concept about (detailed) version, minus the initial explanation about Python.
So maybe I’m missing something…
- Is the concept version changing behavior explained anywhere in the website?
- When is a user supposed to read the concept introduction? Not before joining the track or after completing the concept exercise as it is not there. And why before doing the exercise if it has an introduction itself (that might even be more detailed than the concept introduction, not sure about this either)?
Final observations and suggestions
I’m having trouble being concise with this post so here are some bullet points.
Cons of the current approach:
- Concepts are confusing as their content changes when joining the track and completing the exercise.
- Users miss the more detailed “about” page.
- The about page doesn’t serve as a good reference as the users only saw the simplified version which does not have as much to refer to.
- If the user is only planning to get the theory from the track, after joining they could only read the simplified versions. (“Why join then?” sure, this might not be a good point).
- Having concept introduction and exercise introduction seems redundant.
Currently I’m using Exercism like this:
- Go to next concept exercise.
- Open and read its concepts in private mode as to have the full concept.
- Quickly check if the exercise introduction has something to add.
- Do the exercise.
Proposal:
- Concept has a single detailed version.
- Concept exercise has a simplified, aggregated version of its concepts.