で、SSDキャッシングを行うカーネルモジュールdm-writeboostが星100を達成したことを報告したが、 今朝、もう一つの星100を達成した。星100は人権だ。
Raftライブラリだ。このライブラリについては過去にいくらか語ってきた。 このライブラリは社プロでも動いているし、 おれが趣味で作っている分散ストレージSorockでも使っている。 このライブラリは、Tonicのサービスとして実装されているため、 他のサービスとスタックしてgRPCサーバを構築することが出来る。 こういった性質が非常に使いやすい。おすすめのライブラリだ。
2つ目の星100を達成したところで調子に乗ってソフトウェア開発について語っておくと、 おれはソフトウェア開発というのは、囲碁や将棋に近いと思っている。
おれのスタイルは、「初動で出来るだけ読み切る」。 よく、「やってみなきゃわからない」という人がいるが、それは大抵の場合は読み不足だ。 深く読んでいき、頭の中でコードを完成させてから実際に作業を始めるのが正しい。 猛烈な調査をし、図や時には数式を使い状況を整理し、読みまくる。 これを繰り返し、まず出来るだけすべてを読み切る。 ここが浅いと、ロクな結果にならない。
しかしそれでも、残念ながら本当にやってみないとわからないことはある。 本当にわからないというよりは、選択肢がいくつかあって、どれが最善手か読み切れないという具合だ。 おれはこれを運要素と呼んでいる。 囲碁のトップ棋士も盤面に対して深い読みを入れて、 図の比較を行うが、この比較が難しく、結局最後は運(ないしは勘)だという。
もっと頭の良い人であれば、おれが運要素と呼ぶものも運要素にせず、 すべてを読み切ることが出来るのかも知れないが、 これは結局、頭脳のエンジンの問題だと思う。
だから、昨今、プログラミング教育がどうとか言われているけど、 おれはそんなものは不要だと思っている。 では何が大切かというと、そもそも頭が良いことだ。 頭が悪いやつがプログラミング教育をしてもどうせロクなコードは書かないし、 頭が良いやつはプログラミング教育をしなくても、勝手に良いコードを書くようになる。
結局、地頭なのだ。 では幼少期には何をすればよいか?もちろん、中学受験だ。 中学受験をし、御三家に合格する。 これがプログラマとしての第一歩だ。 御三家に合格するほど地頭が良く、算数が出来れば、 初等的なプログラミングなどというのは数日で理解出来、 あとは勝手に伸びていく。 勝手に課題を発見し、勝手に勉強し、勝手に伸びていく。 これが人間にとって非常に重要なことだ。
だから、つべこべ言わずに御三家に行け。 御三家は基本だ。