ペアプロにメタファ適用
今回、一部の人にはイメージつかみにくいかもしれん。できるだけわかるようには書きますが、それでもわからなかったら勘弁。いきなり逃げ腰かよ>俺。
「XPのプラクティスの中で、最も抵抗の強いものは?」
という質問を投げた場合、「ペアプログラミングだけは勘弁」と即答する方は相当数いるであろうと予測しております。
というのも、ペアプロって他のプラクティスと抵抗のベクトルが逆向きにかかってくるんですよ。
例えばオープンスペース(オンサイト顧客)とか最適ペース(週40時間)といったものってのは「開発者は望んでいる、でも顧客や会社には抵抗される」という類のものだと思うんです。いわゆる外部抵抗要因。
ところが、このペアプロだけに関しては、「開発者側から非難の声があがる」ということがあるんです。完全な内部抵抗要因なんですな。まぁペアプロ自体にも外部要因はありますが(例:人なんか増やせない)ここでは話を別にします。今回はこの「開発者の抵抗」に話を絞らせてくらはい。
で、これまでの見聞きした印象として、
「『できる』プログラマ程ペアプロを嫌う」
という法則が成り立ってるような気がしてしょうがないんです。会社やプロジェクトであれば、その中でエースと呼ばれてるような人とかがペアプロの話を振ると露骨に嫌な顔したりするようなこともあると。
で、実はこの「拒否する」心境ってのもわかるだけに私ちょいと複雑な思いしております。
というのも、今までにあった「できる」プログラマさんの生態とか見てますと、こんな共通性を見出すことができるんです。
- 集中して仕事するタイプ。周りが喋ってても意に介さない。
- 電話や会議等の割り込みを極端に嫌う。
- 個室で作業したがる。
- 妥協はできる限りしない。完璧主義一歩手前。
- 残業休出がある一方で帰るときには帰る。傍から見てて一貫性が無い。
ざっとこんな感じでしょうか?まだまだあるとは思いますけど。要は「ピープルウェア」でも記述されていた「プログラムは夜できる」の世界そのまんまです。仕事を進めるために中にこもって集中すると。こうゆう環境に入り込めるからこそ、これまでに得た知識や経験などもフル活用して「早い、正しい」製品を作りこむことができる、と。
ですのでこうゆう思考でうまくできていると思ってる(そして実際にうまくいっている)人にいきなりペアプロ云々言っても、そりゃあ聞く耳持たないだろうなぁ、というのも心情的に理解できるんですな、正直な話。
それじゃあそうゆう人たちを「味方につける」にはどうすればいいんだろうか・・・ということを考えていた訳なんですが。
今回、無謀を覚悟でペアプロにメタファを埋め込んでみようと思ってます。題して
「ペアプロ=M:TG」メタファ。
M:TGという単語にピンと来た方、おめでとうございます。何が。わからない人には簡単に説明を。M:TGの正式名称は「MAGIC:The Gathering」。リチャード・ガーフィールドによって考案されたトレーディングカードゲームの代表作です。何千種類とあるカードから自分なりのデッキ(手札)を作り、相手とのデュエル(決闘/試合)で勝敗を決めるというゲームです。
実際は、M:TGを出すよりも、遊戯王カードやポケモンカードを出した方が皆さんにもイメージしやすいと思うんですが。お子さんが遊んでるから、というパターンも多いかと思いますしね。まぁ実際これらのカードもM:TGの影響を受けていることは確実ですのでここではM:TGということで話を進めさせてくださいな。単純にわがままという説もありますが。
じゃあなんで今更のようにこれを持ち出してきたのか。これの持つ概念が、ペアプロに対して思われている曲解を和らげるのにちょうどいいかな、と思ったものですから。まぁちょっと話させて下さい。
基本的に、ペアプロ嫌う人が抱くペアプロのイメージってこんな感じだと思うんです。
自分(赤い前)の目の前にはパソコン(緑)があり、対象物(これから作るソフト)がある。それに集中していればいいものを、後ろからしゃしゃり出てきた輩(青)が邪魔をする。それどころかキーボード取り上げようとまでしやがると。我慢できるかそんなもんふざけんな抗議だストだ退職だぁ!
ちょっと待て。確かに実際にパソコンとキーボード前にしたらそう見えるかもしれないけどそれは確実に誤解ですよ、と。じゃあ実際のペアプロはどうゆうイメージになるのか。M:TG使って説明してみましょうか。
M:TGの場合、デュエルをするためにはカードを置くためのテーブルを間にして、二人が向かい合う形で座ることになります。パソコンを前にしちゃうと、余程の広さが無い限り、重なり合って座ることになっちゃいますけど、本来のペアプロのイメージってのはどちらかというとこちらに近いんですな。ちょっと置き換えましょう。
中央にこれから作るソースがあると。それを対面で両者が見る。そしてそれぞれの開発者にはペアが見える。お互いはその反応を伺いながらソースに手を加えていく・・・こうゆうイメージなんですよ、と。
じゃあちょっとペアプロ(デュエル)やってみましょうか。じゃあまず貴方がドライバーね。私ナビゲーターするから・・・・あーちょっと待って。いきなりそこから書き始めるの?もっと違う方法も・・・え?うるせぇ?要はゲームなんだろ?俺の番が終るまで黙ってろ?
はーいひっかかりましたーダウトー。ペアプロふたつめの誤解ー。何のために、わざわざメジャーな将棋でも囲碁でもなく、こんな(世間一般から言えば)マイナーそのもののM:TG引っ張り出してきたんだっつーの。今から説明するから聞いとけ。何を偉そうにしてるか>俺。
よくペアプロをゲームのように例える話は目にしますが、だからといって通常の二人用ゲームを引き合いに出してしまうとちょっとよろしくない部分がありましてな。囲碁にせよ将棋にせよ、「先手」「後手」という概念がありますよね?これをそのままペアプロにあてはめてしまうと、いろんな意味で不都合が出てくるんですな。
はい、この図見てみて。ピンクの部分が自分が考えたり実際に行動する(ゲームなら指す、ペアプロならキーボードを叩く)時間ね。
これだと、一方が動いてる間、他方は指くわえて待ってるしか無い訳で。無論考えることはできますが口を出すなんざとんでもないと。でもゲームならともかくペアプロで口挟まないなんて仏作って魂入れずが如し。
ちなみに、これと同じ理由でメタファの候補から外したのがTVゲーム(対戦とか)ね。これだとこんなんなっちゃう。
お互い動きっぱなし。これじゃあ協調の意味が無いわな。
で、M:TGだとどうなりますか。こうなる、はずです。
どうでしょ?比較的バランスよく、それでも頻繁にお互いが入れ替わって介入しているのが把握できますでしょうか?
M:TGにも先手/後手の概念はありまして、ゲームの進行は自番のプレイヤーがイニシアチブを取る(ちょうどドライバーとナビゲータの関係と一致する)のですが、多番のプレイヤーは、自番プレイヤーがプレイするカードに対して、レスポンスを起こすことができるんですな(ナビゲータが口出しすることに等しい)。つまり、自分の番じゃないからと言って口開けて待ってたらヤラれる一方。ペアプロで言うならば、双方の介入無くして堅牢なソースは産まれないに同じ!
主従関係が一定関係で入れ替わり、それでも双方が共に介入することでゲーム、またはソース書きを進めると。OK!?
・・・まだ不満そうね。はいはいこの際言っちゃいな!腹の中にあるモン吐き出してしまえ!誰に言ってるか>俺。
・・・え?ゲームの場合公平なルールの中で実力差が均衡してるからこそ面白いのであって?経験も知識も明らかに差がある場合は、特にプログラミングでは機能しないんじゃないかって?
・・・いい所突いてくるね。さすが歴戦の勇者>誰がだ。
でもね。ここでもM:TGのメタファが使えるんだな。残念ながら。別名ペアプロの誤解その3。
というのも、こっからはM:TGで遊んでる人には若干気に入らない表現になるので申し訳ないんですが。M:TGってそもそも完全に公正じゃないんです。無論世界戦クラスになれば、厳密なルールの公正化とかは行われますが、少なくとも個人や身内で遊ぶレベルであれば。
「金使ったモン勝ち=カード持ってるモン勝ち」
の世界なんですよ。残念ながら。一時代遊戯王のレアカードにウン万円のプレミアが、なんて話とか聞いたことありますよね?あれと同じ世界がここにはあるんですな。
基本的に強いカードは手に入りにくい(カードの中身は買って封を切るまではわからない、シングル買いするにも強いカードは高い)販売形態を取っているため、強いカード揃えようとしたらやっぱそれなりの高い代償を払わなければならないと。
でさ。プログラミング技術の場合、ベクトルが金ひとつだけではないにせよ、似たような側面ってありませんかえ?
眠い目こすりながら専門書読んだり、トラブルに巻き込まれながら定石を学んでいったり、ラクをするために様々なテクニックを身につけたり・・・そんな積み重ねが今の実力となり、実績となってる訳で。ある意味金よりもシビアな世界。どう?ここに同意しないプログラマはいないと断言してもいいと思うけどな。
ですからハナから実力差なんてあって当たり前、という言い方もできるんですよ。そんな中で以下に双方の「持ち味」をソースの中に叩き込むことができるか・・・ここにペアプロの醍醐味というのがあるんじゃないですかね?
そして、M:TGの持つ醍醐味とも似てることも。書きながら自分でびっくりしてる位ですもん。自画自賛してどーすんだよ>俺。
まぁそれはそうと。さてどうでしょう?ここまで聞いて、それでもペアプロを拒絶し続けたいです?それとも「どんなんだろ?」みたいな興味って出てきてます?
現実的な話しておきますと、私自身は、ペアプロに「転ぶ」ということが、これまで自分が築いてきた実績やプライドとかを打ち崩すものにはならないんじゃないか、と思っておりまする。もちろんプログラミングという根本は同じなんですが、全く違ったテクニックが必要とする一方で、これまでとは違ったゴール、違った充実感が味わえる・・・そんな気もしてるんですよね。むしろ、今まで自分が培ってきた、言葉にはなかなか乗せづらい「感覚」を相手に伝えるには、これ以上の方法はそうそう無いかもしれませんよ?
まぁ私が言えるのはここまででございまする。後は実際にやってみたいかどうか、己の胸に聞いてみてくださいな。後は素直に直感に従うというのもアリだと思いますので。
ちなみに逆にM:TGに興味持ってしまった、というある意味酔狂な方は(笑)、公式ホームページよりいろいろと資料ありますので漁ってみてくださいませ。
・・・・・・あ、そうだ。最後にいっこ。これはメタファですよ、ということを明確にしておくため、M:TGとペアプロの決定的な違いを明記しておきます。
M:TGはゲームです。したがって必然的に勝者と敗者が存在します。
しかし一方ペアプロに勝者・敗者の概念はありません。
それでも敢えて言うならば。
双方が満足できるソースが書ければ、両者勝者です。
逆に満足できなければ、実力差に関係なく両者敗者です。
Win-to-Winの原則はここにも存在します。
脳ミソに叩き込んどけ。以上。