<p> プログラミング未経験者や初心者なら、多くの方が利用したことがあるであろう、初心者向けプログラミング学習サイト【Progate】。</p>
私も、未経験→IT業界に入る際などは、利用させて頂いた記憶があるのですが
経験者になって、こう思い始めました。
「もしかしたら、このサイトを端緒としてプログラミング→IT業界で稼ぐ事を目指すのって、かなり効率悪いんじゃ。。。」
私とて、このサイトで学習を何度か行い、レベルもある程度まで上がったところまでやった記憶があるので、信じたくない気持ちもありますが、日に日にその思いは強まる一方です。
実際に、先日、本サイトで、プログラマーになる方法を記事で上げましたが
そこでも書いたように、一番はじめにプログラミングを行う上でやるべきことは、「Hello World」を出力することではありません。
今回は、未経験者や初心者の方がどのようにすれば効率よくプログラマーとしての経験を積めるのか、という事をおさらいしながら、「Progateを仕上げてからプログラミングを行う」ということをオススメしない理由及びその効率の悪さを5つほど上げていきます。
同時に、実際の現場のことについてや、より効率的な学習等についても説明させて頂きます。
[toc]
1.はじめから環境が整っていて、初心者がつまずく要素がほとんどない
Progateは、プログラミング初心者が手軽に興味のある言語に触れられるよう、最初からコードを書くだけで面をクリアー出来る要素が全て揃っています。
非常に親切に見えるかもしれませんが、これはとてもよろしくありません。
何故かと言うと、プログラマー未経験者が、どのような現場や環境で働いたとしても、実際にまず行うべきことは、「PCや各種ツールのセットアップ、開発環境の理解・構築」だからです。
Progateには、そういった初心者が最初につまずきやすいフェイズ、すなわち超基本的なウェブの立ち上げやハードウェアの仕組みといった知識を得る機会をスキップしてしまっています。
ソフトウェアに関しても、最低限サーバサイドにおけるローカル開発環境を自力で用意できるようにしたり、その他、例えばJavaなら、コンパイラの仕様を理解したり統合開発環境の使い方を覚えるところなどから始めるのが、Javaプログラマーにとって必須の知識となってくるのですが
Progateはそういったレッスン以外の各種チュートリアルが、コラムで載っている程度で、読み飛ばせてしまいます。
もちろん、必要とあらばそのコラムを読んでから徐々に身につければ良いのですが、その分量及び質、共に十分とは言い難いです。
また、これは初心者・ベテラン問わずの話になりますが、プログラミング作業において最もエンジニアが成長する瞬間は、エラーが出てそれを解決したときです。
Progateは間違った答えを出したとしても、優しく「incorrect」という表示とともに、どこが間違ってくれるのかを”日本語で”わかりやすく教えてくれます。実際の現場ではそうはいかないし、自分でエラーを解決する力が絶対に必要になってきます。
どんな上級者であっても、エラーを出さない人はいませんので。
2.学習内容が豊富なようでいて全然足りていない
様々な言語の基本学習や、コマンドライン、MySQLなど、Progateにはある程度、分野を学ぶためのコーナーがあります。
モダンなジャンルは一通り揃えているように見えますが、控えめに言っても、難易度だけでなく量や種類の絶対数も、現場レベルには程遠いです。
一応、コマンドラインやGitのレッスンがあったりしますが、内容があまりにも易し過ぎます。小学生でやる四則演算の学習で例えるなら、一桁の足し算レベルです。
実務では(現場にもよりますが)、例えば正規表現の使い方をコピペでなくきちんと理解する必要性に迫られたり、オープン系ソフトウェア等を使いこなせるようにしなければならない、といったことも多々あります。せめてそういった基本的な正規表現や、実際によく使われているソフトウェアの使い方などをレクチャーするコーナーくらいはあるべきでしょう。(サイトの仕様的に厳しい部分もあるとは思いますが、、)
その他、少し考えるだけでも、例えばDockerやインフラ系の知識及びその様々な機能、ライブラリの扱い方など、どんな現場においても実際の業務上覚えなければならないことは山ほどあります。
にも関わらず、当たり前のようにあるはずのものが搭載していない分野が多数見受けられているのが残念です。
レッスンの中で取り入れることが難しくても、ユーザーにこれらの学習の必要性をどこかで説明できる機会を設けるだけで、少しは実用性が高くなると思うのですが。
3.実際の学習が何の役に立っているのか、体系的に理解させられていない
「Progateの『HTML・CSS道場コース』を最後まで終わらせたけど、何も身についてない感がハンパない」
といった声が(主にツイッターなどで)毎日のように挙げられています。
無理もありません。
コードだけが書けるようになっても、実際に自分で理解出来ずただの丸暗記になってしまっているのですから。
学生の頃の試験勉強を思い出してください。
一夜漬けの暗記だけで対応しようとしても、一回覚えてすぐに忘れてしまいます。また、日頃からしっかり勉強して試験範囲を繰り返し覚え、本番で良い点を取れても、試験期間が終わった途端に全部内容を忘れた、という経験を持つ方も多いと思います。
丸暗記というのは、基本的に覚えにくく忘れやすいものです。
反面、理解して自分の血肉にしたものは、何年経っても忘れないものです。
Progateくらいのレベル及び学習内容では、マークアップやフロントエンド言語の分野ですら、ほとんどレッスンを丸暗記してやっただけで、道場コースまで出来てしまいます。それでは「何も身についていない」という感覚を抱くのは当然のことなのです。
Progateでは、作ったものをすぐに目に見える形にしやすいWebサイト制作のレッスンパックですらそんな具合なので、サーバサイドにおいては言わずもがな、です。
上記のように「機械学習で用いられることが多いと言われているのでPythonのレッスンを進めたが、結局これがどう役に立つのか全然わからない」という声が上がるのも、また当然です。
特に「AI開発」という分野に憧れてプログラマーとしての道を歩もうと思っているユーザーも決して少なくないと思うのですが、Progateでは各種ライブラリやフレームワーク(anacondaやKeras、TensorFlowなど)の使い方及び機械学習に必要な数学のレッスン・コラムすら皆無です。これではAIエンジニアになりたいと思う方にとって、Pythonの学習をさせるだけさせておくだけという形に終わってしまって、単純に時間の無駄です。
ちなみに、もし「未経験者だけどAI開発に興味がある」という方がいれば、↓の私の記事も参考にしてみてください。
4.コードを「読む」練習をさせていない
私が個人的に、最も致命的だと思っているのが、これです。
プログラミングそのものを、コードを読み書きする(実際にはそれだけではないのですが)作業をメインとして考えたとしても
Progateでは、コードを「書かせる」ことがメインで、「読む練習」や「他人の書いたコードを理解させる」と言ったステップが全くありません。
これは、はっきり申し上げてしまうと、実際にプロになった後のことを全く考えていないサービスとも言い切れてしまいます。
何故なら、未経験者の方が最初のセットアップを終えてから、画面上の作業を行う際には、実際にコードを書いてプログラムを組み込むより、まず既存のコードを理解するところから始めることがほとんどだからです。
これは、自社開発や客先常駐でのチーム開発の現場だけに留まりません。
たとえ自分で最初からフルスクラッチで開発し、リリースまで行う案件の業務についたとしても、請け負った仕事上において、参考にするための技術ブログやGitHub等に書かれてあるコードを理解し読めるように出来ていないというのは、ありえないことなのです。
ましてや、企業が既に市場に出して動いているソフトウェアのコードを実際に読んで理解することは、Progateでただコードを書くことによって覚えられるものでは到底ありません。
読めるようになるためにはもはや
【実務経験を積む】
或いは
【自分の意思でコードの役割や意味を学習しつつ、サービスを立ち上げるなりインプットとアウトプットを繰り返すなりしながら、訓練する】
しかないのです。
5.ゲームそのものである
Progateを始めて、やり込んでいる学習者の方達に苦言を呈すような形にはなってしまいますが
SNS等で
「Progateは、経験値やレベル上げなど、RPGなどのゲームをプレイする感覚で出来てしまう」
という声が多々あります。
しかし、実際には
「『感覚』ではなく、本当にゲームそのものです」
ということを、声を大にして言いたいと思います。
何度も申し上げるように、Progateではとても現場レベルの知識や技術力まで届きません。
なので、レベル上げを行い続けるという作業は、もはやドラクエでのレベル上げ作業と何ら変わりありません。いや、ドラクエをプレイする方が、好きな人にとっては、大事な息抜きの時間になるので、そっちの方が有益とさえ言えます。
むしろ、Progateのレベル上げで「自分はできる人間だ」という【自信】ではなく【錯覚】を抱く事が恐ろしいです。
もう一度言いますが、Progateのレベル上げは、本当にゲームでレベル上げしているくらいの段取りと同様のものに過ぎません。その時間があるなら、実際に自分で、書籍など他の媒体を使ってコードを読み書きして学習したりポートフォリオ(成果物)を作ってアップしたり、もしくは本当のゲームで遊んでストレスを軽減する方が実践的です。
Progateのレベル上げにこだわるのは、やめましょう。
6.Progateをやらずに、何をやるべきか
ここまで、Progateを初心者におすすめしない理由を5つほど挙げてきました。
ならば、ProgateをやらずにどうやってIT業界に入り、プログラマーとしての一歩を踏み出せば良いのか、ということについて触れたいと思います。
詳しくは、こちらの記事にも書いたのですが、もう一度ここでもザッとおさらいすると
1.まず自分用のプログラミングに適した作業用PCを買う
2.業界や転職志望先の企業のことを知る
3.エージェントや現役エンジニアに相談する
4.ポートフォリオを作る
5.プログラミング以外の学習や練習もおろそかにしない
となります。
特に、何故か一番重要且つ始めにやるべきである【1】の「自分用PCを買う」というフェイズをすっ飛ばして、既に持っている趣味用のPCやスマホからProgateを始める人が多いです。
しかし、プログラミングを趣味程度に留めておくならともかく
本気でIT業界に入りたいというのであれば、【道具】くらい用意しましょう。
お膳立てされた環境構築のもと、「Hello World」を出力できるようになったりクラスやインスタンスの意味を把握出来たとしても、実務レベルはもちろん、自分にプログラミングの適性があるのかどうかという判断材料にすらなりません。
他の業界に置き換えて考えてみても、転職やキャリアチェンジのために道具や学習における自己投資を行わず、会社や無料サービスの運営側が用意してくれるものだと考えている内は「本気ではない」ということです。
カメラをメインの道具として撮影を行うスタジオに就職する際、「自分用のカメラを持っていないし使ったこともない」という人を、企業側は採用したいと思うでしょうか?
一人前の調理師を目指す人に、包丁を持たない日があるでしょうか?
自分が使うプログラミング用のPCを吟味をせず買うことも怠り、ましてや自分のキャリアプランも描けないようでは、仮にIT業界に運良く入れたとしても、プロのエンジニアとして生き残っていくことは難しいでしょう。
最後に
ここまでの文で、Progate及びその学習者の方達に、少々きついことを言ってしまったかもしれません。
しかし、最終的に、全ての大切な物事は、決めるのは自分自身です。
本記事を読んだ方が、少しでもProgateの学習で時間を必要以上に無駄にしないように、と思い、今回書き上げた次第です。
最後までお付き合い頂き、ありがとうございました。