洋書の本棚

「どうやって勉強したの?」に対する回答

職業プログラマになって7年が経過した。
時々、こういう質問を受けることがある。

「どうやって勉強したんですか?」

これに対する答えはいつも困るんですよね。
なぜなら、勉強というものを今まであまりした記憶がないんです。
学生時代のテスト前ですら、「テストのための勉強」なんてあまりしなかったんです。

「していないって言いながら、絶対してるでしょ?」

というのは、よくある返しですが、必ずしもそうとは言えないですね。

前置きはこれくらいにして、本題を書いていきます。

勉強とは?

まず、勉強って何でしょうか?

勉強を訓読みしてみると、

勉めて強いる

「全力で無理してやる」という意味なんですよね。
そんなに頑張ったことなんて今まで一度もないんですよね。
ただ、「興味を持って何かに取り組んだ」ことはあります。
それは「勉強」とは違う認識です。

どうやって身につけた?

一つのスキルを身に付けるのは、やっぱり数をこなす他にないと思います。
これについては、ノウハウなんてないんですよね。

学校で教わることも同じなんですよね。
興味もないことに対して夢中になんてなれないし、身につくことなんてないんですよね。
それをテスト前だけ「本気出してみて」もダメなんですよね。

テスト前に本気出せるのなら、普段の授業で本気出せばいいんです。
いかに初めて聞いたことに対して、

「そうなんだ!」(新情報への驚き)
「なるほど!」(新情報への納得)
「なんでそうなるんだろう?」(新情報への疑問)

こういう反応をした数だけ身につくはずなんですよね。

「授業なんて面白くない、寝てた方がましだわ」なんて思ってしまった時、自分にテスト前の「勉強」を強いていると思えば、学校の授業だってもう少ししっかりと聞けるのではないでしょうか?
そして、少しでも面白いところを見つけようと変われば上出来ですね。

話を戻して、プログラミングの勉強のことですが、これも同じなんですよね。いかに興味を持って試行錯誤したかということが大事だと思います。

家で、新しい言語の本を読んだり、本に書かれているサンプルや課題をやったりすることはありますが、勉強というよりはただの好奇心です。
それが時々仕事で役立つこともありますが、それを目的に本を開いてるわけではありません。

身につけようとと思ってやるより面白いと思ってやる方が身につく

これに尽きると思います。

何かの目的のためよりそれ自身を目的に

受験、スキルアップ、いろんな目的のために、スキルを身に付ける機会があると思います。ただ、それって「スキルを身に付けることは手段であって目的ではない」のです。

大学受験のために英語を頑張っても、世界史の出来事を覚えても、物理の公式を覚えても、受験が終わったら使わなくなって忘れていきます。

忘れることは不要な記憶を消してメモリを解放するという人間の持つ必要な能力です(※)。つまり忘れてしまったことって、今必要なことじゃないんです。
※正確には忘れることは記憶から消すことではなくショートカットリンクを遮断することらしいですので、別のリンクで記憶に到達した時思い出すことはあります。

話を戻して、受験のためという目的ではなく、今からやることに対して興味を持ってそのことについて「知りたい」「使えるようになりたい」とそのもの自体を目的にしてしまうのがベストな取り組み方だと思います。

だから、いつも「どうやって勉強したんですか?」という質問に対しては「勉強したことない、感覚で覚えてきた」としか答えられないのです。

勉強法なんて持ってないんです。
ただ、興味を持っただけなんです。

塾の講師をやってた時も、公式やイディオム教えるよりも、興味を持ってもらうにはどうしたらいいのかばかり考えていました。
面白さがわかれば、自分で何とかやり方を見つけられるもんなんです。
本当に「学び(※)」ができない人なんていないんです。
面白さがわからないだけなんです。
※一般的に「勉強」というところですが、本文中で「勉強」というフレーズを否定してきましたのでここでは「学び」に置き換えています。

自分も、未だに興味のないものについては、全く身につきません。
それは何度本を読んでも、身につかないです。
記憶に結びつけるための最重要要素である「興味」を身につけていないから。

まとめ

いろいろ話が飛んだので、まとめると、プログラミングの習得についての最良の勉強法なんてありません。
人によって違います。これはどんなスキルについても同じでしょう。
ただ言えるのは、興味を持たない限りはいくら本を読んでもサンプルコードを打ち込んでも身につきません。

始まりはいつも興味から

これだけです。


後強いて言うのなら、一つ何かアプリケーションを設計して自分で作ることを目標にして、試行錯誤してみることが大事ですかね。
例えば、電卓アプリなんて簡単そうで意外と面白いですよ。
小数点の使い方とか、0の後は小数点しか入力できないとか、0で割ったらエラーになるとか、四則演算記号の後は表示が一旦クリアされるとか、...
使ってる時には想定しない処理がされていることに気づかされると思います。
それができたら、ほかの既存のアプリケーションを自己流に設計して模倣してみるなど、イメージしやすいものを作っていく。
それもいくつかできたら、オリジナルで何かを考え、設計し作っていく。
こういうステップですかね。

1.模倣アプリを作る
2.オリジナルアプリを設計して作る

作っていくうちに、エラーの対処方法とか、可読性を上げる方法とか、処理速度を上げる方法とか、ノウハウは自ずと身についてくると思います。

大した新情報はないかもしれないですが、今回はここまで。

この記事が気に入ったらサポートをしてみませんか?