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

      2017/01/20

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

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

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

私の失敗例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2. 講師から直接学びたい派なら

ストリートアカデミーをおすすめします。こちらもユーザー登録無料で参加したい講座だけ受けられるますし、料金も良心的なので良いと思います。1000円の講座もありました!

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

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

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

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

あとホームページ見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはDODAというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『DODA』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、DODAは未経験者を支援し転職を成功させています。未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

フリーランスになりたい人には『ギークスジョブ』

フリーランスエンジニアになるには人脈が必要と思われがちですが、ギークスジョブに登録して希望条件を伝えれば、自分に合った案件を紹介してもらえるんですよ!思ってるより全然簡単にフリーランスってなれるもんなんです。

東京・大阪・名古屋・福岡の案件を紹介してもらえます。

 - 勉強法 , ,