読者です 読者をやめる 読者になる 読者になる

一流のプログラマは例外なく我慢強い

生活

 プログラマはかくあるべき、という意見は様々ありますが、そのうちの多くは「プログラミングという作業をいかに効率的に遂行するか」という指標に沿っている気がします。例えば「知識の幅が広い」とか「設計を考えるのが速い」とか「自動化を徹底する意思が強い」とか「問題発見能力が長けている」とか「高いコミュニケーション能力でチームの意思決定を促進できる」とか、そういった類のものです。一般にプログラマの仕事はプログラムを作ることですので、それを速く安全に進めるプログラマほど優秀である、ということに異論は無いかと思います。世の中には Excel 漬けのプログラマだっているそうですが、基本的にプログラマと名がついている職はプログラムを作るという作業がそこにあるからこそ発生しているとみなすのが妥当でしょう。
 そうした "プログラマはかくあるべき" という外面的な観点から、"俺らプログラマはこういうことがしたい" という内面的な観点へ目を移してみると、ずいぶん重複した要求があることに気付きます。例えば「もっと色んなことを知りたい」とか「○○と××を組み合わせて設計すると面白そうだ」とか「△△は面倒だから自動化したい」とか「□□の辺りに問題がありそうだから議論したい」とか「もっとチームがうまく回ってゆくルールを提案したい」とか、そういう類のものです。こうした、プログラマの内なる欲求の本懐は、企業や顧客によらず万国共通であるように感じます。例えば "顧客の笑顔が見たい" というたった一つのピュアな親切心だけをモチベーションに日夜努力を続けるプログラマは恐らく少数派ですよね。

 まぁとにかく、プログラマと非プログラマがだいたい同じ方向を向いているからこそ、今こんなに多くのプログラマが存在しているんだろうと思います。

 さて、プログラマ達がだいたい同じ方向を向いているのであれば、その能力差は何らかのスカラ値で比較できそうな気がします。いまチームの目前に「○○な機能が欲しい」という欲求があったとします。広い知識を持ったプログラマ A は「それは××と△△を組み合わせればできる」と即座に提案できますが、そうでないプログラマ B は「ちょうどよいものがないか調べてみます」と言うことしかできません。仮にプログラマ B が 3 時間で調査を完了させて、プログラマ A とまったく同じ結論にたどりついたとしたなら、その能力差は少なくとも 3 時間であると言えます(実際はもっとだろうけど)。他にも、愚かな設計のせいで後々の拡張やメンテに手間がかかるとか、同じような手動オペレーションを何度もやるせいでいちいち遅いとか、連絡すらまともにできないせいでコミュニケーションコストが増大するとか... まぁとにかくイロイロな理由によってどんどん差が開いていきます。「プログラマの能力というのは(略)軽く5倍から10倍は違う」とか「コーディングの生産性で10倍、コードレビューの速度では6倍もの能力差がある」などと言われるように、確かにそこには明確な能力差があるのです。この差こそが、優秀なプログラマを優秀たらしめているのでしょう。

 こうやって blog の記事を読んでいるときぐらいは忘れていたいですが、開発現場はときに、重大な設計ミスやクリティカルなバグに襲われます。これはスコールみたいなもので(前兆が有ったり無かったりの差はあれど)、大抵は事態の収束を目的としてリソースが投入されます。しかもこういうトラブルに限って、ウンザリするぐらい根が深かったりするんです。もちろん、事態の収束のために営業の剛腕の御力に頼ったり、涼しい顔でクレバーに仕様変更をキメる場合もあるかと思いますが、それらでは代替できない場面というのも確実にあるのです。対処にあたるプログラマは少なくとも優秀である必要があります。しかも、事態を収束させるためにはぐらつく積み木の城を崩さずに改築するかもしくは海底に潜ってそっと小石を置いてくるかそれとも車を運転しながら針の穴に糸を通すかという感じの非常にナーバスなアタックが必要とされます。しかしそれは、"俺らプログラマはこういうことがしたい" には含まれていないのです。つまり我慢強いプログラマでないと切り抜けられないピンチなのです。僕の少ない経験からいうと、こういうとき、一流のプログラマは本当に我慢強く対処にあたり、やがて事態を収束させます。一流のプログラマ、皆さんの身近にもたくさんいると思います。

 というかむしろ、そういう態度こそが「一流とみなされる理由」だし、「非プログラマによるプログラマ評価の核」でもあるように思います。なぜなら、目前のピンチは三流のプログラマでは手に負えないからです。ただ能力が有るか無いか。true or false の領域です。上で、プログラマの能力差は 3 時間だとか 10 倍だとか書きましたが、そういう"時間を買いさえすればカバーできちゃいそうな差"とは質が違うような気がするんですよね。本稿では、「一流の定義は...」とかそういう言葉遊びは面白くないのでやらないですし、別に「○○なプログラマこそが優秀である!」とか「××こそがプログラマのあるべき姿である!」とか声高に叫ぶつもりは無いです。ただ言いたかったのは「デスマでヒィヒィ言ってるプログラマの人たち、辛いだろうけどちゃんと信頼を勝ち取ってる(評価されてる)と思うよ!」ってこと。


 ... というわけで「偉そうなこと書いときながら、僕はぜんぜん優秀でも我慢強くも無いなー」とか反省してるうちに何だか満足したので、今日もご飯がウマいです!