ペアプログラミング

最近、ペアプログラミングをやっている。
ペアプログラミングというものの存在を聞いたときには、
そんなのうまくいくか?と懐疑的だったが、やってみるとこれがなかなか効率がいい。
ペアプログラミングがペイするには、個人でプログラムする2倍の効率を出す必要があるが、2〜3倍の効率がでている、という感触を持っている。
自分でやってみたことによって、どうしてこれが機能するのか分かってきたと思うので、まとめてみる。
ペアプロによる教育効果や、レビュー効果によるコードの質の向上についてはよく聞いていたし、実際にやったことがなくても、そういうものなんだろうな、と思っていた。
だけど自分でやってみると、コードの質以前に、単純にコーディングのスピードまでも上げることができるのだということに気づいた。
どうしてそんなことが可能なのかというと、こういうことだと思う。

メモリが倍

プログラミングを効率よくやるには、短期記憶がとても重要だと思う。
変数の名前、データの値など、作業記憶に置いておくべき情報がいくらでもある。
思い出せなければ、コードをサーチして調べたり、さっき閉じたファイルをもう一度エディタで開いたりと、憶えて去れいればしなくてすんだ作業をするはめになる。
まるで、メモリからあふれた情報をディスクに取りに行くように。
コンピュータの体感速度はCPUクロック数よりもむしろメモリ量に依存するものだが、それと同じことがプログラムする人間の脳にもいえる。
ペアプロだったら一人が思い出せないことでももう一人が憶えている確率が結構あってメモリを増設したマシンのようにサクサクとコードがたたき出せる。

思いつく確率が倍

プログラムしていて、何かの問題に気づくと、それを解決しようと、クイズを解こうとするように考える時間が必要になる。
この手のクイズ的状況では、いいアイデアを思いつくまでぼんやりと考えて脳内にインプットされた情報が化学変化してアウトプットが出るのを待つことになるわけだが、いいアイデアというものはサイコロを何度も振って6が出るのを待つときのように、確率的にやってくる。二人で考えていれば、確率的に2倍のスピードで使えるアイデアがでてくる計算になるし、そんな実感もある。

マルチスレッド

慣れてくると、コードを書いていない方の人はコードを書いてる人が作業している間に、次に考えるべき問題を考え始めておいて、コードを書く人が次の行を書けるようになった瞬間に次の行の書き方を指示したりできる。まるでCPUを二つ積んでるマシンのように並列処理が可能になる。

自慢パワー

やはり他人と一緒に作業していれば、プログラマーというものは、効率よく
プログラムを組む様を見てもらいたいものだ。社会的動物である人間にとって、他者に
認められたいという欲求は本能と言っていい。
自慢パワーによるモチベーションアップはなかなかどうしてあなどれない。


このようにすばらしいペアプログラミングだが、うまくいくメカニズムがわかると、こういうときにはうまくいかないんじゃないかというケースもなんだか予想がつく。
(これはあくまで実体験にもとづかない予想なんで外してたらごめんなさいだ。)

性格的に気が合わないペア

これは何も言う必要ないだろう。ペアプロ導入したら、チームの空気が険悪になったという
ケースの噂をきいたことあるし。

コーディングの流儀にこだわりの強い人

自分の流儀じゃないと許せない、という人は、一人でやったほうが自分のためにも周りのためにも
いいだろう。

低レイヤーの言語

今はRubyペアプロしてるんだけど、Cとかアセンブラといったレイヤーの低い言語だと、
思考より手を動かす作業の割合が高くて、タイプする側は全力で動けても、もう一人の
脳力を十分活かせないんじゃないかと思う。

ペアの技量が違いすぎる

教育のためと割り切ってるならいいけれど、やはり双方が一人でやるよりメリットがあると思えるようでないと、いい関係にならないと思う。


いままで食わず嫌いでしたが、何でも自分で体験してみることは大切ですね。