その目標や学習計画に無理はありませんか? ~プログラミング言語の学習の進め方について~

MENTAでメンティーさんのプロフィールやメンター募集の投稿を読むと、かなり多くの人がスクールやWebサービスを利用して、短期間にたくさんのスキルを学習しているようです。
すでにいくつか学習が終わっていて、次は○○○を勉強する予定ですとか、これから△△△と□□□を勉強して、できたら◇◇◇も勉強したいですとか・・・

ここでは、プログラミング言語の学習の進め方について、私の意見を書いてみます。

そんなに短期間にたくさん詰め込んで身に付くのか?

私がプログラムの勉強を始めた頃はネットはもちろんスクールもなかったので、すべて独学でした。
まだ高校生だったし、まわりに聞く人もいなかったので、ひたすら雑誌に載っているコードを打ち込んで動かすの繰り返しで覚えていきました。
社会人になってから新しい言語を覚える時も、基本は参考書を買って自分で勉強するというスタイルでした。

現在では、いろいろなプログラミング言語やフレームワークがあとからどんどん出てきて、ビジネスの実務で使われているものも増えてきています。
そして冒頭で示したように、学習スタイルも変わってきていて、ネットを利用してある程度効率よく学習できるようにもなってきています。
それでも、あまりにも無茶な計画で進めようとしている人が多いと思っています。

プログラミングは短期間で一気にスキルアップできるようなものでもなく、地道にコツコツやっていくのが基本だと思っています。
プログラミングのスキルというのは、仕様をプログラムに落とし込むためにはどうすればいいか、自分でロジックを考え、部品を作って組み立てていき、正しく動かなければデバッグして動くようにする、ということの積み重ねでスキルアップしていくものです。

たくさんのプログラミング言語や関連スキルを短期間で覚えようとすると、文法を覚えるくらいで終わってしまい、本当に大事なプログラムを書く力というのは身に付かないのではないでしょうか?

どうして無理な計画を立てるのか?

競争

初学者が無理な計画を立てる原因の一つは、スクールなどの競争があるのではないかと思っています。
ITエンジニア不足が叫ばれる中、ITエンジニアとして就職しようとする人、転職しようとする人が増えてきています。
そして、スクールやWebサービスが乱立して、その競争が激しくなってきていると思います。
いろいろなコースが作られ、多くの言語やスキルを手軽に学習できるようになってきています。
たくさんのスキルを学習できることをサービスの売りにしているという一面があると思います。

競争という観点では、学習者の競争というのもあると思います。
ITエンジニアを目指す人が増えれば、その人たちの間でも競争となります。
今ではネットで情報が簡単に入手できますから、他の人があれもこれも学習しているから自分もやらなければと思って、いろいろな言語や関連スキルの学習を計画に取り入れてしまっているのではないでしょうか?

ポートフォリオ

もう一つの原因はポートフォリオです。
Web系のスキルをアピールする手段として活用されています。
ポートフォリオを公開するにはサーバを契約する必要がありますが、低料金(一部は無料)で利用できるようになってきています。
そして、就職、転職を少しでも有利にしたいがために、かなりレベルの高いものを最初から作ろうとしている人が多いと思っています。
そのため、必要なスキルが増え、無理な学習計画につながっているのではないでしょうか?

1つのプログラミング言語を集中的に!

まず、短期間で高機能のアプリケーションを作れるようになるのは無理だと思ってください。
目標が高過ぎて挫折してしまったり、完成させるためにほとんど人に頼ってしまうということになってしまいます。
それではスキルは身に付きません。
そんな状況でポートフォリオを評価されて、就職、転職に成功したとしても、入社してからとても苦労することなってしまいます。

ちょっとひねくれた見方をすると、短期間の学習で作った高機能のアプリケーションをポートフォリオとして見せられても、採用担当の方は本当に自分の力で作ったのかと疑問に思うのではないでしょうか?

中にはプログラミングスキルの上達がとても早い人もいるかもしれません。
でも最初は目標をあまり高くせず、早くスキルアップできたら、あらためて目標を高めに設定し直せばいいのです。

まずはメインのプログラミング言語のターゲットを1つに絞って、集中的に学習をすすめてみてはいかがでしょうか?

1つのプログラミング言語である程度のレベルまで到達したら、そこから別の言語を学習するハードルはかなり低くなっていると思います。
機能は単純なものでいいので、あまり人に頼らずに自力でアプリケーションを完成させられるレベルを目指しましょう!

最後に

初学者はいろいろ教えてもらいながら進めるところからのスタートになります。
シンプルなものを教えてもらいながらで良いので、正しく動くプログラムが作れたという成功体験を得られることが大事です。
そこから徐々に自分で進められることを増やしていけるように努力することが必要となります。

メンターとして、このような学習の進め方をサポートできればと思っています。