As someone who prefers to strictly follow TDD (or alternatively: is lazy), without any other guidance I tend to do the minimum to pass a test. So far this has served me well as during learning mode the concepts to be used/learned would be highlighted at the top of an exercise, and the few times I unintentionally went against those topics I was called out by the analyser after submitting.
Those concept hints seem to have disappeared now that I’m out of learning mode. FWIW I am just doing the exercises linearly from the main screen, which I think is an (if not the) intent.
Take for example Resistor Color in Elixir on Exercism. The simplest way to pass the tests (perhaps IMO), is via overloaded functions and pattern matching. The highest contributed approach is to use a Map and lookup. Fair enough, I don’t think popular solutions necessarily mean the most correct, and the analyser didn’t complain to me so I submit.
After submitting the exercise, I get a congratulatory message saying I’ve not learned more about atoms and maps, and indeed under learning those two concepts have received a further tick.
Is there a way to see these intended concepts before submitting?
I don’t mind having submitted a solution that goes against the intent. I do mind missing out on practising a concept, and assume that the exercises in this track balance those opportunities out.
Note the concepts associated with practice exercises are very loosely associated. The exercises come from a language agnostic repository. Concepts that are often useful are then applied to the exercises. The exercises are not “intended” to be solved using any specific concepts. Concepts roughly associated with common approaches are applied to the existing exercise. You can solve them forever makes sense to you. You can also solve them multiple times using different approaches. You can request a code review and work through solutions with a mentor.
Practice exercises are those left after learning mode is complete?
That’s fair enough and I agree with the sentiment, but given they are highlighted at the end and can be established via the syllabus, it seems odd to deliberately(?) suppress them at this single point in order to allow us creative freedom. At the very least, resistor-color claiming I had learned more about using Maps when I clearly hadn’t was a bit jarring ;).
My fear was that concepts hint at a more idiomatic solution, but if that’s not the case then happy to just not worry about it.
In some tracks, each time you finish a concept, some practice exercises are unlocked. This means the maintainers decided that those practice exercises have a structure which would allow a student to practice the concept just learned. So the student can solve those exercises before moving on to the next concept, if they want.
If you get a further tick in a concept after solving a practice exercise, it is probably because this exercise is unlocked by the concept.
This doesn’t mean you have to solve the exercise using the tools taught by the concept. You can almost always solve it in many different ways and there is no hard guideline on how it should be solved. You can also iterate on it, exploring different approaches.
Okay, I have a clear understanding of the approach now.
But given the information is available via other means, I do think it’d be nice to have it more accessible at the top of an exercise or something similar. I think any value in deliberately suppressing it is slight.
Exercism has practice exercises (all tracks) and concept exercises (only on tracks with a syllabus).
Every concept/lesson in the syllabus has one associated concept exercise. The concept exercise is specifically written to practice that concept/lesson. The concept exercises do have an intended approach/solution and are intended to be solved in a specific way.
Every track has a whole bunch of practice exercises which are pulled from the problem specs. These exercises are (mostly) all identical across all tracks. They are explicitly not written with any track/language in mind and usually are not written with any language concepts in mind.
When tracks are created, they start out with practice exercises only. Some tracks later add a syllabus and the associated concept exercises. Those concepts can then be used to “tag” practice exercises. This is meant as “if you want additional ways to practice this concept you just learned, that practice exercise over there is worth a look.” If you look at the concepts in the syllabus, you’ll see the concepts link to the practice exercises as “additional potential practice exercises”. If you’re not yet comfortable with a concept and want to practice that specific concept, the practice exercises give you an opportunity to do that.
If you’ve completed the syllabus and are not looking to practice a specific concept, the practice exercises aren’t meant to guide you to use a specific concept to solve them. The practice exercises are more valuable when solved without directing you towards a specific concept; the freedom to use any and all concepts is quite valuable.
Thank you, that’s helpful and explicitly confirms what I understood to be the intent. I still think it’s handy to see that information, but given it’s omitted by design I’m happy to agree to disagree and plough on - and as suggested lean more on mentoring than tagged concepts.