Skip to content

Anagram exercise placement #126

@mlk5060

Description

@mlk5060

Hi there!

First of all, I'd like to say "thank-you" for the effort that has gone into creating the Exercism exercises for Rust, so far they've been a great facilitator for me getting used to the language.

I recently started working on the "anagram" exercise (exercise 3) in the Rust Exercism suite and I've found the learning curve to be vastly steeper than I have encountered so far. The first two exercises took me around 45 minutes to an hour, combined, to complete and required reading some simple documentation. However, I've been working on the "anagram" exercise for approximately 3-4 hours now!

I must be clear: I, personally, am not complaining about the difficulty since I appreciate challenges and they motivate me to work harder. However, I think that exercise 3 may introduce too many new and difficult concepts specific to Rust that may cause people to become demotivated and unwilling to invest the time required to complete the exercise. Ultimately, this may result in them giving-up learning the language. Currently, the exercise seems to introduce the following concepts "all-at-once":

  1. Lifetimes (as far as I'm aware, a Rust idiom and from what I've heard from other people, difficult to understand)
  2. Ownership of variables
  3. String/&str and all other associated String "quirkiness" (number of chars != number of bytes etc.)
  4. Loops
  5. Vectors

Some anecdotal evidence of the learning curve: simply implementing the main function declaration took me around an hour due to the fact that lifetimes have to be declared and one has to declare variables as being borrowed! Following on from that, I've managed to hit a complete wall when it comes to implementing the anagram checking functionality since I'm used to using Strings as indexes where string[0] is the first character in the String.

Essentially, I think the exercise may produce cognitive overload in people and I would like to suggest that the individual concepts be given their own, simpler, exercises. The "anagram" exercise could then be a concatenation of the concepts learned in the previous exercises. I'd propose this since I believe it would help keep users motivated since, if anyone else has had the same experience I've had, comparing the relative amount of time taken to complete exercise 3 compared to the previous 2 may cause some people to "give-up" and that would be a shame!

If anyone has had a similar experience, I'd be interested in hearing your thoughts :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions