プログラミング学習におけるアンチパターン
📅 December 06, 2020
•⏱️5 min read
もし8時間、木を切る時間を与えられたら、そのうち6時間を私は斧を研ぐのに使うだろう。 リンカーン
どうも、斧を研ぐことは愚か、素手で木を切ろうとしてしまいただただ時間を浪費したマッサンです。
今回は、ポエムです。
最近、それなりにエンジニアとしての勉強方法もわかってきたつもりになっていたのですが、見事に非効率な学習を1ヶ月くらい続けていることに気づいたので、自戒の念をこめてポエムをしたためます。
これから、プログラミング学習を始める方や、もっともっと勉強したいぜというやる気みなぎるエンジニアの方に読んでいただけると幸いです。
結論
新しい言語・新しい概念を学ぶ時は、毎日コツコツ学ぶのではなく、まとまった時間を作って勉強しよう!!!! まとまった時間なんて作れんって言う場合は、前日の振り返り(コードがある場合は、写経ではなく、自分で実装してみるとか)をしてから、2歩戻って、3歩進む方式で学習しよう!!!
Haskellに挫折する
そもそも、上のような考えに至った経緯を、綴ります。
ことの発端は、私の大好きなReactがどうも関数型プログラミングというのを採用してるという情報を風のうわさで聞きました。
そんな私は、大好きなReactともっとお近づきになりたく、関数型プログラミングの勉強を始めることにしました。
amazonさんによると、私はどうも11/22からHaskellの勉強を開始したらしいです。
大体、毎日1時間くらいHaskellの本を読んで、コードが出てきたら実際に手を動かすって言う感じで進めていました。今日で約2週間、どれくらいHaskellのことが、わかったかというとさっぱりわかりません。
4日目くらいからさっぱりわからんなーっとは、思ってたんですが、 「Haskell難しいっていうしなー」とか「新しい言語学ぶ時はこんなもんだよなー」っとのんきに考えてました。
ただ、今日ジムで泳ぎながら気づいたのですが、そもそもの学習の方法がミスってるっぽい。
沼地に家は建たない
自分の今の学習スタイルは、土日にガツンと時間を確保して、長時間勉強するのではなく、仕事が終わってから夜1時間くらい書籍を読むって感じでした。
JS・Reactの勉強なんかはこのスタイルでもうまくいってました。
ただ、Haskellは全く上手くいかない。
おそらくJS・Reactの場合は、実務で半年以上使ってることもあり、基礎的な部分はなんとなくわかる状態だったので、知識の土台ができていたのだと思います。
一方、Haskellに関しては、知識の土台がゼロ。毎日やっていると流石に前日の内容くらい覚えてるでしょと思いながら、1日目20ページまで読み進めたら、次の日は21ページから、という具合で復習することなく読み進めてました。
今思えば、足し算を理解していないのに、掛け算を勉強して、掛け算を理解していないのに・・・の繰り返しをしていたのだと、それも2週間も・・・。
文字にすると、「は?超絶当たり前じゃない?そんなこと言われなくてもわかるし」と自分でも思うのですが、プログラミング学習となると、習得対象が難しいのか学習方法がミスっているのか、判別するのが難しいのではないでしょうか?
では、どうする?
土日、がっつり勉強するスタイルで8時間とかみっちりやるのが良いのかと思うのですが、休みの日はジムで泳ぎたいし、大濠公園で走りたいじゃないですか???やっぱり。
なので、毎日コツコツスタンスでいこうと思います。
ただ、今までのように単純に前日の続きからするのではなく、前日写経したコードを、自分で実装してみる or 実装できなかったら復習してから、次のステップに進んでいこうと思います。
これでうまく行かなかったら、忘却曲線とかをもとに復習タイミングなんかをリマインドしてくれるアプリを併用しながらでもやってみようと思いますが、多分しなくてもいけるはず。
どれだけやるかではなく、どうやるか
誰しも一日24時間しかないので、ただがむしゃらにやるのではなく、もうちょっと賢く時間を使っていこうというポエムでした。
ということで、同じようなことで悩んでる方の参考になれば幸いです。(もしかして、僕だけ???)
最後にちょっと告知を。
弊社、絶賛エンジニア募集です。 2020年12月9日(水) 18:30~19:30にオンライン会社説明会を実施します。
私も、ちょこっと仕事紹介で登壇させていただきますので、よろしければ転職活動中のかた、新卒の方ぜひご参加お待ちしております!!!!!
それでは、またー。