*「ふっかつのじゅもんがちがいます。」withぬこ このページをアンテナに追加 RSSフィード

はてなRSSで購読 Bloglinesで購読 Google Readerで購読

2005-08-06

ペアプロと上司でないマネージャはすっぱいブドウ

開発者が楽しく仕事できる環境とはを読んで。

ペアプロについて

以前いた会社を辞める前に、引継ぎとして(そして個人的な実験を兼ねて)ペアプロをしてみたことがある。確かに効率的だった。近藤さんのおっしゃるような効能を容易く体感できる。僕は何一つドキュメントを書かなかったが、しかしこの引継ぎは「xxx引継ぎ資料20050806.doc」なんていうWordファイルを書いてこれを元に1時間プレゼンして、このファイルをファイルサーバの奥深くに格納するよりもはるかに効果的だった。

ヒント:そういう引継ぎはやらないよりは幾分ましだが、せいぜい「話題の映画のあらすじを教えてもらったから世間話ができる」という程度のご利益しかない。大事なことはいつだって行間に書いてあるのだ。

  • ペアで作業を行うため仕事以外の事は一切できない(一人で作業しているとついついメールをチェックしたりウェブを見たりしてしまいます)
  • 「これはあとからちゃんと作るから今は適当に作っておこう」という「とりあえず」なプログラムができにくく、プログラムの品質が上がる(「とりあえず」を放っておくとどんどんバグができてしまい、最終的な効率を大きく下げてしまいます)
  • 作業者間のノウハウが共有され、スキル向上につながる(特に新人教育時には有効です)

開発者が楽しく仕事できる環境とは

しかしながらペアプログラミングはすっぱいブドウだ。優秀なプログラマならば誰だってペアプロが効率的であることが直感的に分かるはずだ。僕の知る限り優秀なプログラマは大抵就業時間の30%くらいしか労働しない。残り70%を使えるのは北斗神拳の伝承者くらいのものだ。(30%は言い過ぎかもしれない。こんなに働ける人は稀だ!

これに関しては面白い記事がある。ジョエルソフトウェアより。

私の一日の多くはこんな感じだ: (1) 仕事にとりかかる。(2) emailをチェックしたり、Webを見たり、そのほかのことをする。(3) 仕事に取りかかる前にランチを取ったほうがいいと判断する。(4) ランチから戻る。(5) emailをチェックしたり、Webを見たり、そのほかのことをする。(6) いい加減はじめたほうがいいと心を決める。(7) emailをチェックしたり、Webを見たり、そのほかのことをする。(8) 本当に始めなきゃいけないと、再び決心する。(9) くそエディタを立ち上げる。(10) ノンストップでコードを書いていると、いつのまにか午後7:30になっている。


ステップ8とステップ9の間のどこかにバグがあるようだ、私は必ずしもこの溝を飛び越えられないからだ。私にとっては、ただ始めることが唯一困難なことなのだ。(中略)


たぶんこれが生産性の鍵なのだ: ただ始めること。ペアプログラミングが機能するときにそれがうまくいく理由は、たぶんペアプログラミング セッションを相棒とスケジュールするときには取りかかるために2人が力を合わせるからだ。

射撃しつつ前進

おそらくそういうことなのだ。従って、ペアプロで作業することを(技術者出身でない)CEOに納得させることは不可能に近いくらい困難であることが分かる。そのためには、自分が70%遊んでいることを自供するか、さもなければ相当トリッキーな手段を使うかしなければならないからだ。

偉くない管理職

これも正しいと思う。これまた、ジョエルソフトウェアから。

私のいた当時のMicrosoftでは、強力なプログラムマネージャのいるグループは非常に成功した製品を作り出した: Excel、Windows 95、Accessが頭に浮かぶ。(中略)

ここに避けるべきことが3つある:

(中略)

3. コーダをプログラムマネージャの監督下に置かない。

これはちょっとした間違いだ。Microsoftのプログラムマネージャとして、私はExcelのVisual Basic (VBA)ストラテジーをデザインし、VBAをExcelにどのように実装すべきか、微細な詳細にいたるまで完全に仕様化した。(中略)奇妙なのは、私が職階の「最下層」にいたということだ。(中略)もし主席開発者のベン・ワルドマンが私が仕様書に書いたようなことを何もやりたくないと思っていたなら、彼は単にやらなかっただろう。テスタが私の仕様書に書いたことは完全にはテストできないと文句をつけてきたら、私はそれを単純化する必要があった。もしこれらの人々の誰かが私の部下であったなら、製品はそんなに良いものとはならなかっただろう。

やさしい機能仕様


これらのことはみなベストプラクティスの部類だと思うのだけれど、実施するのがとてもダルい(とりわけプログラマにとっては)。実施するための方策を3つくらい挙げるとするとこんな感じか。

  • 社内政治を身につけ、発言力を増し、社内体制を改革する
  • (みんなの好きな)はてなか、(みんなの嫌いな)マイクロソフトに入社する
  • 起業または独立して社長になる

まあでもそれが、はてなが勝てる理由であり、ベンチャーが大企業に勝てる(かもしれない)理由なのだろうね。

anrakusaianrakusai 2005/08/06 10:02 名エントリー。

ajiyoshiajiyoshi 2005/08/06 11:17 (*´∀`)エヘヘ

yurizmyurizm 2005/08/07 02:33 最初はいいけど二人ともだるくなってきませんか?ペアプロやってると、、、駄目すぎ?

ajiyoshiajiyoshi 2005/08/07 13:02 yurizmさん、はじめまして。
駄目じゃないと思いますよ。実際このペースでコード書くと疲れるのは当然だと思います。そのために週40時間労働とか、おかしを食べながらコーディングとか言われるんですかね。(このへんは未実施なのでよくわかりません)
僕は退職間際のほんの2週間程度やってただけなので、ダルくなるほどには至りませんでした。僕や相棒にミーティングが入って中断、てのもしょちゅうだったし。
あと僕はもう根本的にコード書くのが好きなのでガリガリ書けることが超楽しかったし、相棒は当時2年目の駆け出しだったので、「あれをもう2週間やってくれれば!」なんていまだに言ってる感じです

RwTKRwTK 2005/08/07 23:35 すばらしいエントリ。
全てにわたって同意。

ajiyoshiajiyoshi 2005/08/08 00:21 RwTKさん。はじめまして。
お褒めいただきありがとうございます。(*´∀`)エヘヘ

evereseveres 2005/08/08 09:52 『私の1日の1〜9』の部分をペアで揃って脱線したまま過ごし、10に繋がるペアプロなんてどうでしょう。。。

lifreelifree 2005/08/08 11:38 『私の1日の1〜9』の部分をペアで揃って脱線したまま過ごし仕事明日にして帰るペアプロってどうでしょう。。

ajiyoshiajiyoshi 2005/08/08 21:57 everesさん、lifreeさんはじめまして。
ペアプロも万能ではないと思いますので、そういうこともあるかもしれないです。が、パートナーがラリーウォールの言う意味での傲慢であれば、そういう風にはならないのではないかと思います。
http://kanaya.naist.jp/Zope/member/nishio/coreblog/55

じゃんぬねっとじゃんぬねっと 2005/08/10 19:04 > 僕の知る限り優秀なプログラマは大抵就業時間の30%くらいしか労働しない。

私の場合は、コミュニティ活動 90% くらいですか? (w

ajiyoshiajiyoshi 2005/08/12 01:12 じゃんぬねっとさん、はじめまして。
90%てのはすごいですね…
それはさすがに特殊な環境のような気もします。

t.masudat.masuda 2005/08/12 17:09 ペアプロ=ツーマンセルという形で考えると、保守作業もペアのほうが安全なんですよね。プログラムの改修作業をしたときに意識的にペアプロを使いましたが、説明しながら書くという比較的ゆるいスピードが、バグを作りこまなくて安全でした。

ajiyoshiajiyoshi 2005/08/18 22:54 t.matudaさん、はじめまして。
ペアプロ=ツーマンセルですか。確かにそうかもしれません。
安全という話で言えば、バックドアを仕込むのが困難になるとかそういうメリットもあるかもしれませんね。

tomtom 2005/12/23 06:31 Merry Christmas! And a happy New Year!! www.team69.cz(Parkett)