Code Reading ――― 他人のコードを読む!

Code Reading!!


自分ではソースがすらすら書けるのに他人のソースをほとんど理解できないという人が居る。


他人のソースを理解できないという傾向は仕事でしかプログラムに関わっていないという人に顕著だ。仕事の過程であまり他人のソースを読むことはないから(他人のソースを読む作業は直接的な生産作業ではないから)、そういう能力が養われない。おまけに資料(ハウツー本)は会社のお金で買ってもらえたり、理解の及ばない部分を前任者に説明を求めたり、あまつさえフローを書いてもらったりできる。はっきり言って生ぬるい。そういうことをする限り、コードを読む力が養われるはずがない。そういった環境に自分の身を投じること自体が、技術者としての自分をダメにしているというのに多くの人はそれがわかっていないのだ。


この、他人のソースを読む力というのは、うちの会社でやっているような移植作業だと特に重要視されるものである。今回のアルバイト募集でそのへんのテストを兼ねて、複数の人に100KB程度のソースを読ませてみた。早い人はものの1,2時間ほどで理解し、遅い人は、1週間ほどかけて関数のどこが何をしているか大雑把に理解できただけで細かい仕組みは理解できずギブアップしてしまった。それほどの個人差があるのだ。(私もこれほど個人差があるとは思ってもみなかった。)


そのなかでとりわけソースに対する理解が早いのは、19才の青年だった。彼は300KB程度のソースを2時間程度で理解して、ソースの問題点と残り作業を的確に指摘することが出来た。この青年は、子供のころ書籍を買うお金がなく、他人のソースを糧としてプログラムの勉強をしてきたのだと言う。それゆえか、ものごとに対する理解が恐ろしく速い。おそらく、彼は未踏プロジェクト等でこのあと何度も何度も歴史に名を残すだろう。彼が私と出会ったというのは、まさに歴史的な巡り合わせである。彼を立派な技術者に育てることは、私に課せられた使命だと思う。


さて。他人のコードを読むための本として『Code Reading』(ASIN:4839912653)があるが、この本は別にお勧めをしない。もうおわかりいただけたと思うが、Code Readingにおいて本を読んで勉強しよう、という考え方自体が誤りなのだ。いい加減、本を捨てなさい!誰かに教えてもらおうとするのはやめなさい!自分の道は自分で切り開きなさい!たとえその結果、袋小路におちいっても全然かまやしない。そういう経験こそが技術者にとって一番必要とされる経験なのだ。