I don’t get how "日本語が上手になるように毎日勉強しています" (日本語が上手になる) is a non-volitional verb/uncontrollable verb (Uncontrollable Verb - 雨が降る can’t control when it rains. 朝になった can’t control time) I understand that "早く良くなるように休んでください" (早く良くなる) is a non-volitional Verb since you can’t control how someone recovers but why can’t you control becoming/be better at Japanese by studying? For example: "医者になるために毎日勉強しています" (医者になる)become a doctor by studying/going to a medical school.
Volitionals and Non-Volitionals
意志動詞【いしどうし】 and 無意志動詞【むいしどうし】 are verbs that have "volition" or verbs without "volition". Volition in this context is the ability of the agent to control the action. In a volitional verb, the verb is an expression of the agent's will. Non-volitionals, on the other hand, are verbs that are not controlled by the agent and occur spontaneously. Volitionals verbs must be used with agents that have a "will" they can impose, like people, animals, or personified objects.
Do not confuse this with 他動詞【たどうし】(transitive verbs) and 自動詞【じどうし】(intransitive verbs). Although a large majority of 意志動詞 are 他動詞, some are not. Here are some examples:
落【お】とす - Transitive, volitional
座る【すわる】 - Intransitive, volitional
落ちる【おちる】 - Intransitive, non-volitional
So where does になる fit into all of this? Well, it seems to have a special place depending on the context. For example, the phrase 「先生【せんせい】になる」makes なる a verb of volition while 「病気【びょうき】になる」 makes it a non-volitional. The reason for this is you cannot control whether you "become sick" or not. An easy test for this is adding ください to the end.
Please become a teacher.
This is a perfectly valid sentence. Whether you do or do not become a teacher is under your own control.
Please get sick.
This is grammatically incorrect. You do not control whether you get sick or not. If someone asked you to "get sick" the best you could do is probably sit in the rain and hope you get sick. You are not in control. The article I referenced seems to agree with this notion, but apparently there are scholars who disagree as well, because you could technically ask someone to at least try to get sick.
I want to say that this topic is sometimes debated, and as @Eiríkr Útlendi has demonstrated in the comments, なる is often listed as an example of 無意志動詞.
There are definitely other verbs can be both volitional and non-volitional. For example, in 「家【いえ】をでる」, 出る【でる】 is volitional. However, in 「水【みず】が出る【でる】」, 出る is non-volitional.
From what I have learned, ために is only used when the clause before it is directly controlled by the speaker. It is an expression of the agent's will. The clause before ために must express volition. On the other hand, the clause before ように should not express volition of the agent (Emphasis on "agent". ように may express volition of a different subject—please see the comment section). Finally, agent of the first clause in a sentence using ために must be the same as the agent of the second clause.
A more intuitive way to explain this is that ために implies full control of the situation while ように implies that the agent does not have full control. Here are some examples from Chiebukuro:
Study hard to become a doctor.
The second sentence is incorrect because なる here is a volitional. You control whether or not you become a doctor, so this can only be used with ために. As for 上手, 「日本語が上手になる」 makes なる a 無意志動詞 because 日本語 becomes the agent of the verb, which cannot have volition since it is an inanimate thing.
In order for my Japanese to get better, I am studying my hardest.
Another reason why this first sentence is invalid is because the agent of the first clause （日本語）is different from that of the second （私）.
More Examples of 意志動詞 and 無意志動詞
Related Posts: なります intransitive verb - volitional/non-volitional