log > 学習

学習

学習にはいくつかの軸があり、一つは広さ、もう一つは深さを使うことがある。一生かかっても学べない学問に対して、普通の人は”広く浅く”か”狭く深く”の間に収まる。

プログラミングを学んでいても、知らない情報ばかりが入ってくる。それはワクワクすることでもあり、不安をかき立てるものでもある。知らないことがあることは仕方のないことだけれど、どれだけ学んでも、というより学べば学ぶほどに知らない領域が増えていく。

知らないことにもいくつかの階層があり、時間が経過で劣化しにくいものの方が抽象的で応用が利くことが多い。反対に劣化がしやすいものは応用は利かないが即時的に使えるためもてはやされる。

たとえばGitを例にとると、gitのアルゴリズムや他のバージョン管理システムとの違いを学ぶことは、他のバージョン管理システムに移るときに役に立つ。一方で、gitでやらかしたときに何とかする方法gitのコミットメッセージを英語で何と書くかは日常的に使う。


しかし、これらは表に出てくる知識なので、学べないこともあるのだろうな、と最近思う。gitで使い方やアルゴリズムを知ることはできても、適切なコミットの粒度やコミットの頻度をどうするかといった、正解のない問題とその回答は各自で考えるしかない。そして、その回答のよさがセンスのよさと呼ばれるものに近いのではないかと思う。

すごいプログラマって、全然違うことみてたり考えていたりしつつ、結論として全員が気づいてるけどやってないことをあげるので、帰納的な考えではなく、演繹的な考えで発想しているのかと思ったりする。