『技術書の読書術』を文系学部生が読んで痛感した7個の落とし穴
※この記事は初学者向けですが上級者の方も優しく見守ってくれると嬉しいです。
初めましてこんにちは。kaggleをする北大生と申します。
今回は『技術書の読書術』と言う本を読んで思ったことをつらつら書いていきます。
※あんまり内容のまとめとかではないです。僕の意見が中心です。
この記事を読めば、
勉強している風に見えるのに全然成果が出てない人の気持ちがわかります🤪
人のふり見て我がふり直せと言いますので、皆さんの役にも立つかもしれません。。
目次
この本を読んだ動機:技術書を読んでも成長してる気がしないから。
刺さったポイントと自分の解釈:
0.本を読む目的を具体的に設定せよ。
1.技術書のレベル感を意識せよ。
2.暗記主義への傾倒。隣に本を置け。
3.技術書は最初から3回に分けて読め。
4.困難(長いコード/数式)は分割せよ。
5.一冊の本にこだわるな。三冊を並行せよ。
6.その知識、なんかに応用できひんか?
・この本を読んだ動機
僕は文系学部の3年生で3年間DSを独学してるんですが、マジで結果が出てません🥲
得られたのはkaggle (team merge)expertの称号と1700人のfollowerくらいです。
(teamの方々本当に申し訳ない。フォロワーさんいつもありがとう😊)
努力不足はもちろんなんですが、毎回同じように挫折してる気がするんですよね🧐
なので今回はその振り返りも兼ねて、技術書の読書術を読んでみました。
0.本を読む目的を具体的に設定せよ。
盲点も盲点。原点も原点でしたほんと。
今まで読んだ本、大体全部読む目的が曖昧で抽象的だったんですよね。
例えば『マセマ微分積分』だったら”微積は知らないとやばそう”とか
『基本統計学』だったら”有名で入門に向いてそう”とか
『多変量解析入門』だったら”多変量大事そう”とか笑
右も左もわからない初学者のうちは誰しもこんな感じだとは思うんですが、
このやり方って逆に能力の高い人じゃないと挫折してしまうと思うんですよね。
プログラミングも統計も機械学習も包括する範囲は膨大です。
なので目的がない読書だと一冊読むだけで作業量が膨大になってしまいます。
しかも目的がないのでふわっとしか頭に入ってきません。
結果、結構頑張って本を読んでいるのに全然成果が出ない人。になってしまいます😭
逆に効率よく知識が習得されてるのはどういう時かというと
1.高次の目標の設定
2.通読による弱点把握
3.目標の具体化
の3ステップが踏めている時なんじゃないでしょうか?
具体的に機械学習(高次の目標)と数学(低次の目標)を例に出すと
って感じです。
これなら学ぶ範囲を限定して結果的な学習時間も少なくなると思います。
『特定分野での理解を深めたい/技術を向上させたい』場合には
↑みたいなステップを踏んで目標を具体的にしていきたいと思いました🥰
※分野の概要を知りたい/とにかく知識を増やしたい場合には↑は適さないと思います。
1.技術書のレベル感を意識せよ。
初学者あるあるだと思うんですが、いきなり有名な本に手を付けると大火傷します笑
かの有名な『初めてのパターン学習』も僕の本棚では2年も眠りっぱなしです。
後述するんですが、技術書は手を動かすのが命です。
難しすぎる本だと、それが本当の意味で写経になってしまいマジで苦痛です。
僕は高校時代般若心経を毎日書いていた時期があるのでわかります。同レベルです。
手が動かないと理解も進みません。理解が進まないと挫折します。挫折すると・・・
強強の自覚がない方。特に文系の方などは焦らずに、
ある程度理解が伴った写経ができるレベルの本を選んだ方が絶対にいいです。
とはいえその選定が難しいんだよ!って話だと思うので
僕が成果を残し始めたらまとめて紹介していきたいと思います!お楽しみに!
2.暗記主義への傾倒。隣に本を置け。
これも初学者あるある。というか受験に傾倒していた人あるあるだと思うんですが、
なぜか暗記できていないことに対して強いストレスを感じるんですよね。
僕もついさっき決定係数が思い出せなくて発狂してました笑笑
確かに統計検定など資格試験を受ける時はある程度の暗記は必要です。
でも統計の理解を深めたいなら隣に別の本を隣に置けばいいだけの話ですよね。
資格試験でないならば、暗記しようというマインドセットはむしろない方がいい。
『仕組みや論理展開を理解して、資料を見ながらでもそれを説明できる状態』
を完成形と見なす方がメンタル的にもスキル的にも健全だと思います。
多分そうして得た知識なら、何度も触れるうちに自然と暗記されていくはずです!
3.技術書は最初から3回に分けて読め。
これも焦りがちな初学者あるあるなのかもしれませんが、
なぜか技術書を一周で完全に理解しようとしてしまうんですよね。
これ、たまにやりきってる人もいてマジで尊敬するんですが、僕は無理です🐤
この本で推奨されていた読み方がめっちゃ腑に落ちたので紹介しときます🙇♀️
1周目は時間を制限して速読で目を通す。重要そうな箇所をなんとなく把握する。
2周目はとにかく手を動かす。理解できない箇所はメモっておく。
3周目はノートに自分でまとめてみる or 2周目の躓きを別本で補強。
3周に分かれてるのがめっちゃポイントです。
1周目の工程を挟むことで2周目のフェーズのストレスがだいぶ緩和されます!
手を動かして理解していくことは技術書を読む際の至上命題なのでとても大事です。
2周目と3周目を分けるのもめっちゃ大事です。
手を動かすのはそれなりに時間と労力を使います。
それに加えて足りない知識の補強やまとめまで行っていたら挫折間違いなしです!😭
何より3周目を通すだけでだいぶ理解って深まるし抵抗感も無くなるんですよね。
単純接触効果は本にも有効だと思います💏
4.困難(長いコード/数式)は分割せよ。
長いコードは親の仇でござる。
とまで言わんほどに長いコード/数式は人の心を抉りにきます。
長いコードや数式は言語らしいです。もっといえば、僕らからすると第二言語です。
第二言語ってことは、そう、英語と同じなんです。
英文って全体の7~8割の単語がわからないと読めないし、文法知らないと読めないですよね。
コードも数式も同じです。
英単語を知っている=各変数の意味がちゃんとわかる
英文法がわかる=関数やモジュールが意味していることがわかる
的な感じです。
最初のうちは面倒ですが、
変数の意味をコメントに書いたり、関数ごとに分割して処理を追っていくなど
地道な分析をするしかないんだと思います。
英文と同じで、何度も繰り返しギリギリ読めるレベルのものを読むと慣れていくので
めちゃくちゃ丁寧にコードとか数式を説明してくれる本を買うのがオススメです!
5.一冊の本にこだわるな。三冊を並行せよ。
これ、入門書・中級書・上級書の三冊を読めとかそういう話ではありません。
レベルの近い本を三冊用意して勉強を進めようって話です。
理由はシンプルで、ある本でクソややこしく説明されていることが他の本ではめっちゃわかりやすく説明されていることはよくあることだからです。
一冊の本で挫折した時の心理的負担は物凄いので、最初から保険かけましょう。
6.その知識、なんかに応用できひんか?
最後です。多分これめっちゃ大事です。読書が受動から主体的な活動に変わるので。
コードを写経している時、数式を追っているとき。
それを理解することだけに集中してしまうことありませんか?僕はめっちゃあります。
統計や機械学習の数式やコードは難しいので仕方ない部分もありますが
これだとせっかく得た知識がその場限りの独立したものになってしまいます。
ここではちょっとだけ踏ん張って、知識の応用を考えましょう。
いきなりハイレベルな応用は無理です。挫折します。
めちゃくちゃ簡単な応用、
例えば二項分布のパラメタpを0.5から0.9に変えてみるとか、そんなんでいいです。
プログラミングは数値を変えてエラーが出たとしても誰も死にません。
安全です。やり得です。(僕はコードを怖がってだいぶ時間を無駄にしました。)
これだけでコードに対しても内容に対しても理解がグッと深まります。
数学で言うと、具体例を考えてみるのは理解の面でとても役立ちます。
抽象的な数式も、数値を入れてみればそれだけか。ってことはよくありますからね。
まとめ
初記事、いかがだったでしょうか?
偉そうなことをいっぱい書きましたが、
僕自身今から少しずつ実践していければいいなと思ってます。
これを読んでくださる方の中には僕よりも遥かに経験豊富な方も多いと思いますので
ぜひこの記事のいいところ悪いところを優しく伝えてくれると嬉しいです🥰
僕は基本的に文系の方や初学者の方に、
ほぼ同じ目線から役に立ちそうな情報を記事にしていくつもりです。
誤った情報はできる限り訂正していきたいと思いますが、
個人の感想程度に捉えてもらって、楽しく読んでもらえれば幸いです🙇
@kaggle_hokudai