最近、考えるようになったことがいくつかある。 それは、私のソフトウェア開発観の基礎となるものである。 ソフトウェア開発の鍵となるものをまず1つ挙げるとしたら、 それはソフトウェア開発に欠かせない要素、つまり 「働く人」だ。 優秀な開発者の生産性は、平均値よりも遥かに高い。 その差は給与の差よりも大きいだろう。 つまり、費用対効果の高いソフトウェア開発を行うために最も重要なことは、 できるだけ優秀なチームを雇うということである (たとえ開発者のコストが平均より高くてもだ)。 少数の優秀な(単価の高い)開発者の生産性は、 多くの平凡な(単価の安い)開発者の生産性よりも遥かに高い。 つまり、少数精鋭の開発者は、日換算ではコストがかかるかもしれないが、 トータルで見るとより低価格なソフトウェアを作り出すことができる。

……などと言う人は多いが、実際にやる人はあまりいない。 「そんな特攻野郎Aチームなんてできるわけないじゃないか」と、みんなは言う。 まるで障害となる”自然の法則”でもあるかのようにだ。 それは違う。そんなチームを組織するのは確かに難しいことだが (どの会社でも難しいだろう。ThoughtWorksも試行錯誤している)、 挑戦するに値する価値があるのだ。

どうしてそんなに難しいのだろうか? まず、優秀なギークたちが居心地がよいと思うような環境作りをしないといけない、ということがある。 それはつまり、経理担当やマネージャたちには理解できないことをたくさん行う必要があるということだ ——これが、多くのIT組織がその種のチーム作りを行うことができない理由なんだと睨んでいる。 こういう基本的な考えを持っていたので、私はThoughtWorksに参加したのだ。 ギークのためにソフトウェア開発環境を整えようと努力する覚悟のある会社が、ここにある。

もうひとつ、最近、考えついたことがある。 多くの著者が(私を含め)以上のようなことを述べ、 「能力」こそが最重要なのだと強調している。 まあ、それはそれで正しいのだけど、能力以外にも重要なことはある——「協調性(collaborativeness)」だ。 ThoughtWorksが居心地良いのは、みんなと一緒に働いて楽しいからである。 これは偶然ではない——ThoughtWorksは、文化として、人材の育成のために様々なことを行っているからだ。 これは決して簡単なことではない。こういった理由もあって、ほとんどの大企業は、 先に述べたような組織を自ら作ることは難しいと考えてしまうのだろう。

面白いことに、最近、このことについて意識するようになってきた。 私は、若い頃に決めたある「決断」のことをはっきりと覚えている。 ちょうど独立コンサルタントになったときのことだ。 その決断とは、 「どんなに優秀な人であっても嫌な人とは一緒に仕事をしない」 というものだった。 彼らと争おうとはせず、ただただ、避けた。 優秀な “奴ら” と付き合うことで得られるメリットなんて、 取るに足らないと思うようにした。 そう決断したことを後悔してはいない。 ただその決断は、私の意識の奥底で眠り、意識からは消え去っていた。 ThoughtWorksに参加したときも、その決断が本当の理由だとは気付かなかった ——「能力」にばかり目が行っていたしね。 今はもうThoughtWorksに参加した理由が「協調性」だって気付いているし、 日々、ますますそれを意識するようになってきている。

こんなことを喋るときは、これを付け加えておかないと。 ThoughtWorksも、私が相応しいと考える組織になるには、まだまだ進むべき道があることをお忘れなく。 私がここにいるのは、正しいソフトウェア組織について、意見するだけでは足りないと思っているからだ ——正しいソフトウェア組織の構築に自らが協力しなければならないと思っている。

  • 2008-12-18 (木) 19:24:40 名無しさん : sa
  • 2008-11-27 (木) 13:59:58 ckeyyz : JtuBBRcrHGQKwFCi
  • 2005-03-23 (水) 13:16:30 ‘’[[kdmsnr]]’’ : ありがとうございます。
  • 2005-03-23 (水) 13:05:33 ‘’[[haruki]]’’ : まず、1段落第3文。the people you have doing the work「その仕事をおこなわさせる人」なので「一緒に」は不要だと思います。第3段落。For a startは、まず〜だ、という意味だと思うので、それにあわせて全体を変更しました。4段落目。strikeは衝撃というほど強い意味ではないかと。最後の文。ここは、前段落の「どうして〜難しいか」の理由のひとつを述べているのではと思います。最後の段落は、こういう意味かと。
  • 2005-03-23 (水) 13:04:54 ‘’[[haruki]]’’ : 気になったところがあったので、いろいろ変えました。表現おかしいところは、再修正お願いします。
  • 2005-03-23 (水) 09:07:54 ‘’[[kdmsnr]]’’ : 併記しておきました。
  • 2005-03-23 (水) 08:52:18 ‘’[[村山]]’’ : 「協調性」の部分が気になります.(誤訳だというつもりはありません.)英語の,特にこの文脈中における”collaborativeness”と日本語の「協調性」は,果たして同じ意味で使われているのでしょうか.「協調性」という単語は人によっても微妙にニュアンスが違い,時として「出る杭を打つ」ために使われるたこともありました.