アジャイル開発研修・読後レポート(ペアプログラミング・全員同席・ふりかえり)


アジャイル開発研修がスタートして、早半月。同期とのペアプログラミング、毎日のコードレビュー、毎週のイテレーションデモ、pivotal trackerによるチケット駆動開発、githubによるコードの共同所有、youroomによるコミュニケーションなど、さまざまなことを経験しました。これらの経験を踏まえて、『アート・オブ・アジャイル デベロップメント(著 James Shore, Shane Warden)』を読んだ上での学びや今後の抱負について、
 1.ペアプログラミング
 2.全員同席
 3.ふりかえり
の3点からまとめさせて頂きます。


1. ペアプログラミング



(5.1 ペアプログラミング 5.1.2 ペアの作り方 より)
ペアは流動的かつ自然にできて、1日を通して変わっていくものだ。やがて、チームの全員とペアを組むことになる。これはチームの結束を強くし、チーム全体へ設計スキルや知識を広げることができる。



これまで半月間、同期と2人でペアプログラミングをしてきて、さまざまなことを感じました。まず、ペアプログラミングをしてよかったと思う点は、よい意味で緊張感があり、集中力を維持できたこと、また、一人で悩んでいるより早く正解にたどり着けたことです。逆に反省点としては、2人同時にどのようなコードを書けばよいかわからなくなった際に、第三者からの新たな視点をもう少し求めればよかったということです。時折、社員の方々が声をかけてくださった際に、わからない点を質問して、問題が解決したことがよくありました。
このような問題解決ケースを、上記のような流動的なペア作成によって頻繁に作っていくことで、チーム全体としてのスピーディーな開発を実現できるのではないかと感じました。ただ今回の私のケースでは、2ヶ月同じパートナーとのペアプログラミングをする予定なので、どうすれば生産性を高めていけるか今後も考えていきたいと思います。


2.全員同席



(6.2 全員同席 6.2.10 効能 より)
チームが全員同席すると、コミュニケーションがずっと効果的になる。答えを推測するのをやめて、もっと質問するようになる。他の人の会話が耳に入ってきて、予想もしなかったような答えを提供するという貢献ができる。チームメンバーは問題を解決するために、自然と職能横断的グループを作ることができる。



今回の研修では、コミュニケーションツールとしてyouroomを使っています。このツールにより、チームメンバー全員があたかも同じ部屋にいるかのように仕事を進めることができています。プロダクトマネージャーへのタスクのプライオリティに関する質問や、日々の仕事の進捗状況やレビューの共有などさまざまなことをyouroom上で行っています。これまでは、日々の仕事の報告や簡単な質問・相談などをメインにしてきましたが、今後は、よりリアルな全員同席に近づけるよう、問題の掘り下げや議論の場としても使っていければと考えています。


3.ふりかえり



(5.5ふりかえり 5.5.7ふりかえりの後 より)
ふりかえりには2つの目的がある。アイデアの共有は、チームがもっと親密になる機会を与える。特定の解決策を考え出すことは、チームに改善する機会を与える。



先週のイテレーションのふりかえりでは、KPT(Keep/Problem/Try)というフォーマットを使ってチームメンバー全員でふりかえりを行いました。自分の意見に賛同してもらったり、他のメンバーからの率直な意見を聞いたりすることで、より親密になるのはもちろん、自分では気付かなかった良い点や問題点を知ることもできました。さらに、現在のペアプログラミングのやり方に関する疑問点を相談したところ、具体的な解決策を全員で考え出すことができ、今後に活きるとても有意義なふりかえりの時間にすることができました。



(5.5ふりかえり 5.5.7ふりかえりの後 より)
誰にふりかえり目標をやり通す責任があるのかを確認しよう。その目標を推し進め、うまくやるのがその人の仕事ではない。それはチーム全体の仕事だ。その人の仕事は、折を見てみんなにふりかえり目標を思い出させることだ。
計画遂行を促すために、ふりかえり目標をイテレーションに組み込もう。



先週のイテレーションのふりかえりの際、開発の生産性をより高めるためのペアプログラミングのやり方として、ドライバーが何か調べものをしている時、ナビゲーターは一緒になって同じ調べものをするのではなく、次に自身がドライバーとして行うタスクについて事前に考えておくという方法を考えました。この方法を今週のイテレーションで試みる予定だったのですが、いざやってみると目の前のタスクに追われてしまい、ドライバーとナビゲーターの役割分担があまり出来ていないように感じます。今後、このような解決策の不実行が起きないように、解決策に関する意識のすり合わせを定期的にしたり、解決策をさらに細分化してイテレーションに組み込んだりしてみようと思います。