能力主義の負の側面、チームの士気を下げる「優秀だがいやなやつ」

能力主義の負の側面、チームの士気を下げる「優秀だがいやなやつ」
クライブ・トンプソン テクノロジーライター
https://xtech.nikkei.com/atcl/nxt/column/18/01472/111800003/

 ※ こういう話しは、よくよく噛みしめておいた方がいい…。

 ※ 人は、決して、一人で何でもできるわけじゃないんだ…。

『「社会を作り変えたいなら、コードを書くのが一番だ」――。ソフトウエアが世の中を大きく変えている今、それを作り上げるコーダーの存在感は高まる一方だ。優秀なコーダーをひき付けられるかが、企業の競争優位性を大きく左右するまでになっている。本特集では5回にわたって、そんなコーダーたちの実像に迫る。

 プログラミングは意志の力のみが物を言う才能の世界で、桁違いの能力差が存在するとコーダーは考えがちだが、そうなるのは、ある意味、当たり前である。

 なにせ、毎日、実感することばかりなのだ。コンピューターに怒ってもしかたないし、どやしつけたらテストの結果がまっとうになるなんてこともない。プログラマーのメレディス・L・パターソンが2014年に書いたエッセイから一節を紹介しよう。

 「ルートシェル相手に口論しても意味がない。相手によってコードが対応を変えることなどありえない。コードが自分の価値を決めるのであって、逆はありえないのだ」

 ふつうの人はできる振りをしたり言い逃れをしたり、言いくるめようとしたりするが、プログラマーは走るコードに敬意を払う。それ以上でもそれ以下でもない。フェイスブックを上場したとき、マーク・ザッカーバーグが書いたオープンレターの一節を紹介しよう。

 「ハッカーというのは、新しいアイデアがうまくいきそうかとかどう作るのが一番いいかとかを何日も議論するより、とりあえず作ってみて、どのあたりがうまくいくのかを確かめてみる人種です。だから、フェイスブックでは『論よりコード』とよく言うのです……また、とてもオープンで能力主義というのも、ハッカーの文化です。一番大事なのはアイデアやその実現であり、それを推進しているのがだれであるとか、その人が部下をたくさん抱えているとかは関係ないと考えるのです」

 プログラミングには、もうひとついい点があるとコーダーは言う。独学で、高学歴の人間と肩を並べられる工学分野はこれだけだ、と。ミドルスクール時代に独学でプログラミングを学び、大学院で情報科学の博士号を得たあと、会社をいくつも創業したコーダー、ジョアンナ・ブルーワーもそう考えるひとりだ。

 「科学・技術・工学・数学、いわゆるSTEMの世界で、博士号を持っているような人が完全に自学自習の人と肩を並べる分野は、コンピューターサイエンスしかないでしょう。すばらしい特徴です」

 一方、能力主義の根底には自画自賛の側面も否定できないと言うコーダーも少なくない。

 新入社員のころや高校などでは人付き合いのうまさで序列が決まりがちだが、そんな時代に、引っ込み思案で決まりの悪い思いばかりをしてきたら、プログラミングは客観的な世界であるとの考えに惹かれるのも無理はないだろう。

 たとえば、ハイ・パフォーマンス・コンピューティングの博士号を持ち、スタンフォード大学で教壇に立っているシンシア・リーは、1990年代から2000年代、コーダーとしてスタートアップで働いていたが、周囲には、若いころ、仲間はずれにされているとかわかってもらえないとか思っていた人がたくさんいて、みな、ここは、そういう口先人間がちやほやされるとは限らない世界だと大喜びしていたという。

「我々がいた技術世界では、切れ者っぽい印象の人やスーツ姿の人には疑いの目が向けられがちでした。いわば敵側ですからね。1980年代の青春映画を観ればわかりますが、当時の高校で人気だったタイプです。対して、我々は、オタクの楽園を作っていたのですから」』

『クオーラとピンタレストで怒濤の成果を挙げたことで知られるトレイシー・チョウも、同じように考えているという。ピンタレストの共同創業者、ベン・シルバーマンが究極のロックスターだと語ったプログラマーである。

 「ソフトウエアの成功者は、ほかの分野で成功してきた人とタイプが違うと思います。また、ここでは、自分の力で成功したと思えないと、成功した実感が得られないのではないでしょうか」

 プログラミングというものは、門外漢にとってはまずまちがいなくわかりづらいし、同じ仕事をしている人にとってもわかりやすいとは限らない。だから、適当なことを言っても通りやすいのだとトレイシーは言う。

 「コードはほとんどの人にとってわかりにくかったり隠れたところで動いていたりするのも一因でしょう。表に出ていても、たいがい、なにがどうなっているのかわかりませんし。ですから、『能力次第の世界、わかる人にはわかる世界なんだよ』と言っておけばなんとなくそんなものかと思ってもらえたりするのです」

 だれでも中を見たりいじったりできるようにコードをオンラインで公開するオープンソースソフトウエアの世界は、特に能力主義の色彩が濃いとされている。自分の貢献を成果として受け入れてもらえるよう競うことになるからだ(お金はもらわないことが多い)。

 実例として、オープンソース関連で一番有名な成功物語となったオペレーティングシステム、GNU/Linux(たいていは、単に「Linux」と呼ばれる)について見てみよう。コンピューターを動かす基本のオペレーティングシステムである点はウィンドウズやMacOSと同じだが、無償で使えること、2500万行ほどもあるコードをだれでも自由にダウンロードして中を見られることなどは大きく違う。

 Linuxの起源は1991年。フィンランドの大学生リーナス・トーバルズが、あくまで趣味として、オペレーティングシステムのカーネルを自作してみようと思ったのだ。オンラインで公開したとき本人も書いているように、大がかりなプロの作品にするつもりなどなかった。だから、シンプルなカーネルができたとき、ほかのハッカーが見られるようにソースコードを公開した。

 そして、雪だるま式の拡張が始まった。世界各地のプログラマーから機能追加の提案コードやバグの修正提案などが届くようになったのだ。よさげな提案は採用。こうして、何百人、何千人もの貢献により、Linuxは、機能がどんどん強化されていった。

 スタイルの異なるコーダーがよってたかっていじってもコードがぐちゃぐちゃにならないようにするため、トーバルズは、「ギット」なるものを開発する(いま、幅広いコーダーに活用されているソフトウエアだ)。ギットを使うと、だれかの貢献を組み込むことも簡単にできるし、その結果、動作がおかしくなったりしたら、元に戻すことも簡単にできる。

 一部ファンが主張していることなのだが、いまのオープンソースは、メリットの市場競争といった感じになっている。多くのコーダーがよいと認め、これなら我々のプロジェクトに組み込んでもいいんじゃないかとなるのはだれのアイデアなのか、それを競っているわけだ。オープンソースとはメリットの純度を高める蒸留だと言ってもいいだろう。

 Linuxにおいて、トーバルズは、役に立つしよくできていると思った貢献のみをLinuxのコードベースに取り込む「善意の独裁者」の役割を果たしている。貢献の敷居はきわめて低い。

 Linuxのソースコードをダウンロードし、そこに手を加えて(ギットを使って変更すれば、木構造で改変場所がわかる)、こういう改変をしてみたんだけどどうだろうとコア・コントリビューターに送るだけでいい。優れた改変だと判断されれば採用され、世界中で使われるようになるわけだ。実際にはもう少しややこしかったりするが、基本的にはそんな感じである。』

『2016年、ポートランドにトーバルズを訪ねたとき、次のように言われた。

 「手元に自分の木があって、好きなようにできるわけです。クレイジーなことを試し、それがうまくいって、かつ、それが実はクレイジーでもなんでもないんだとわかれば、見てくれよとその木を公開すればいいのです。それがすごくいいものだったら、いろんな人が採用してくれます」

 私が会いに行ったころのトーバルズは、もう、自分でコードを書くことがほとんどない状態になっていた。ケーブルやいろいろな道具(スキューバダイビングが趣味で、ダイビング用のソフトウエアも作っている)が転がる自宅の小さなオフィスに座り、毎日、送られてくるコードのチェックをする、いわば、大賢者としてソフトウエアを判断するのが仕事になっていたのだ。

 ちなみに、彼のところまで到達するには、まず、メンテナーと呼ばれる人々による審査を通らなければならない。メンテナーとは中核となる貢献者のことで、自発的にLinuxのコードをたくさん書いたり他人のコードを評価したりして、やる気があるとトーバルズや他のメンテナーに認められた人々だ。ここに入れれば、かなりの実力者ということになる。

 Linuxはコンピューティング分野で広く使われており、インテル、レッドハット、サムスンなどのテック企業には、Linuxへの貢献を業務の一環とする社員やそれが専門の社員までいるようになっている。だから、Linux貢献者の中核と認められるのは、履歴書の売りにもなるほどのことだ。

 有名オープンソースプロジェクトに対する貢献はキャリアアップにつながることが多い。だから、たくさんのコーダーが貢献しようとする。週末の趣味として作ったプロジェクトをオープンソースとしてギットハブなどのサイトに公開するコーダーが多いのも同じ理由だ。自分の仕事を見てもらえるのもうれしいし、自分用に作ったツールをほかの人が使ってくれるのもうれしい。

 さらに、ほかの人々のコードを見て、どう作っているのかを知るのは勉強になる。生態系の一員としてそういう義務があると感じるコーダーも少なくない。自分のコードをオープンソースとして公開したり、ほかの人々のプロジェクトに貢献したりという形で、受けた恩を返しているというのだ。

 取材したコーダーは、全員が、仕事でオープンソースのコードを大量に活用していると言っても過言ではないし、高額の仕事にオープンソースのコードが使われているのも当たり前のことと言える。

 つまりオープンソースとは、いかに心を揺さぶるかのアダム・スミス的競争とカール・マルクスが喜びそうな共産主義的気風とが混然一体となってモチベーションを生み出しているわけだ。そして、それを支えているのが、コードはうそをつかない、つまり、コードが優れていれば、仲間にはわかるし、そういうコードは受け入れられるという理想である。

 「口からでまかせには、みな、眉をひそめるものなのです」とトーバルズは言う。』

『たしかによさげである。だが、スーパーヒーロー級の人材を中心とした世界は、実際のところ、ぐちゃぐちゃになりがちだし、生産性も思ったほど上がらなかったりする。ソフトウエアアーキテクト、ジョナサン・ソローザノ=ハミルトンの体験談を紹介しよう。

 話の主人公は、彼と同じ会社で働いていた自称ロックスタープログラマーである。ソローザノ=ハミルトンのブログでは、リックという名で呼ばれている。リックは「困ったら彼に聞け。そうすれば、ホワイトボードに解決策をさっと書いてくれる」と社内でうわさされるほど優秀で、ヘッドアーキテクトとしてプロジェクトの設計に携わりつつ、エースプログラマーとしてコードを書きまくっていた。彼のおかげで苦境を脱したことも数え切れないくらいあった。

 そんなことをくり返した結果、彼は、自分なしにはなにごともうまくいかない、自分のスキルがすべてを左右すると思うようになったらしい。自分はコーディングのスーパースターである、10倍優秀な人材で凡人とは格が違う、と。そして、あれもこれも背負いこんでいく。

 だが、リックが頑張っても、プロジェクトは遅れていく。ある程度以上大きなプロジェクトは、いかに優秀でもひとりでどうにかできるはずがないのだ。丸1年遅れた時点で、もう2年はかかるほどの遅れだ。リックはヒーローになろうと必死に働いた。上司も、彼の好きにさせていたようだ。当時の状況をソローザノ=ハミルトンは次のように書いている。

「リックはコードを書きまくっていました。毎日12時間、休みなく仕事をしていたのです。この状況を打開できるのはリックしかいないと、みんな、思っていました。息をひそめ、ずたぼろのプロジェクトをなんとかまとめる魔法のような解決策をリックが思いついてくれるのをじっと待っていたのです」

 だが、リックは、過労でいらつき、内にこもるようになっていく。

 このあたりで、事態を打開できないかとソローザノ=ハミルトンに声がかかった。まずはリックに会って話を聞いたが、「あんたなんかに、オレの作ったものが理解できるはずがない。オレはアルバート・アインシュタインで、あんたらみんなはサルで、泥をこねるしか能がないんだから」と取り付く島もない。

 コードを確認すると、これが、スタイルが独特な上、コメントなどがなく、本人以外に手を入れられそうにないものだった。だから、関係者全員が一緒に作る形で一から製品を作り直すことにした。リックはそれも拒絶。休まず仕事を続けるし、ほかの人が書き換えたところを元に戻したり、周りをさげすむようなことを言ったりした。事態は悪化の一途である。

 結局、彼は首にするしかなかった。すると事態は好転した。残った社員が協力し、シンプルな製品を開発。最終的には、サイズも複雑さも20%以上削減することができた。つまり、発注元にとって読みやすいし理解しやすく、また、保守もしやすくなったということだ。スーパーヒーローなんていらなかったわけだ。しかも、開発期間はわずかに6カ月強である。

「リックほどのプログラマーはいませんでした。なんでも自分で作ろうとする鬼才はいなかったのです。その結果、生産性はかつてないほど高くなりました」

 ソローザノ=ハミルトンは、こう結んでいる。

 これは、能力主義の悪い面がもろに出た例だと言える。優秀だがいやなやつ、つまり、自分はかけがえのない人材だと思い込んだプログラマーが生まれてしまうことがあるのだ。そういう人が威張りちらすと、ほかの優秀な人が逃げてしまうし、残念なことに、いまいち使い物にならない製品ができてしまったりする。すべてがその人の頭の中にしまわれているからだ。

 そもそも、社内を混乱させる性格では、たとえ優秀であってもどうにもならないというのが正直なところだろう。』

『優秀だがクズとしか言いようのない人と仕事をして大変だった話は、ほかにもたくさんのコーダーが語ってくれた。

 Yコンビネーターに採用されたとある企業が雇ったロシアのコーダーもそういう人物だった。いい仕事をするのだが、どんな具合だとあいさつされるたび、「こんなところは大嫌いだ」と返すのだ。理由は「ほかの連中の仕事がひどすぎるから」だそうだ。とにかくお山の大将でねと上司はため息交じりだった。

 アプリの作成によく活用されるコードライブラリー、リアクトに詳しいツイッターのプログラマー、ボニー・アイゼンマンは、ロックスターコーダーという神話があるから話がおかしくなるのだと言う。

 優秀だがいやなやつが必ず役に立つとも限らない。たしかに、難問を解決してくれて短期的に助かるかもしれないが、全体の士気にやっかいな後遺症が残る。いやなやつの相手はしたくないと、ほかの優秀な人材が逃げてしまうのだ。IBMのベテランコーダー、グラディ・ブーチも、すごく優秀なのに周囲と協力できず、日の目を見る製品が作れないプログラマーを何人も見てきたそうだ。

 リックのような人材が本当に10倍優秀で、10倍のソフトウエアを書けるのだとしても、つまり、ふつうの10倍のスピードで書けるのだとしても、そこから生まれるのは「技術的負債」であることが多い。急ぎすぎてあちらもこちらもめちゃくちゃになったものしか生まれないのだ。

 手の早いコーダーは、たいてい、手っ取り早いやり方ばかりを採用するし、そのコードはつぎはぎだらけで、その後、だれかがじっくりこつこつクリーンアップしてやらなければならない。ディベロッパーの友人、マックス・ホイットニーの言葉を紹介しよう。

 「10倍優秀なエンジニアというのは、実は、生産性が10倍の人ではないのです。本当のところ、そう言われる人は、同僚の仕事を10倍に増やしているんです。これ、実は、ネットで読んだ話なんですけどね。ともかく、氷山の水面から出ている部分みたいなものなんです。光り輝いてきれいなんですが、その裏には技術的負債が山のように積み上がっているわけです」

 アンドリーセンも語っていたが、コーダーがスタートアップを立ち上げたがるのは、そうすればどんどん前に進めるからだ。だがその場合も、ある程度のユーザーを捕まえられるくらいには機能するがコードベースはぐちゃぐちゃで、根気よくクリーンアップして混乱を収めてくれるプログラマーが必要になったりする。

 トレイシー・チョウは、ピンタレストで、バックエンドの大幅な改修を担当した。そのためにコードベースの検証を進めていたとき、検索が必ず2回行われるという変な動作に気づいた。なにかがおかしい。

 調べてみると、検索を実行するコードがなぜか2回、コピーペーストされていた。ピンタレストの立ち上げ期に、だれかが拙速な仕事をしたわけだ。その1行を削除するだけで、検索の効率は倍増した。このように、10倍優秀というのは、コードを書くことより、むしろ、他人の失敗を修正することに発揮される能力だったりする。』

頭の良さで人をぶん殴っていた、ある同僚の話
https://blog.tinect.jp/?p=68019

 ※ こっちも、同根の話しだ…。