Developer's Blog

ペアプログラミングしよう

みなさんお元気ですか。今回は、Cocoa Touch や Objective-C からちょっと離れて、筆者がいる開発チームでやっているペアプログラミングの効果について紹介します。

1つの画面とキーボードで、2人がいっしょに開発作業を進めるペアプログラミングは、XP(エクストリーム・プログラミング)で提唱されているプラクティスの中でも有名で、程度の差こそあれ、比較的多くのプログラマが経験していると思います。

半年ほど前、筆者のいる開発チームでも、順番にドライバー(書く人)とナビゲーター(見てる人)を決めて、1日のうち最低1時間はペアで作業するということを始めてみました。それまでも、特に意識せずにペアでプログラミングすることはありましたが、チームの取り組みとして導入したのはその時が初めてでした。

しばらくプロジェクトが進んでいくと、スタッフがペアプログラミングの時間を楽しみにするようになりました。ペアで作業した方が、明らかに作業効率が上がることが実感できたのです。

実感できた効果

チームとしてペアプログラミングに取り組んだ結果、いろいろな効果があった中で、いくつか代表的なものを取り上げてみます。

1. 腰の重いタスクを前に進める

プログラマも人間です。いくら「やらなければならない」と分かっていても、なかなか手のつけられないタスクがあるものです。たいてい、解決の糸口が見つかっていなかったり、そもそもあまりタスク内容を理解できていなかったりと、事情はいろいろです。

こんな時、ペアを組んで、内容の説明などを通じて理解を深めつつ、お互いの知恵を持ち寄って解決方法やテスト方法などを詰めていければ、一歩ずつでも解決に近付けます。解決方法が見えてきたら、それに向かって一緒にプログラミングしていきます。

ペアで取り組む機会を増やしたおかげで、タスクがなかなか前に進まないままモヤモヤしてしまうケースが減りました。

2.「ハマっている」時間の短縮

プログラミングをしていると、どうして思いどおり動かないのかまったくわからなくなって、試行錯誤の繰り返しで時間が過ぎてしまうことがあります。このいわゆる「ハマっている」状態は、生産性の観点からも、プログラマの精神衛生上もよくありません。

筆者のチームでは、「ハマっている」状態から抜け出す近道としてペアプログラミングがうまく機能しています。パートナーに現状を説明するだけでも問題が整理されて自己解決してしまうこともありますし、パートナーの「ちょっとここを調べてみよう」という一言をきっかけに、あっと言う間に解決してしまうこともあります。「ハマる」原因の多くは、ほんのちょっとした見落しなんですよね。

3. お互いの学習

筆者のチームのプログラマは偶然にも(?)みんな Emacs ユーザーです。ペアプログラミングの途中で見慣れない動きをする Emacs を見て、「あれ?いまの何ていう機能?」という具合に Emacs のテクニックを学べることもよくあります。

もちろん Emacs テクニックだけではなく、自分の知らない API の使い方やプログラミング用語、コーディングテクニックを学べることもよくあります。ペアプログラミングは、素晴らしい学習の機会となっています。

他にも効果はいろいろ

これら以外にも、ペアプログラミング一般に言われるコードレビューや高い集中度などの効果もあります。作業内容にもよりますが、1人では2倍の時間かけても到達できないレベルで問題が解決されていると感じています。そして何より、タスクが解決していくうえに実践的な学習ができるペアプログラミングはプログラマにとって楽しいものです。いまや、ペアプログラミングはチーム内に定着した感があり、特に時間を決めなくとも自然にペアを組んで作業を進めることが多くなっています。

ちゃんと意識せずにやっていたペアプログラミングを、チームとして意識的に取り組むことで、多くの効果を実感できました。いま続いている Sleipnir Mobile の開発でもペアプログラミングを多用しています。ペアプログラミングに限らず、プラクティスに「意識的に取り組む」というのは大切ですね。

Copyright © 2019 Fenrir Inc. All rights reserved.