プログラマーSEの『やってはいけない勉強法』

      2017/01/20

「やってはいけない」とやや釣りっぽいタイトルですが、実際良くない勉強法というのはあります。

その典型は勉強のための勉強です。

私がやってしまった失敗談を踏まえて、『やってはいけない勉強法』と『やるべき勉強法』を紹介します。

私の失敗例

私が失敗した勉強は、「関数型言語を学ぶために勉強する」です。

関数型言語を使って何かを作りたいというのならいいんですが、私の場合、そういうのではなくて

「関数型言語を学ぶと関数型の考え方が身について、それがふつうのプログラミング言語(手続き型とかオブジェクト指向)でコードを書く際にも、活かせるんじゃないか?」

というモチベーションで関数型言語を勉強していました。勉強のための勉強です。

LISP, Clojure, Haskell, F#, Scalaといろいろやりましたが、どれも身につきませんでした。関数型言語がどういうものなのかという知識は身につきましたが、実用的なスキルと呼べるものにはなりませんでした。

なんでそうなるかというと、目的がないからです。

目的のない勉強は身につかない?

学ぶ内容が簡単なものであれば、目的がなくてもある程度身につきますが、関数型言語のようなパラダイムが違うものを目的なしに学ぶのは難しいんです。

ですから、関数型言語で「副作用のないプログラミングをする必要がある」とか、「次入るプロジェクトで関数型言語を使う」などのように目的があれば、結果は全然違ったと思います。

私が関数型言語を学ぼうと思った理由は「関数型言語を学ぶことで普段のプログラミングにも関数型の考え方を取り入れよう」というものでしたが、これってもっと簡単な勉強法があります。

現代の主要なプログラミング言語の多くは関数型言語の機能をいくつか取り込んでいますが、それって主に

  • 関数が第一級オブジェクト
  • 高階関数

という機能です。これってわざわざ関数型言語を学ばなくても、自分が使ってる言語で高階関数の使い方を学べばいいんです。

関数型言語を学ばなくても、「関数型的な考え方」は身につけられる

私は以前、高階関数の使い方がよくわかってなかったんですが、node.jsをやったら嫌というほど、高階関数を使うことになり、自然と覚えてしまいました。

node.jsってサーバーサイドのJavaScriptなんですけど、IOが発生するたびに、IOの結果をコールバック関数(処理が終わった時に呼ばれる高階関数)で受け取らなければならないので、DBアクセスするたびに高階関数を使うこととなり、めんどくさいなぁと思いつつも、そうやる以外に方法がないので、強制的に高階関数を使ったコードを書くようになりました。

すると、node.jsじゃなくC#やRubyのコードを書く時にも高階関数をふつうに使えるようになったんです。

ですから、勉強のための勉強じゃなく、使ってるうちに自然と覚えてしまったっていうのが一番の勉強法なんです。

あとは関数型言語って「再帰処理が多いので再帰処理の考え方も学べそう!」とも思っていたのですが、これも関数型言語を学ばなくたって学べます。

再帰はむやみに使うものではない

関数型言語はループも再帰で行うので、再帰をつかう頻度は高いのですが、むやみに再帰を使えばいいというものでもありません。

手続きが言語で平坦なループを再帰で実装したらロジックがわかりにくくなってしまいます。そうではなく再帰構造のデータを扱う時にこそ、再帰を使うべきです。

よくあるコードサンプルにディレクトリ走査をするものがあります。あるディレクトリ配下のファイルとディレクトリを全て処理する場合に、再帰処理によって、配下のファイル全てを走査することが出来ます。

ですから、再帰を学びたいなら、普段自分が使ってる言語のディレクトリ走査のサンプルコードを見ればいいだけです。

そんなわけで、勉強のための勉強ではなく、目的を達成しようと試行錯誤してたら自然と身についてたってなるやり方を心がけていきたいと思います。

プログラミング初心者におすすめのサービス
1. 講師から対面で学びたい派なら

プログラマカレッジをおすすめします。ProEngineerという転職エージェントが運営しているプログラミングスクールです。20代限定なんですが、無料で受講できて、修了後、就職支援もしてくれるんです。最高過ぎですよ、これ!!就職の紹介料を企業からもらえるのでスクールを無料にできるんでしょうね。すばらしいシステムだと思います!

30代以上の方には

プログラマカレッジは20代限定なので30代以上の方にはWebスクをおすすめします。受講料の返金保証がついているし、毎日11時〜23時まで通い放題なのでとてもいいと思います!

2. 自宅で学びたい派なら

「就職保証付き」オンライン就職予備校をおすすめします。Javaエンジニアコースでは就職保証がついているのでプログラマーとして就職したい方にはぴったりです。Javaエンジニアの求人ってめっちゃ多いし、求められる技術レベルもそこまで高くないのでちゃんとした教育プログラムなら就職保証できるだろうなとJavaエンジニア経験者の私も思います。

3. つまづいた時に質問したくなったら

プログラマー専用の質問サイトteratailをおすすめします。 つまづいた時にteratrailで質問すれば教えてもらえます。

これらのサービスを活用すれば、全くの初心者からでもプログラミングをばっちり出来るようになると思います!レッツトライです!

 - 勉強法 , ,