技術書を読んでも頭に入ってこないし、プログラミングスキルが上がらないのはなぜか?
もくもく会で話している中で、「技術書を読んでも頭に入ってこないし、プログラミングスキルが上がらない」という話になり、そのよさげな説明を思いついたので共有します。
具体的な話としては「本を読んでもスキルアップした感じがしない。それで本をよむモチベがわかない。」というものでした。これは僕もとても共感します。バックエンドエンジニアでいくつか有名な本があり(例えばPoEAAやDDD本)、読まないといけないと思い手を出しました。しかし、何を言っているかわからずひたすらに苦痛で、読み切ることができませんでした。結局これらを読み終えることができたのは、業務経験を4年ほど積んだあとでした。
なぜ、本を読んでも苦痛なのか、頭に入ってこないかを、今振り返ってみると、「全体感」と「土地勘」という例えで説明できるのではと思いました。
まず、前提としてあなたが新しい土地に引っ越してきたとします。その地域のことは全然わかりません。どこにスーパーがあるのか、駅までの道はどこを通ればよいのかなどです。この状態でその地域のマップを見たとしても、なんとなくスーパーの場所や、駅の場所はわかるのですが、その後マップを見返すことなく、正確にたどり着くのは至難の業です。
しかし、しばらくその土地に住むことで、次第に「土地勘」が芽生えてきます。大体こっちの道には、公園があって、駅に続いている。こっちの道は一見スーパーまでの近道に見えそうだけど、実は線路があり、踏切がないので遠回りになる、などです。しかし、家からスーパー、家から駅といった「土地勘」を身に着けても、駅からスーパーまでの道までは推測することはできません。なぜなら家から駅までの道を実際に通ったことがないからです。
この「土地勘」を身に着けたあとでマップを改めて読み返すと、頭の中で道同士の関係性がつながるときがあります。じつは、駅から家までの道の途中にある、脇道を行けば、スーパーに近いのでは?といった感じです。マップが提供してくれる全体の関係性をここでは「全体感」と呼ぶことにします。
「土地勘」を持った上で、「全体感」を持つと、一気に点と点が線となり、深い理解につながっていきます。
技術書は「全体感」です。実際の業務経験やハンズオンの中で「土地勘」を身に着けていきます(ただやるだけだったり、考えなかったりすると身につきませんが)。もしこれ以上「全体感」を身に着けても理解できないなと感じた場合は「土地勘」を先に習得したほうが、より効率のよい学習につながるのではないでしょうか?逆に「土地勘」ばかり身についても、「全体感」がなければ、新しい発見や深い理解を得られないかもしれないので、「全体感」をみることも大事ですね。
別の話ですが、「プリンシプルオブプログラミング」という有名な本があるのですが、僕はまだ軸ができていないプログラミング初学者が読むことを勧めていません。というのはAとBという矛盾する原則があり、まだAもBも理解できていない段階で読むと、単に混乱してしまうだけだからです。ある程度「土地勘」をもった前提で読むことをおすすめします。
Discussion
土地勘と全体感...
語彙に感動しました(感想)
40代シニア・ソフトウェアのエンジニアですが、
20代後半、まだエンジニアに成りたての頃は
よく空回りばかりしてました(;´∀`)
フェドラコア・リナックスのGUIモードですら
まともに上手には扱えなかった
(;´∀`)
けど『入門UNIXシェルプログラミング』とか買ってきたり(;´∀`)
打ち慣れ、書き慣れして
身体に刻まれた後ですよね~
たぶんそういうのの面白さがわかるのって。。。
もやっとしてたことを言語化してもらえたような内容でした。