この話好きだな、と思ったことを見つけたので、とりあえず文章を書いた。 まとまりはない。
この話とは
この話は以下の話です。
Sider 特別インタビュー GitHub アーロン・パターソン氏 コードレビューにとって大切なことは“入社を決めたもう一つの理由に、「GitHub.comのコードを見たかったから」というのもありました。”
2018/07/27 00:27
このインタビューを受けているのは、Aaron Patterson氏。 Rubyのコミッター。Railsを作ってる人。
この氏がGitHub社に入社を決めた理由が、GitHubのコードが見たいから。という話。
この話好きだなあと思った。
どの辺が好きか
自分が使っているものの中がどうやって動いてるんだろう、というを知りたいという気持ちはわかるなあと思った。
僕も自分が使っているものの中身を開けてみて、どうなっているのかを見たいと思う。
それは、中を見てどうしたいとかじゃなくて、「なるほどー。こうやって動いてるのかー。」と思うだけなんだけど。
そういう風に仕組みを知って「ふむふむ。なるほど」とやるのを僕は結構好きだと思う。
歴史のあるものは趣がある
コードにしても会社にしてもコミュニティにしても、歴史があると趣があると思ってる。
どういう経緯があるにしてもやっぱり経年変化というのがあって、少しずつ最適化されていく。
なんでこんな形になってるんだろうなーと思いながら、いろいろ眺めるのは結構面白い。
そして、それがどういう仕組みでそういう風になったのか、というのがわかると楽しい。
仕組みを知りたいと思う
そもそもだけど、僕は、暗記が嫌いで仕組みを知るのが好き。
その理由は、仕組みの方が応用範囲が広いから。
暗記でなんとかしようとすると、たくさんのパターンを覚えないといけない。それが辛い。
覚えることは、応用範囲の広い知識にしないと僕は厳しいなと思ってる。
そんなたくさんのことは覚えられない
そもそもの話として、僕の頭の中に入る情報はかなり限られてるなーと思っている。
人類を頭の中に入る情報の多さでランキングを作って、ソートしたら僕はかなり下の方に位置すると思う。 それは、小学校や中学校くらいの時に、「ヨーイドン!」で暗記をした時の自分の暗記の遅さと定着の悪さから感じた。
頭がハードディスクだとしたら、回転速度は遅いし、円盤の数も少ない。ランダムアクセスは苦手。全体的に頭の中は、連想配列みたいなシーケンシャルなアクセスになってる。覚えることが多くなるほど、辛くなる。
ちなみに、一般論にするつもりはなくて、他の人がどうなのか、という部分は知らない。
よくわからないけど、めちゃめちゃ暗記が早い人もいるし、そういう人は、全部覚えた方が早いと思うのかもしれないし。
プログラミングをする理由
そういえば、今日は、「自分がプログラミングをしている理由」みたいな話を他の人とした。
その人は、「作りたいからプログラミングしてるし、新しい技術を勉強してる」と言ってた。
それを聞いて、僕違うなと思った。
僕の場合は、「やろうとしたこと、知りたかったこと、にコンピュータが関わってて、よくわからない動きをした時、不快だったから勉強してる」みたいな感じ。
僕がコンピュータを勉強したのは仕組みが知りたかったから
一番最初に、コンピュータを勉強したいと思ったのは、高校生の時にDTMをしてた時だった。
DTMをしていたらDAWがちゃんと動かなかった。
僕の数時間の作業がフリーズして吹き飛ぶことはよくあったし、微妙にレイテンシが発生したりするし。
それが嫌だったし、不快だったから中がどうなってんねんと思ってた。
コンピュータを勉強すれば、なんでそんな動きをするのか理解できると思った。
Pythonは、コードがオープンで読みやすいから良い。
そういえば、はじめてPythonを触った時、JavaやCに比べて、やりたいことが端的に表せると思ってた。 それを魅力に感じていたけど、それ以外にもコードがオープンというのもすごく魅力的だったのを思い出した。
JavaやCはコンパイルされて見れないコードがあるのがすごく嫌だった。 この中は何が起きてるんだろうとおもったことはあった。(ちなみに、隠蔽されるのは全体的に好きじゃない)
でもPythonは、コードがオープンだから読める。 それに、コードが綺麗だから読みやすい。
Pythonは、高品質なコードに触れやすい
当時、JavaやCの教科書に出てきたコードに比べて、Pythonのオープンソースライブラリのコードはすごく綺麗だった。
Javaだと見たことあるコードが、めちゃめちゃネストが深かったり、インデントが微妙とか、なんかもう混乱を誘発するようなコードをよく見た。
読むのめんどくさいなあと思ってたし、読むのが嫌だと思ってた。 でもPythonのコードは、ネストが浅いことが多いし、インデントは揃ってるし、変数名もわかりやすかった。
終わり
特に結論はないんだけど、記事を読んでいて思い出したことを書いて見た。