Progateだけでプログラマーになるなんてムリ!次は北ソフト工房をやってみよう
Progateをディスる記事ではありません。
Progateはプログラミング学習の入り口としてとても優れています。
非常に分かりやすく説明してくれるので、周りに聞く相手がいない独学者にとっては福音のようなものです。
ただ、Progateを何周かした(してもらった)ところで「脱初心者には程遠い」ことは知っておいた方がいいです。
なぜ脱初心者できないのでしょう?脱初心者するには何をすべきなのでしょう?
多分に主観が入りますが、私の考えを書きたいと思います。
Progateは釣り方は教えてくれない
Progateでは答えが提示されています。ただし、答えにたどり着く方法は提示されていません。
参考情報があらかじめ提示されている
Progateのレッスンは懇切丁寧なスライドと、それに対応した練習問題の構成になっています。
練習問題を解くのに必要な情報は、スライドに全て含まれています。
つまり参考にすべき情報があらかじめ提示されているのです。
調べながらプログラミングするのが普通
実際のプログラミングで参考にすべき情報が提示されていることはありえません。
自分の知識か他人の知識を総動員します。
他人の知識とはほとんどの場合Webサイトです。国内・海外を問わずWebサイトを調べながら作ります。全部知ってる人なんていませんからね。
プログラミングにおいて「調べられる」ことがとても重要です。
以下のポイントを外すと、得られる情報は限られてしまいます。
日本語の情報だけ調べていないか?
掲示板を避けていないか?
コピペできそうなWebサイトだけ見ていないか?
検索結果の1ページ目だけ見ていないか?
特に日本語のWebサイトだけを情報源にするのはやめましょう。
大衆の意見は誤っていないことが多い
ある程度のキーワードを元にググれば、何かしらの情報がヒットするでしょう。
それが信頼性のあるWebサイトなのか即断するのは難しいです。
最低限、以下はチェックしましょう。
いつの情報なのか?
自分が使っているバージョンに合っているのか?
より新しく洗練された方法はないのか?
公式の情報はないのか?
理屈が説明されているか?理屈が理解できるか?
よく使われている解決方法なのか?(高評価か?)
個人的に一番注目するポイントが一番最後です。
複数のサイトを見て、より使われている方法を採用した方が良いことが多いです。同じような意味で、海外の掲示板で高評価の回答も信頼性が高いと思います。
説明できないならコピペしない
答えらしきWebサイトがヒットしたとして、サンプルとして載っているプログラムや解説をすぐには理解できないと思います。ソースをじっくり読み解くことが求められます。
とりあえずコピペして、コンパイルが通るまで何度も微調整して、なぜコンパイルが通ったのか、どうして動いたのか分からないまま、あー動いた動いたラッキー、なんて最悪です。
コピペは決して悪くありません。成長するために他人のソースをマネるのは基本ですから。
問題なのは理解しないままコピペすることです。ペーストした時点で自分のプログラムです。実際のプロジェクトで説明を求められた時、コピーしたから分かりません・・・なんて通用しません。
Progateで学ぶのは断片だけ
回答を書くだけだから仕組みが分からない
Progateでは回答用のテンプレートがあらかじめ用意されています。どうしてプログラムが動くのか知る必要はありません。
コンソールに出力する練習問題だった場合、コンソールに出力する部分だけ書けば正解となります。
コンパイルはおろか、プログラム自体を動かすためにどんなクラスやメソッドを書く必要があるのか分からなくてもよいのです。
注目すべき箇所に集中させるためにそのような形式になっていると思われますが、それ自体は何の問題もありません。余計なところでつまづかなくて済みますからね。
ただ、断片だけ知っていてもプログラムを書けるようにはなりません。
何も見ずにHello Worldを出力できる?
Progateをやっただけでは、Eclipseで”Hello World”が出力できないと思います。これ以上簡単にならないようなプログラムさえ書けません。やっていないのだから当たり前です。
実際のプロジェクトに配属なんてできるはずもありません。
Progateの次は北ソフト工房の練習問題集がいい感じ
Progateの次にやるオンライン学習でオススメなのが、北ソフト工房の練習問題集です。
Progateと北ソフト工房のどちらにもある言語はJavaしかありませんが、別の言語でも入門の入門の後でやるには最適です。
一番の特徴は良い意味で不親切なことです。
問題が書かれているだけで、Progateのように実行環境は用意されていません。自分で開発環境を整備して、一からプログラムを作る必要があります。
簡単なプログラムであっても断片ではないので、ファイル構成はどうすべき?どうやって実行する?結果はどこに出力される?コンパイルってどうやる?といった基本的なことが分かります。
問題自体の難易度はProgateよりちょっと上ぐらいですのでハマることもないでしょう。Progateの次にやるにはちょうどよいのです。
Progateで考え方は学べない
英文法を覚えたとして、そのまま文章が書けるでしょうか?
Progateで学べるのは文法のごく一部です。
独学でオブジェクト指向は理解するのは大変
thisとか多態性とか継承とかクラスメソッドとかインスタンス変数とかサラっと出てきますが、Progateで理解するのはムリです。
スライドに書かれていることを表面上分かったことにして、何となく正解をなぞるだけで終わります。
どうクラスを分けるべきなのか、メソッドのシグネチャはどう設計すべきなのか、ネーミングは?などなど知るべき考え方は山ほどあります。
例としてオブジェクト指向を挙げましたが、他のパラダイムでも同じです。
有識者が道を示そう
こういったことは有識者が解説すべきでしょう。一から独学なんて非効率です。
当人も言われるまで重要さに気づかないことがありますからね。
全部解説するのはムリでも、どんな情報を元に学習すべきなのか道ぐらいは示すべきです。
最後に
Progateは全くの初学者が最初にやる学習としてはベストだと思います。
ただし、位置付けを誤らないことが大切です。あくまで最初に苦手意識を持たれないように、つまづかないようにするためのものだと思っています。
(さすがに無いとは思いますが)間違っても戦力としてプロジェクトに配属するなんてありえません。
学ぶ側も、Progateで学べることは10のうち1も無いことは認識した方がよいと思います。