Skip to content

The Rust Track Anatomy #809

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
kytrinyx opened this issue Mar 28, 2019 · 3 comments
Closed

The Rust Track Anatomy #809

kytrinyx opened this issue Mar 28, 2019 · 3 comments

Comments

@kytrinyx
Copy link
Member

kytrinyx commented Mar 28, 2019

As you may have noticed, the Track Anatomy Project has arrived for Rust! This (somewhat belated) issue covers what that means for this track and what maintainers can expect to see throughout the process.

Background

Rationale

Our research has shown that having a suboptimal track structure causes frustration for students and a significantly worse experience for mentors. The primary cause of this is that historically Exercism exercises were not implemented with any particular purpose in mind. Both exercise choice and sequencing were mostly incidental. In the past couple of years, we've come to understand that the principal purpose of Exercism is to optimize for achieving fluency. Reworking the tracks with this focus improves the experience for both students and mentors.

The project

We have spun up a project to tackle these problems. We've named the project the Track Anatomy Project, and you can read more about the background in the introductory blog post.

The goals of the Track Anatomy Project are:

  • to design the optimal path for progression throughout the track. We want to make sure that the key topics are covered explicitly, in a suitable order.
  • to ensure that progression is consistent across language tracks (where appropriate).
  • to optimize the track for fluency in the data structures, language features, standard library, and conventions/idioms of the language. Fluency means that the goal is for the student to be able to express themselves comfortably in the basics of the language and that their code should not be jarring to experienced users of the language. It does not aim to teach people to get better at programming (though that is sometimes a side-effect).

The tool

To reach these goals, we've developed a tool to help maintainers work through the restructuring step by step. The working title of the tool is The Track Anatomy Tool.

The task of restructuring a track is significant. To make this restructuring achievable, we've split the process into several phases, where each stage addresses one specific aspect of the restructuring. Together, the phases work from coarse-grained to fine-grained, and from the beginning of the track to the most advanced exercises. The end result will be a restructured track, with a list of improvements that need to be made, as well as a set of guidelines for the track to make it easier to make decisions about suggested improvements in the future. The methodology is the same for all tracks. The outcome is different for each language.

We have tested the tool on the Ruby and C# tracks, and in both cases, it resulted in dramatic improvement for both students and mentors.

What this means for Rust

We have invited the first pool of maintainers to work with the Track Anatomy Tool and apply it to their language. This track is one of those chosen, and @TheDarkula has volunteered to do the work.

Many small PRs

The restructuring process results in a lot of small PRs.

We encourage this project to be run like a series of refactorings: small and regular changes, where we address the simplest problems first, without striving for perfection. After each change is merged, we monitor the results and tweak based on our findings. Then we make the next small change.

We focus on the core progression first, either leaving the side exercises alone or taking pragmatic actions to redivide them. The side exercises will be addressed in more depth later on.

The process gradually builds up a big picture that will not be discernible in any single pull request. This big picture is never clear at the start of the restructuring; it gradually develops as the maintainers work through each phase of the process.

This means that unlike most earlier work on Exercism language tracks, individual pull requests will be more difficult to discuss as one-offs, as they tie into a large, complex, and often unclear picture. We understand that this can be a bit disconcerting for maintainers who are not deeply involved in every step of the Track Anatomy Project for this track but ask for your trust in the process.

Mildly confusing for students

The changes will lead to some confusion for active students, due to changes in the order or the state (core/side) of exercises. We have decided that the advantages of the small changes outweigh the confusion they may cause.

How can you help and contribute?

Most changes in the upcoming weeks are first and foremost pragmatic choices, based on what the tool is asking. None of the changes are final, and none of them pretend to be the perfect solution to all that matters in the track.

To help this process along, we ask that you give the person working through the tool room to experiment. In PRs, help find technical and mechanical problems and clerical errors rather than questioning the underlying reason for the change.

Keep an eye on issues with the label Track Anatomy. You can contribute by implementing new exercises, or researching how such an exercise can be solved in Rust. Since the main focus of the tool is on the core exercises, it would also be valuable to help address issues in the side exercises that happen as a side effect of restructuring.

Most importantly, you can help by mentoring, improving mentor notes, and providing feedback on your mentoring experience as a result of the implemented changes. Let us know if mentoring got easier or harder, more fun or less, and share your observations about the result of a change, either in issues here or in the Slack track channel.

Final thoughts

We are fully aware that the tool is a black box, and the inner workings can seem mysterious. We're not being secretive, it's just a matter of (a) mental bandwidth and resources and (b) things are changing so rapidly that documenting them is very hard.

Our primary focus is to facilitate the folks who are working through the process on the track, and we ask for your patience in the process.

We're confident this will lead to the best outcome for the Rust track! If you have any questions, please ask them here :)

TheDarkula pushed a commit that referenced this issue Mar 29, 2019
This pull pequest is part of the Track Anatomy Project. For more on the background there, please see issue #809 opened by @kytrinyx.

This is part of "Round 2", where we're looking at the start of the track and adding exercises that bridge the gap to the harder exercises and that are easy to mentor (ideally, mentoring on the earliest exercises will largely consist of copying, pasting, and tweaking snippets of text that address common concerns).

In this case, the gap between the second ("Gigasecond") and third exercise ("Bracket Push") is significant. The choice for "Bob" here is entirely pragmatic: it's already implemented as a side exercise, so we have it available, and it's easier than "Bracket Push".

This is still a work in progress and not the final track :)
TheDarkula pushed a commit that referenced this issue Mar 29, 2019
…ct, the mentoring queue looks much more manageable. However, there's still an overwhelming number of students waiting for mentoring, and waiting times can be long. There are 3 bottlenecks in the current progression: Bracket Push, Saddle Points, and Pythagorean Triplet. Together they are responsible for 250 students being blocked. As a mentor, I feel overwhelmed by this amount, and we suspect that the amount scares away other (potential) mentors as well.

To solve this we decided to take an extreme measure: turn the 3 bottleneck exercises into side exercises. The only goal is to get the mentor queue in good shape. It doesn't say anything about if any of these exercises should or should not be a core exercise. Any of them will be evaluated in other stages of the Track Anatomy Project. Depending on those outcomes and the number of mentors available, we can bring them back as core.

Your feedback on the technical aspects of this pull request are very welcome here. For questions or discussions about the track anatomy project we have opened issue #809](#809).
TheDarkula pushed a commit that referenced this issue Mar 29, 2019
…let to side exercises.

After the recent pull requests for Round 2 of the Track Anatomy Project, the mentoring queue looks much more manageable. However, there's still an overwhelming number of students waiting for mentoring, and waiting times can be long. There are 3 bottlenecks in the current progression: Bracket Push, Saddle Points, and Pythagorean Triplet. Together they are responsible for 250 students being blocked. As a mentor, I feel overwhelmed by this amount, and we suspect that the amount scares away other (potential) mentors as well.
To solve this we decided to take an extreme measure: turn the 3 bottleneck exercises into side exercises. The only goal is to get the mentor queue in good shape. It doesn't say anything about if any of these exercises should or should not be a core exercise. Any of them will be evaluated in other stages of the Track Anatomy Project. Depending on those outcomes and the number of mentors available, we can bring them back as core.

Your feedback on the technical aspects of this pull request are very welcome here. For questions or discussions about the track anatomy project we have opened issue #809](#809).
TheDarkula pushed a commit that referenced this issue Mar 29, 2019
…let to side exercises.

After the recent pull requests for Round 2 of the Track Anatomy Project, the mentoring queue looks much more manageable. However, there's still an overwhelming number of students waiting for mentoring, and waiting times can be long. There are 3 bottlenecks in the current progression: Bracket Push, Saddle Points, and Pythagorean Triplet. Together they are responsible for 250 students being blocked. As a mentor, I feel overwhelmed by this amount, and we suspect that the amount scares away other (potential) mentors as well.
To solve this we decided to take an extreme measure: turn the 3 bottleneck exercises into side exercises. The only goal is to get the mentor queue in good shape. It doesn't say anything about if any of these exercises should or should not be a core exercise. Any of them will be evaluated in other stages of the Track Anatomy Project. Depending on those outcomes and the number of mentors available, we can bring them back as core.

Your feedback on the technical aspects of this pull request are very welcome here. For questions or discussions about the track anatomy project we have opened [issue #809](#809).
TheDarkula pushed a commit that referenced this issue Mar 30, 2019
…cism.io/blog/track-anatomy-project). For more on the background there, please see [issue #809](#809) opened by @kytrinyx.

This remedies [issue #4779](exercism/exercism#4779) and logically places the two side exercise, 'Luhn From' and 'Luhn Trait', to be unlocked by the core exercise, 'Luhn'.

Your feedback on the technical aspects of this pull request are very welcome here. For questions or discussions about the track anatomy project we have opened [issue #809](#809).
TheDarkula pushed a commit that referenced this issue Mar 30, 2019
This pull pequest is part of the [Track Anatomy Project](https://exercism.io/blog/track-anatomy-project). For more on the background there, please see [issue #809](#809) opened by @kytrinyx.

This remedies [issue #4779](exercism/exercism#4779) and logically places the two side exercise, 'Luhn From' and 'Luhn Trait', to be unlocked by the core exercise, 'Luhn'.

Your feedback on the technical aspects of this pull request are very welcome here. For questions or discussions about the track anatomy project we have opened [issue #809](#809).
TheDarkula pushed a commit that referenced this issue Mar 30, 2019
This pull request is part of the [Track Anatomy Project](https://exercism.io/blog/track-anatomy-project). For more on the background there, please see [issue #809](#809) opened by @kytrinyx.

This remedies [issue #4779](exercism/exercism#4779) and logically places the two side exercise, 'Luhn From' and 'Luhn Trait', to be unlocked by the core exercise, 'Luhn'.

Your feedback on the technical aspects of this pull request are very welcome here. For questions or discussions about the track anatomy project we have opened [issue #809](#809).
@mobad
Copy link

mobad commented Mar 30, 2019

As a current student I really like the changes you guys are making but with no notification of when the track changes it it very confusing for students. (As you've noted)

So far my experience starting from about 2 weeks ago has been something like:

  1. Do "Hello World"
  2. Unlock and do "Pythagoras"
  3. Check back a few days later "Huh I could have sworn "Bracket Push" wasn't there"
  4. Do "Bracket Push"
  5. Check back a few days later "Is this thing bugged, why is "Reverse String" a core exercise now"
  6. Do "Reverse String"
  7. Check back a few days later "Bob" and "Gigasecond" are now core exercises
  8. Do "Bob" and "Gigasecond"
  9. And now "Pythagoras" and "Bracket Push" are no longer core exercises.

I realize my experience is mostly just bad timing but it's been frustrating.
If a student hasn't been checking as often as me they could have done "Pythagoras" and checked back a week later and now it looks like they haven't done anything.

It would be really great if students got notified when the track changes or if there was an easily visible changelog of the track with the last update date on https://exercism.io/my/tracks/rust.
Or at minimum just a header saying the track is currently be refactored.

@TheDarkula
Copy link
Contributor

@mobad It's something we've spoken about, and thanks for your input. I just opened an issue to cover it here :)

@coriolinus
Copy link
Member

The track anatomy project has been superseded by v3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants