@IT編集部の西村賢がRuby/Rails関連を中心に書いています。

優秀なエンジニア5人は二流の1000人を完全に凌駕する

»

 1990年代後半のインターネットブームの火付け役といってもいいWebブラウザ「Netscape」の創業者で、現在シリコンバレーで投資家として活躍するMarc Andreessen氏が、あるインタビュー中で「優秀な5人のプログラマは、二流のプログラマ1000人を完全に凌駕する」(Five great programmers can completely outperform 1,000 mediocre programmers.)と発言したことで、ちょっとした話題となっているようです。インタビューはライターのBill Taylor氏(個人サイト)が、自著「Marvericks at Work – Why the Most Original Minds in Business Win」(アマゾンUSへのリンク)のためにインタビューした際の答えとして、Harvard Business Reviewのブログ記事の中で引用されています。

 Andreessen氏は、「生産性の非常に高い人ができることと、平均的な人ができることのギャップはどんどん大きくなっている」とした後に、5人が1000人に勝つということを言ったそうです。

 Taylor氏は、先月New York Timesに掲載された「For Buyers of Web Start-Ups, Quest to Corral Young Talent」という記事への反応としてブログ記事を書いています。New York Timesの記事のほうは、Facebook創業者のMark Zuckerburg氏の言葉を引用しています。Zuckerburg氏は、ある役割を果たすのに飛び抜けた存在であるような人は、非常に優秀な人より「少し良い」なんてものではないと言っています。だからFriendFeedの買収に4700万ドル(38億円)でも喜んで出そうとした、と。1人当たり3億円ちょっとという値踏みということになります。

 FriendFeedには、「Don’t be evil」という標語をGoogleで生み出したことでも知られるGmailの生みの親、Paul Buchheit氏などがメンバーにいます。FriendFeedというサービス自体は、登場時にこそ時流にマッチしていて騒がれた感があるものの、今となっては何だかスパミーなソーシャルサービスという印象しかありません。でも、そんなことはどうでもいいんでしょうね。買収の目的は人材であって、買ったらサービスなんて閉じてしまえばいいのですから。

 最近、こうした人材目的での買収は「acquire」(買収)と「hire」(雇用)を足した造語として、「acqhire」などと呼ばれているようです。GoogleやFacebookに多いパターンです。大枚をはたいて人を買うみたいな話で、ちょっとイヤーな感じもありますが、買われた人たちは合意してるというか、それで一種のゴールを果たせるし、しかも、引き続き自分たちが情熱を傾けるプロダクトの開発に携われるケースも少なくないわけで、それはそれで良いことだと思います。

 私は直接Googleのマネージャクラスの人に聞いたのですが、Googleがモバイル広告のAdMobを買収したとき、買収の目的はズバリ、チームだとハッキリと答えていました。優秀な人たちが、「モバイル広告とはどうあるべきか」を誰よりも先に考えて試行錯誤している。Googleがゼロから始めてテクノロジー的にAdMobに追いつけないなどということはない。しかし、すでに走り出している人たちがいるのだから、Googleから見れば、「仲間になって一緒にやろう」と言ったほうが早いという判断というわけです。つい先日もGoogleはSageTVというテレビのセットトップ向けにソフトウェアを作っていたベンチャー企業を買収していますが、これも人材とプロダクトの“まとめ買い”のうち、どうも前者が強そうなニュアンスです。

 さて、前記のHarvard Business Reviewのブログ記事は、こうした人材の買いあさりと、優秀なエンジニアは1人当たり5000万円から1億円払う価値があるなどというシリコンバレーの雇用市場でのエンジニアの高騰ぶりに対して、個々のプレイヤーの過大評価が起こっているのではないかと論じています。

 Taylor氏は、個々人の能力だけでは達成できないことがあるという例として、スポーツチームの話やウォールストリートの“スターアナリスト”を挙げています。スターとなるようなアナリストは、転職後に、むしろ成績を落とすというのです。なぜかというと、スターアナリストがスターでいられたのは、職場で利用可能な公開・非公開の種々のリソースや、企業文化、ネットワーク、同僚といった存在があってのことだから、というわけです。

 クラウド時代のソフトウェアエンジニアと金融アナリストを比べるのは、あまりにも雑駁です。人員規模と生産性は比例せず、むしろコミュニケーションコストの増大から負の相関となり得るというのは、30年以上も前から「人月の神話」などで指摘されてきたことですが、最近はこの傾向が加速しているようにも思えます。ソフトウェア開発、特にWebサービスの開発・運用において1000人でないと達成できないことで、5人でできないことって何でしょうね。

 確かに最近のシリコンバレーはバブル気味で、人材獲得合戦も加熱しています。でも私には、AndreessenやZuckerbergの言い分が言い過ぎかというと、どうもそんな風に思えないのですよね。皆さんどう思いますか?

【追記】皆さん個人的にはコメントを下さるのに、表には書かない! ちょっと勝手に引用してみます。まず、日●BPの記者で、個人的にとても尊敬しているHさんのコメントです。

1000対5という数字はともかく、ソフトウエア工学が事実上失敗している理由はそういった視点の欠如にあると思います。

冷静な評価です。1000対5は、確かに根拠がない飛び道具かもしれません。Andreessenは、本質的なことが、ちゃんと伝わるような形でズバリと言ってのけるのが上手です。

浅学なもので知らないのですが、ソフトウェア工学では個人の生産性の振れ幅をどの程度に仮定しているのでしょう。良く言われるように製造業などをモデルにしているのだとすると、そこに大きな齟齬がありそうです。

もう1つ、コメントを。こちらは某大手ICT企業にお勤めのGさん

面白いですね。個人的には人材タイプとしては「本人の力はたいしたことなくても、レバレッジを効かせるタイプ(ここでいうスターアナリスト)」と「本当に一人で何でもやっちゃうタイプ」がいると思っていて、ここで評価されているのは後者のほうですかねえ

そういう評価軸もありますよね。確かに、周囲の巻き込みが上手な人は確実にいます。個人の力の差が大きくなってきたとはいっても、世の中にインパクトを与える仕事は遅かれ早かれチーム戦になります。だから、レバレッジ型のプレイヤーは必要でしょうね。最近、シリコンバレー界隈では“product guy”という蔑称がよく議論されています。コードを書かない、アイデアの人のことです。コードが書けない人って何の役に立つの? ビジョン? アイデア? そんなの誰でも持ってるし(笑) という。「いいアイデアがあるんだけど、実装してくれる人いないかな? いや、アイデアの中身はNDAにサインしてからでないと言えないんだ、ふふふ」というのがproduct guyの決まり文句。誰も思い付かないアイデアにいいアイデアなんて、まずないし、勝負はアイデアじゃなくて技術・ビジネス面での実装だというのがシリコンバレーのテッキーな人々の共通認識としてあるように思います。一方で、最近ではその逆に、いややっぱりコードじゃなくても重要な役割を果たす人がいるという、ある意味では当たり前の論駁もあったりして、まさにそういう人がレバレッジ型の人材なんでしょうね。

もう1つ、最速で広告を配信している某ベンチャーの社長さん。

できるエンジニアのチームビルディングが出来る人はほんとにすごいと思います

このコメントも、レバレッジ型人材のことを指しているのだと思います。

どなたか存じませんが、id:tamtam3さんのコメントです。

これって別に、SEに限った事じゃなくてすべての事にいえるよね

クラウド時代のエンジニアで顕著というだけで、確かにあらゆる知的生産に関わる職業で起こりつつあることなのかもしれません。何人が何時間仕事をしたということで出されるアウトプットよりも、誰がどのぐらい創造性を発揮して頑張ったかが経済的なインパクトを持つようになってきているのかもしれません。

Twitter上のyoichi sudoさんのコメントです。

Windows作るとかそういうのは5人じゃできなさそうだな。

私も最初に思い浮かべたのは、Windows NTを作ったデーブ・カトラーのチームです。Linuxカーネルも、2000人とか3000人という規模ですよね。しかし、Linuxって2000人のチームで開発したというよりも、コアに何十人かいて、そのときどきで貢献する人がいるという印象です。今の時代にスクラッチから1000人が集まって作るソフトウェアって何でしょう?

【追記2】少人数で作るプロダクトによる価値が相対的に高まってきたということはあっても、実際には数百人で作るシステムやアプリケーションは今も、そしてこれからもたくさんある、という常識的な見方も付け加えさせていただきます……。相対的に高まってきた、というのは例えば、モバイル向けに画期的OSを作るという話でも、Palm(現在HPが買収済み)がwebOSを70人ほどのチームで作ったというんですね。LinuxやWebKitが下にあるからできることで、そういう点でも以前ほど「大規模」が必然でもなくなってきているのかな、と思ったりもします。

【追記3】acquireのスペルを間違えていました……、スミマセン。ほらね、TOEIC990点の英語力とかいっても、しょせんウンコその程度なんですよ!

【追記4】当たり前っぽい指摘を、もう1つ。何を作るのかが分かっているケース、つまり既存の帳票システムをOA化するというケースと、FriendFeedのような新規サービスをOSSのイケてそうなプロダクトとEC2を使って作るのでは意味が違う、ということもありますよね。作り方が分かっているものは工学となりやすく、そうでないものは、どちらかと言えばアートに近いというような話かもしれません。

Comment(10)

コメント

yamamoto

もちろんプロジェクトの性質にも依存すると思いますが、そのとおりだと思います。

1000人を動かすのに管理職はどれくらい必要になるのだろうか・・・そもそもプロジェクトの初めから1000人いても最初の設計段階では、ほとんどの人がやること無いだろうね。逆に1000人が最初から動くようなプロジェクトだと最後の生産物が混沌としたものになりそう。個人的には、優秀な5人が1000人を運用するというのがうまくいくように思うんだけど、その5人自体が設計からコーディングまで全部やりたい人だったりするんだろうな・・・


ちなみに生産性が200倍違うことは有りうる話ですが、それに対して給料が200倍の開きがあった例がありません。優秀なら自分で会社を興せって話かな?

西村賢

yamamotoさん、

そうですよね、1000人でいきなり始めるというのはないのでしょうね。給料はどうなんでしょうね、3、4倍ぐらい出すというのではダメでしょうか。そのぐらいでも十分に魅力的じゃないかと思います。つまり、雇うほうも雇われるほうもハッピーになりそうという。100倍給料を出すなんて無茶ですが、2倍出して生産性10倍のエンジニアを雇いましょう、あるいは頑張ってスキルを磨くエンジニアには2倍出したらいいんじゃないでしょうか。と、私なんかは感じているのですが。

yukoba

> Windows作るとかそういうのは5人じゃできなさそうだな。
> Windows NTを作ったデーブ・カトラーのチームです

カトラーさんの伝記の「闘うプログラマー」によると、
7人チームでDECからマイクロソフトに移籍して開発を開始し、

開発開始から1年くらいたった時点で20人で、

> チームのメンバーが25人ほどになり、多すぎると思っていた。
> これ以上増えると混乱する。
> 「500人のチームを持つより、5人のチームの方がましだ」と言う。

と書かれているので、ゆっくりと増やしていったのだと思います。

ただし、リリース直前は物凄い人数でウンザリしていた
みたいなことは書いてあったはずです。

西村賢

yukobaさん、

なるほど、NTはむしろ少数精鋭型だったのでした。カトラーのあの本を読んだのは、もう16年前のことなので、ちょっと記憶が曖昧でした。情報ありがとうございます!

アロン

生産性の違いは∞じゃないでしょうか。

だって二流が何万人集まってもできないものはできないんです。

機能要件は満たせても性能要件や資源性などの要件を満たせないなんてことは良くある話です。

セキュリティなんてのも隠れた要件ですね。

アロン

追記:

でも世の中、超一流の人達ばかりじゃないので要件を妥協して実装しているというのが現実なんだと思います。

妥協した要件での実装なら生産性の差は2倍ぐらいに縮まることもあるでしょう。なんかソフトウェア工学って二流を沢山集めて何とかするための学問って気がしますね。ドラッカーのマネジメントじゃないですけど、普通の社員だけで結果を出すことが大事というような。

経営者から見れば超一流の社員を採るのは難しいし、その人が経営上のSPOFにもなりうるわけで、できれば一流、二流でも沢山いた方がいいって方向に向かい易いんでしょう。

この手の話は面白いので、つい沢山書き過ぎました。

西村賢

アロンさん、

コメントありがとうございます。

> 生産性の違いは∞じゃないでしょうか。

そうですよね、できないものはできない、ということはあると思います。

定性的、感覚的な話として「オープンソースのモジュールやクラウドのおかげで、少数精鋭によるソフトウェア開発のポテンシャルが、かつてないほど高まっている」ということはあっても、ソフトウェア産業全体からしたら、そういう特異点の話ばかりしていても始まらないよね、ということですよね。

akira

5対1000で、5人が勝つ。 ということは、間違いなく存在すると思います。
(というか、1000人で開発行為を行うことは、コミュニケーション・ロスの影響が
 大きすぎて非現実的でしょう。)

ただ、悲しいかな。 そんなに優秀な人材は ごく少数なので
凡人をかき集めて やっつけるProjectが大多数。 というのが
世の中の現実なのだと思います。
→ 結果、ソフトウェア工学は、「猿でもできるxxxxx論」となる訳ですし
  デスマーチは、永遠に無くならない。 というサダメなのでしょう。


オブジェクト指向は、猿にやらせて良い部分と駄目な部分を分割し
 人間:作る人、猿:使う人
に役割配分した、画期的な理論だと思われるのですが、
残念ながら
 ・雇う人がライオンだったので、人間と猿も同じエサにしか
  見えず、区別が付けられなかった。
  (きっと ライオンには、寡黙な人間より、
   叫んでいる猿の方が目に付くのでしょう。)
という致命的な問題を克服できず、現在に至ってしまっている
工学論の1つだと考えています。

一流と二流、二流と三流の能力差は、直感ですが
きっと対数スケールなんじゃなかなーと。

その分布も対数スケールなんじゃないかなーと。
その底は、ここの記事によれば10^3位になるんですかね。

GoogleとかFacebookとかTwitterとかはてなとかの
中の人と平均的なエンジニアの能力を比較するには
きっとdB(デシベル)表記じゃないとグラフに表示できないでしょう。

#彼らを0[dB]としたら、-6[dB]位に収まっていて欲しい>自分

寄り道

昔先輩に言われたのは、(囲碁や将棋で)5段の人に初段が1000人いても勝てない。
ベースを作り物が見えた後は体力勝負。
でも、初段や初級の人には5段の人のすごさがわからないから自分レベルに落として仕事させないと気が済まないんだよなぁ。
という気がします。

コメントを投稿する