中二病と三大美徳とプロプログラマ

プログラマに取って重要な能力というか気質として、中二病というのがあるんじゃないかなーとかふと思ったのだった。

なんかちょっとしたことを達成した時に、「おおなんてこったオレすげー!!やばいオレ新世界の神だ!!!」みたいなことを思ったことがある人は結構いると思うわけです。まぁ数年、一年、一ヶ月、時には一日で実はそんなにたいしたことでもなかったことに気付いて、恥ずかしい思いをしたりするわけです。だから自分の過去の日記とか見るのは面白いわけです。

でまぁこの気質って、後で考えると恥ずかしいことだったりするんだけど、しかしこの喜びを味わった瞬間というのはなかなか快感なもんで、プログラマの人だと結構こういう経験がある人は多いんじゃないかと思います。プログラマじゃなくても研究職とかでも結構ありそうですね。

で、こういう気質が無い人って、「あっそう Hello, world! って出たね、あっそうテトリス作れたね、あっそう concurrent parallel な GC 書けたね。そりゃそういうプログラム書いたわけだからね。だから?」みたいな感じになってしまって、ここで快感を味わえない人はなかなかプログラムに興味を持ち続けられないんじゃないかなー、と。

他の例としては、なんか新しいことを知ると、その知識をひけらかしたくなったり、なにか自分が偉大なことを知ってるような気になったり、そのことを知らない人をバカにしたくなったり、 C++ の宗教書読んで C++ サイコーみたいな気分で algorithm とか functional を多用した他人には読めないコードを書いたり、仕事で Haskell 使わせろ!とか言ってみたり…と、こういうことがあると思います。

でまぁ同じくウザいわけですけど、しかしこれって好奇心や向上心の裏返しでもあるなーと思うんですね。自分の学んだことに感動できない人ってのは、やはりプログラマにはちょっと不向きかもしれない。モチベーション維持しにくいでしょうから。

しかしちょっとここで書いた中二病は、中二病の原義からは少しズレてるかもですね。一応中二病の説明サイトを読んでみて、「新世界の神」と「なにかについて全知であるように喋る」の部分を意識して書いてはみたのですけど。

http://bangin.wordpress.com/2008/12/21/%E4%B8%AD%E4%BA%8C%E7%97%85chunibyo/

で、次に思い出したのが Larry Wall の語るプログラマの三大美徳で、 dankogai さんの翻訳を引用させてもらうと、

怠惰

全体の労力を減らすために手間を惜しまない気質。この気質の持ち主は、役立つ
プログラムを書いてみんなの苦労を減らしたり、同じ質問に何度も答えなくても
いいように文書を書いたりする。よって、プログラマーの第一の美徳である。

短気

コンピューターが怠慢な時に感じる怒り。この怒りの持ち主は、今ある問題に対応
するプログラムにとどまらず、今後起こりうる問題を想定したプログラムを書く。
少なくともそうしようとする。よって、プログラマーの第二の美徳である。

傲慢

神罰が下るほどの過剰な自尊心。または人様に対して恥ずかしくないプログラム
を書き、また保守しようとする気質。よって、プログラマーの第三の美徳である。

の三つ。私は前者二つはすごく同意で、優秀なプログラマってのはたいていこの意味で怠惰で短気だと思うんですね。ただ傲慢はどうもしっくり来なくて、今回もあれ三つ目ってなんだっけ…と思い出せなかったです。謙虚で優秀なプログラマって結構いる気がする。だからこれ取っ払って中二病入れたらいいんじゃね…とかそういうことを漠然と思ったのでした。

ああでも中二病ってある種傲慢ではあるし、まぁそのへんよくわからんので適当で。

だいぶ話が変わるんですけど、職業プログラマっていうのは、怠惰・短気・中二病を時にはおさえる必要があると思うのです。

時にはどう書いても冗長になってしまうコードを書かないといけないこともあるし、客から与えられたクソライブラリ使わせれてそれが修正できなくても我慢しないといけないこともあるし、中二病爛漫な僕の理想のコードは他人から見ると暗号でしかないかもしれない。プログラマに必要な気質を備えつつも、しかし仕事の達成のためにそれを適度に抑えることもできる、ってのは趣味プログラマと職業プログラマの境目かもなーと少し思うわけです。

なんかプログラムのバイトとかしてた時を思うと、特に最初の頃はこうまさに、コード量減らすために怠惰を抑えずに eval とか使いはじめたり(これは中二病でもあるなー)、しょっちゅう「もう全部書き直しちゃいましょう」的なこと言ってた気がするし、 algorithm とか functional ラブな感じだった気がするわけです。今はどうだろう…まぁそれなりに控えてる気がします。 unit test は怠惰を抑えてあまりループ使わず書いた方が良いと思ってみたり、あまりよくできてないライブラリやツールを頑張って使ってみたり、 Google で boost 使えないのはむしろ素晴らしいとか言ってみたり…おお自分で書いてて俺職業プログラマぽいと思えてきた。

また話が少し変わって、こいうどうでもいい文章を得意気に書くのもたぶん中二病の発露で、ふと思いついたどうでもいいことを大発見をしたかのように嬉々として書いてしまうという。しかも優秀なプログラマに必要な能力であるとか言ってて、ここに自分が中二病だと書くのは間接的に自分が優秀だと書いてるようなもんだし、中二病という一般的に言って悪いことである自分が持ってる気質を自己肯定的に捉えるのもなんか中二病ぽいし、救いがたいですねー、という話。

まぁみんな中二病になりましょう。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h