2日でできるっていうのは

みんなのおしりをあわせるのって、難しい

エンジニアでも、デザイナーでも、プランナーでもなんでもいいんですが「2日くらいでできる」って言ったときのできるって、一般的にどんなもんでしょう。

たぶん、完了の定義をがちっと固めているスクラムチームでも、その中の一人にねえねえと声をかけて個別に感覚を訊いたら、おそらく

  • コードレビューとか、自分以外による一貫性チェックや品質のレビュー
  • 自分以外による動作確認
  • 自分以外による要件との照らしあわせ

は「できる」「終わっている」の感覚に含まれていないことが多いんじゃないかと、経験から想像します。だんだん後ろに行くにつれて、声には出さずとも内心「それは自分の仕事ではない」と感じる方も多いと思います。「チームがやる作業だ」という感覚ってありますよね。でもチームって、それは一体誰だろうっていう。

さらに、社内にそのプロダクトしかないという状況でもなければ、作業期間の前後末日は他のプロダクトのコードレビューを見ていたり、他のチームが見てくれている自分のコードレビューの返事を待っていたりして、他の作業も並行してやっていたりすると思います。

そうするとやっぱり、あるタイミングにメンバー全員の完了を合わせるのって、それがスプリントというものかもしれないですけど、すごく難しくないですか?

だから、フィーチャーリードという立場が要求されたりするのかなと思いますし、自分も以前人数の多いチームのスクラムマスターをしていたときは、フィーチャーリードにならった役割を誰かしらにお願いしていました。

Sync Collocated (同期的に、集まって)

自分の今いるチームでは人数も少ないし、人間と人間の間で発生するずれをいつまでも放置している時間的な余裕もありません。

ということで常時ペアプロ、確認してマージして終わるから基本的に退勤時刻は同じ。みたいなことをやってみてわかったのは、当たり前なんですけど、ペアプロみたいな同期的なチームワークスタイルで「2日くらいじゃないですかね」って言ったら、特になにもしなくても、それは2日めには「自分以外による動作確認」までは終わっているということでした。

ある作業の完了に、必須のプロセスとして他者が介在するなら、その他者を自分の中に引き込んでしまえばいいというのは、もともとアジャイルの根っこのような考え方です。クライアントをメンバーにしてしまえ、というやつです。

であれば、レビュワーや、ドメインスペシャリストをひっぱりだして一緒に仕事をしてしまえ、というのは、難しいですがなかなか理にかなった流れにも思えてきます。

というわけで最近は、ペアでプログラミングするとかっていうより、「複数人で同期的に作業する」という言い方に興味があります。 “Async Remote” ならぬ “Sync Collocated” です。

今は二人ですけど、三人以上って教科書的にあまりうまく行く感じじゃないんですよね。でも、それも楽しそうです。二人と二人の2ユニットも面白そう。

「それは確かに効率的だろうが、実現が難しすぎる」というやり方と、「非効率的だが、実現はたやすい」というやり方の両方があったとして、僕らがやってるのは外科医療でもなく大規模土木でもなくウェブITなのだから、前者を採ってみて少人数でやるほうが面白いんじゃないか? というのが最近の自分のノリです。

なんて、エキセントリックに見えることもあると思いますけど、場面に応じて検討してみたら面白いことが多いなあと、最近つくづく思いました。

Show your support

Clapping shows how much you appreciated Naohiro Oogatta’s story.