確かにあれはそうだった
えーと。あれは確か3年位前のことでしたか。
リリース後のプログラムにバグが出まして。至急直して再リリースしなきゃならんという事態に陥りまして。まぁこれ自体はよくあること。モロに担当個所だったものですから即作業に入ったのですが。
ところが直せど直せど、一向にバグが直らない。時間ばかりが経ち、焦りも伴ってか、やればやるほど不可解なバグが増殖していきます。客先からは「修正まだぁ?」の催促の電話。うるせーよそんなに急ぐんならテメーで直せボケ、と悪態つきながら続けるんですが、それでもやっぱり空回りするばかり。
やばい。やばいぞー。タイムリミットがどんどん近づいていくー。うぎゃーどうしよー。うわーん策思いつかねー助けてー。うわーん。
その時でした。
「どう?直った?」
後ろから声をかけてきたのは当時のプロマネのKさんでした。うえーんご覧の通りでございますー。直してるはずなんだけどもう何がなんだかさっぱり。
「そっか。それじゃやってみよう。後ろから指示するから。その通りやってみて。」
えー後ろから見られるのか・・・なんて気にしている余裕すらありません。そのまま張り付きをお願いして再チャレンジしてみることになりました。
まずは一旦今までの修正分をリセット。すべて昨日時点のソースに戻します。ここら辺の作業はVSS使ってましたからラクショウ。
「じゃあ今回確実に手を入れる必要がある、というところを挙げていって。」
んっと。今回はデータ生成とそれ使って条件判定してるところ、あとはその結果を返すところ・・・全部で5箇所程度、のはずなんですが。
(何分記憶だけを頼りに書いてますから、記述があいまいになるのはご了承くださひ)
「5箇所ね。じゃあ1つづつやってみて。時々質問するから答えて。」
あ・・・はいはい。
一瞬「なんで今と同じ作業を?それでダメだったから助け求めたのでは?」てなことも脳裏には浮かびましたが、今はそんなことを言ってる余裕はありません。ひたすら作業を進めるのみ。
先程挙げた修正個所をいっこいっこ、順番に潰していきます。基本的にはさっきまでの試行錯誤でやってみた修正を後追いしているだけですから、ひとつの修正にそれほどの時間はかかりません。
後ろからは時折「その条件判定の意味は?」「そこのデータ受け渡しは大丈夫?」といった質問、というよりは確認事項が短く飛んできます。特に難しい質問ではなかったのでこちらも即答。「そうか」で向こうも話を止め、また修正作業へ・・・これを繰り返していきます。
そうこうしてるうちに4つめ位の修正をやってる時だったかな?また短く質問が飛んできました。
「それでいい?」
・・・え?それって今書いたこの文のことです?別に取り立てておかしいという訳でも・・・あれ?
不意に目の前のキーボードが取り上げられました。Kさんによって数行が新たに打ちこみます。そしてキーボードはまた私の手の内に。
「これじゃダメ?」
・・・えっと・・・・あー!そうだそうだ!判定の前にこれ呼んでおかなきゃいけなかったんだ。ありがとうございますぅ。でもよく気が付きましたね?
「いや、前にやってた修正も同じパターンだったでしょ?その時にはあったのがここでは無かったんで気になっただけのこと。」
そっかぁケアレスミスですねぇ。抜けちゃうもんだなぁ・・・。
そんな感じで残りの修正も完了。コンパイルして・・・動かしてみる・・・。
よっしゃーOK!直ったー!
「お疲れ様。じゃあ後はテスト通して確認してから、(客先に)上げておいてください。」
はーいどうもありがとうございましたー。お時間取らせました申し訳ないっすどもどもー。
ふぅよかったよかった。一時はどうなるかと思ったけどなんとかなりましたよ。えっと・・・うわー。声かけられてからわずか30分だよ。つーことはこれまでのウン時間は何だったんだー。
あー疲れた。早く上げて、とっとと帰って寝よ。
なーんてことが以前ありまして。随分と長い回想録だったなおい。
これが、今で言うところの「ペアプログラミング」にかなり近い形態となっていることに関しては今更言うまでもないでしょう。
まぁ当時はペアプロなんて単語自体知る由も無かったですし。このやり方自体Kさんが意識してやっていたかどうかもわかりません。今となっては確かめようもないですし。
ただこのやり方は、自分が「教える側」に回った時には何度か使わせて頂きましたです。イス持ってきて、教える人の斜め後ろに座る。コーディングさせながら、いくつか質問しつつ確認させる。
そうすると不思議なもんで。こちらがキーボード取り上げるまでもなく、打ってる側が自然と「あ、わかったぁ」となって問題点解決するときもありましたもんね。あ、他人の視線があるだけで、頭の中で論点クリアになることもあるんだなぁ、と妙に感心したりもしていました。
そして記憶は現在に戻ってくるんですが。
私のほうはというと、退職しぃの社会復帰しぃので環境は変わっても、相変わらず一人で細々とコーディングしております。相変わらず回りにXPerもいませんし。したがって現在でも「XPプラクティスとしてのペアプログラミング」という意味では経験はゼロのまま。
しかし、それでもペアプロの有効性を信じる方向に傾いています。特に転職後一人でコーディングするようになってからは更に傾きが顕著になってますし。やはり先の経験が尾を引いているんだと思いますよ。いい意味でも悪い意味でも(笑)。
以前、レビューに対する嫌悪感の話をさせてもらいましたが、ペアプロによって引き起こされる「コーディング→即レビュー」の形式ってのはやはり品質面で格段に大きいと思うんです。心理的抵抗感が少ない(ゼロではないけども、会議室でつるし上げされることを考えれば段違いに少ない)というのもプラスに働くだろうし。
これはスピードにしたってそうですわね。基本的にペアプロをやった場合、一人でやってたときよりもプロジェクト全体でのスピードは落ちると言われています。今まで一人でやってたものを二人がかりでやる訳ですから、そりゃ傍から見る限りではそーなるわな。
でもね、今一番恐れられてることってのは、一日かかる仕事が二日かかることなんかよりも、バグや要求変更でやってた仕事が戻ることなんじゃないです?そこから目を逸らしたまま「ペアプロは遅い」言われても、何の説得力も無いけどね?じゃあペアプロしないにしてもそこで失われる品質はどこで保証する訳?今までどおり誰かを生贄にして弾劾裁判でもやっていくんですかえ?レビューを逃れるため「だけ」に行われる修正がいかに非生産的で人のヤル気無くさせるムダ仕事か、考えたことあるんかえ?どーなんよそこんところ。
・・・なーんて文句が最近になってぽんぽんと出てくるようになったのはやはり一人でコーディングしてるからなんでしょーか?実際不安だもんなぁ、書いても書いても「これが正しい」つー確証が得られない環境ですから。聞く相手すらいねーよ。あーなんか空しい。
まぁ自分のことはともかくとしても(つーか思いっきり私情やんけ>俺)。「無理」「無駄」の一言だけであっさりとペアプロを始めとしてXP各プラクティスが却下されていくのが、なんか寂しいし悔しい、つーのがあるんですな。実際にやってみてそれで合わないんだったら、それはそれで人の好みですからしょーがないですけど、やる前から決め付けんなっつーの。おめーらみたくいつまでも休出徹夜当たり前の体力勝負になんか付き合ってらんねぇんだよ!つーかこっちは一回リタイヤしたことによって、既に「役立たず」って書かれた棺桶に叩き込まれてんだ!同じ戦い方して勝てる訳がねーんだよ考えろよ能無しの筋肉馬鹿が!
結局最後は私情かよ>俺。
ということもあって、前回今回と敢えて全面的にペアプロ擁護論展開させて頂いた訳なんですが。お楽しみ頂けましたでせうか。稲川淳二か俺は。つーかそれ知らんヤツ多いだろ俺。
まぁもうこればっかりは一日二日ばかりではどうにもならないんでしょうな。それこそ宗教じゃないけど、細く長く言い続けるしかないのかもしれませぬ。まぁ地道にいきますかね。早くみんなで幸せになろうぜ〜い。
フランシスコ=ザビエルさんの苦労がしのばれます。そこまで飛ぶか俺。