プログラミング言語は道具に過ぎません。
あと、1つのことを実現するための手段は1つではありません。
つまり「この言語を身につけたからこれができる」ではなく、
「これを作るためにこの言語を採用する」ことになります。
プログラミング言語自身には確かに得意不得意はありますが、
それはあくまで「ちょっと難しい」くらいで余程物理的に不可能なことでなければ
大抵の言語で実現が可能だったりします。
(もしくは複数言語を組み合わせて不得意部分を補い合うとかよくある話)
なので、「これを勉強しても何が出来るかさっぱり」という場合は、
道具をベースに物事を考えているからということになります。
ベースはあくまでゴールに置くべきで、そのゴールに必要な道具を用意して適切に取り扱うべきです。
あと「プログラミングが上手くなりたい」という表現に大変違和感があります。
スポーツであれば「あいつ上手いな」は結構素人目にも分かることもありますが、
プログラミングにおいてはその概念は非常に曖昧なものとなります。
「上手いの基準ってなに?」 答えられますか?
答えられないのであれば、目指せますか?
ちなみに私は答えられません。
なぜならプログラミングの本質・本来の目的は「問題解決」にあると考えているため、
技術力だけが高くても役に立つとは言えないからです。
それを問題解決のために使ってこそようやく真価を発揮するものだからです。
むしろ技術力はそこそこでそれをきちんと扱える方が大事ですし実務では重宝されます。
(というか知的生産物って数値ではかれるものじゃないから「技術力」って甲乙つけられるものではないです)
多少冗長でも良いので、まずは1つ目的を決めてそれを達成することです。
別回答に提示された質問に私も回答していますが(これです)、
まずは要件通りのものが出来上がるのが前提で、後から見たときに「ここはもっとこうできた」と思えることが大事です。リファクタリングですね。
それにより「様々な手段で1つのことが実現できる」という糧となり、様々なシーンで活きるようになるのです。