レベル255のプログラマになる方法


KLab×はてな エンジニア応援ブログコンテストというのをやっているらしいので、私もちょっとした小話を書いてみる。


もうかれこれ10年近く前の話なのだが、そのことはいまでも鮮明に覚えている。


私は当時学生だったA君に、とあるプログラムの修正の仕事をお願いしたのだ。A君はとても優秀なプログラマだった。しかし正直に告白すると私は彼がどれくらい優秀なのか、その時点はあまり正しく理解していなかった。


A君はすぐさま与えられたソースコード上のバグをいくつか見付け出した。そのバグの一つは、私の部下のT君が書いたコードに存在していた。そのバグを修正したついでにA君は「なんでこんなことするんだ!こうなってると×××が○○○になったときにバグるじゃねーか!この大馬鹿野郎!」みたいな罵声混じりのコメントをプログラム上に追記した。


そのコメントを見て、その元のコードを書いたT君はいたく感情を害した。T君は「もうこの人とは仕事はしたくないです」と私に告げた。いまにして思えばT君もA君と同じぐらい若かったので、大人になりきれていない部分があったのかも知れない。私は仕方なくT君をプロジェクトから外して、私がそのプロジェクトの舵取りをすることにした。


その仕事に関して言えばA君は驚異的なほど短時間でデバッグを終わらせ、その仕事自体は完遂することが出来たのだけど、T君のように「A君とは仕事を一緒にしたくない」と思う人が出てくるといけないので、それ以降、私はA君に仕事をお願いすることはしなかった。


この話だけ聞くと、A君は腕っぷしは良いが性格の悪いプログラマのように思えるかも知れないが、それは事実ではない。普段の彼は冷静沈着で、なるべく無駄な言葉を排して少ない言葉で情報を確実に相手に伝達するように心がけていることを私は知っていた。


そして私は彼が何故あのような罵声混じりのコメントを書いたのかわかる気がした。彼は決してソースコードを書いた奴が憎かったわけではないと思う。


つまり……彼は戦っていたんじゃないかと。


彼にとってプログラミングとは、ある種の戦闘だったんじゃないかと。


彼にとってプログラム上のバグとはRPGに出てくるスライムみたいなもので、やっつけて、たたきのめして、それで自分のレベルを上げる、そういうゲームを楽しんでいたんじゃないかと。


きっと当時の彼には、そんなコメントを書くとそのコードを書いた人が傷ついたり感情を害したりするだとかそういったことは頭の片隅にもなく、そして、そのコードを書いた人がこの世のどこかに存在しているということすら忘れて、ただ一途にバグと格闘してたんじゃないかなぁ。


だからこそ、A君は驚異的なほど短時間でデバッグを成し遂げることが出来たんだと思う。


そこまで自己を純然たるプログラミングの世界に没入出来るというのはある意味凄いことだ。当時のA君に、そのコードを書いた人への思いやりに欠けていたという非難を浴びせるのは簡単だが、普通はそこまで割りきってプログラミングの世界に入っていけないものだ。


ちなみに、A君は彼の考え方の健全性を証明するかのように、そのあと東大の大学院に進学し、数々のプログラミングコンテストで幾度となく首位に立つ。しかしそれはまあ結果論でしかない。彼の才能は、それよりずっと早い段階で萌芽していたに違いないのだから。


このA君の例を引き合いに出すまでもなく、プログラミングとは本質的に孤独な作業だ。


小説が作家の手を離れて読者に読まれるとき、作家はあとから自分の小説の内容を変更できない。また読者は作者がこの世のどこかに存在しているか、生きているのか死んでいるのか、なんてことはまったく気にもとめない。


プログラミングも同じだ。ソースコードを読んでいるときは、それを誰が書いたかだとか、何人で書かれたのかだとか、いつ書かれたかだとかはあまり重要ではない。ソースコードはそれ自体がひとつの作品であり、ひとつの世界として確かにそこに存在しているからだ。その世界にどれだけ自己を没入できるのか。プログラマとして大切なことはただそれだけだ。


もちろん自分の書いたプログラムとて例外ではない。プログラムを書いてビルドした瞬間にはもう自分の手は離れている。そのプログラムに対してどれだけ真摯に向き合うことができるのか。


しかし、現実社会で生きている我々にはそうすることはとても難しい。それはプログラムを完成させること以外にも実利的な視点(そのプログラムがどれだけのお金を生み出すのか、かけた手間に対して適切なリターンがあるのか、納期は守れるのか、ソースコードの再利用はできるのかetc..)を持たざるを得ないからだ。


だからこそ……だからこそ、なのだが……我々はA君のようにプログラムの世界に自己を没入することの大切さを忘れてはならないと思う。あと…心に余裕が出来てきたらでいいんだけど、共同作業者への思いやりも忘れずにね!