Scale Generator

For someone without a music background, this program statement seems to require a lot of attention. Scales, Tonic, Chromatic etc.

Does anyone else feel the same with this exercise?

1 Like

While that is true, developers often do solve problems that they are not necessarily “domain experts” in.

Did you feel that there was enough information for you to solve the problem?

Did you learn anything about the problem domain?

Even though you are indicating that it was a lot, do you feel that it is too much? I ask because “a lot” does not necessarily communicate “too much”.

The number of “nouns” in that problem statement was “bit too much” for me. I had spent an hour and still couldn’t form the intuition of the problem statement. I am going to spend more time, and see.

I understand that I don’t have be domain expert, but this problem seems to require some sort of prior knowledge to form the intuition.

If I understand it, I can say what exactly it is.

It sounds like you have not given up yet.

It is good to pay attention to your experience with it, and hopefully we can improve it somehow. Many of us have either seen it too many times, or have been exposed from the beginning, and so we will not really have the same ability to see what you may be able to see, to make it better.

Or, it may be that it is challenging, but ends up being not too challenging.

I am looking forward to hearing your thoughts on it.

This exercise was very intimidating to me the first time I saw it because of similar reason.
My suggestion is try to ignore all the “noise” and focus/ look at it from the points of pure data / values, focus on what the problem want instead of needing to understand about notes, chromatic or interval.

(this was based on my experience of it in python track)
There is a starting point: the tonic, a string

With that tonic, we need to find the chromatic : a list of of string. This is done based on the tonic and its relation to the group of notes, and then the pitches it belong to. (These information are provided). This part is the key of the exercise imo,

Finally the interval return the chromatic again but this time with its value being shift based on the value of the interval.

I also agree with @kotp about this point.

Or, it may be that it is challenging, but ends up being not too challenging.

1 Like

This is very, very true. Much of my professional experience involved writing code without understanding large parts of the systems I was interacting with, in one sense or another :slight_smile:

1 Like

My advice (not just for this exercise) would be to spend some time studying the test suite and use that as a basis for understanding the informal requirements, instead of the other way around. If that feels like cheating, you can think of tests as a list of examples rather than a list of validation criteria. In TTD there’s a common sentiment that automated tests are the best form of documentation.

I took a look at the exercise and between reading the informal requirements and reading both going back and forth, it 10x-ed my understanding.

1 Like

Okay, after doing the exercise I must agree that it is very over-saturated with details and unnecessary terms. For instance the only thing that one needs to extract from the section on “diatonic scales” is that:

‘m’ = skip 0 (next tone is one to the right).
‘M’ = skip 1 (next tone is two to the right).
‘A’ = skip 2 (next tone is three to the right).

Not sure how rewrites are mandated here. Being able to distinguish important information from superfluous noise from a problem statement is also a skill that gets better with practice, so there might be some disagreements on whether it should be updated or not.

Let me know if you have any questions that needs clarifying though.

If you want to strip all the noise out and get the minimum set of knowledge possible into a few sentences, we can then use that to wrap less chaotic story around :slight_smile:

I apologize in advance for being impulsive.
I am not a native English speaker and have no musical background. it looks like a mess to me, let me explain. Compared to the other exercises, there is a lot of text and no examples. And even the purpose of the exercise is described using words that are not clearly defined, but only mentioned further on. I realize that this can be considered an experience of understanding a real technical task, but this is a site for teaching programming languages, their syntaxes or paternas.
I suggest comparing it to Binary Search in Rust on Exercism or Space Age in Rust on Exercism .
These tasks literally describe the algorithm! But the tasks are of the same complexity, then the question arises as to how the complexity of a task is determined? If in one you try to understand what they want you to do, and in the other you almost retype the text without thinking.

1 Like