ちょっと前に話題になった記事、はてなのCEO近藤淳也さんの「近藤淳也の新ネットコミュニティ論」のエントリーで開発者が楽しく仕事できる環境とはの中にペアプログラミングの話題があった。ペアプログラミングというのは、
2人でプログラムを開発するというのは、1人がプログラムを書き、もう一人が横からそれを見ている、という方法です。
とのことである。
兄貴の会社でも部分的に導入されているらしい、このペアプログラミングという技法は、少しでも開発経験のあるものなら直感的にその有効性を理解できる。このことについてはMy Life Between Silicon Valley and Japanのペアプログラミングの効用でも書かれているとおり、自分の作業時間の内、70%を実際作業している時間にあてることができたらと想像してみるだけでよい。
Googleの開発体制は一つのプロジェクトを複数個のタスクに分割し、そのタスクに2,3人のプログラマが配備され、実装を行っているという。おそらく、ここでもペアプログラミングやXPの手法が取り入れられていると思うのだが、テクノロジーカンパニーを運営するためには、開発スピードと何を今後提供できるかということがきわめて重要で、技術の伝達がスムーズに進み、その案件のプロフェッショナルを2人以上作ることができるというリスクマネージメントという意味でもペアプログラミングは優れている気がする。
さてさて、僕は技術開発というものは大きく分けて二つの役割が存在すると思う。
・顧客満足度を高める開発(サポート、機能拡張、バグ取り、テスト)
・新しい価値を作る開発(新機能の追加、新しいサービスの企画、プロトタイプの実装)
この二つが存在しないとなかなかプロジェクトはうまく行かない。しかし、見ていると感じることだが、明らかにエンジニアには、片方が得意な人、好きな人というのが存在する。もちろん、そんなのはよくないことで一人で両方の仕事を完璧にこなせたら特に問題はないわけだが、たぶんそんなことはにはならない。そんな時に、ペアプログラミングでこのどちらかが得意な人同士、もしくは両方得意な人と片方だけ得意な人を組ませるということが重要なのではないかと思う。しかもはっきりと今後のサポート体制はどちらかがやるとあらかじめ決めた方がいい。
特になんということではないのだが、そんなことを思った。