新人のアジャイル開発体験

(3)計画をチームで立てる
アジャイルでは、一定期間ごとに目標を定め、繰り返し開発を行い、これを継続していきます。繰り返しの1つを「イテレーション」と呼び、そのイテレーションで行う作業の計画(イテレーション計画)を最初に行います。筆者のチームは、イテレーションを1週間と定めていたので、1週間で実行できる計画を立てていました。
具体的には、課題管理システム(ITS: Issue Tracking System)をインプットとして、手書きの時間割表(図2)を作成していました。
時間割表の作成手順は、以下の通りです。
- 要望や不具合の報告など、やるべき作業の「チケット」を、ITSに登録する(これは随時行います)
- 「チケット」の棚卸しと、前のイテレーションで積み残った「チケット」の再見積もりをする
- 新しく登録した「チケット」の、おおよその見積もりを実施する
- 次のリリースまでに必要な「チケット」のうち、その週に取り込む「チケット」を、ビジネス・オーナー(今回はプロジェクト・マネージャ)を中心に、チームで選定する
- メンバー自身が、何時どの「チケット」に取り組むか、を決めて、時間割表に予定として書き込む
後は、この時間割表をもとに、作業をします。時間割表があれば、自分がその日にいつ誰と何をするのかが、常に明確な状態になります。さらに、ほかのメンバーが何をしているのかも、常に把握できます。ミーティングやレビューといった先輩社員の時間の確保や、後で紹介するペア・プログラミングにおけるペアの組み合わせも、同時に調整できます。
時間割表の作成作業において筆者が特に大切だと感じるのは、「計画をチームの皆で作る」という点です。皆で作ることによって、以下のような効果があるからです。
- その場で計画をチーム全員で共有できる
- 自分たちがやる仕事を自分たちで自立的に考える
プロジェクト・マネージャが計画を立てて、チームに展開する、というやり方は、一般的によくとられる手段だと思います。しかし、プロジェクト・マネージャにとっては、計画を立てる時間と、その計画をチームに対して説明/展開する時間という、2度の手間が必要になります。
また、こうしたやり方の場合、メンバーから見れば、ただ決められた仕事を割り振られる、という状態になります。しかし、これは良いことなのでしょうか。自分たちで考えた方がモチベーションも上がるのではないでしょうか。
しかも、作業内容がプロジェクト・マネージャによって決められてしまうと、メンバーはただ与えられた仕事だけをこなす人になり、自分たちは何も考えなくて良い、という状態になってしまうと思います。
アジャイルな開発を行うチームは、1人1人が自ら考えて仕事をすることを大切にします。しかし、「個人個人が自分の仕事だけをこなし、ほかのメンバーの仕事に関しては無関心」というチームであってはなりません。
こうした意味でも、チームで実行すべきことを考え、それをチームで共有し、メンバー間で連携して仕事をできるよう、計画をチームで作ることは、非常に大切な要素といえます。
図2: 1週間の時間割表(クリックで拡大) |
(4)日々の作業を共有する
イテレーション中は、計画時に立てた時間割表をもとに、作業を実施していました。
以下では、イテレーション中に、日々の作業の進ちょくと作業内容を、どうやって共有していたのかを紹介します。
「朝会」で、作業進ちょくを共有する
日々の作業を共有する仕組みとして、「朝会」があります。「朝会」では、毎朝、時間割表を見ながら、前日の作業を確認するとともに、進ちょくや問題点をチーム内で共有します。
配属された当初、筆者は、見積もりに対する作業実績のズレが、多くありました。このことを朝会で報告することで、直後に時間を別途設けてアドバイスをもらったり、場合によっては先輩社員に助けてもらったりしました。
このように、朝会を通して、問題を早期に発見できました。問題を1人で抱え込むことなく、チームとして対処することができました。
「社内SNS」で作業内容を共有する
作業内容は、自分たちが作っている社内SNS自体を利用して、共有していました。
SNSには、複数人のユーザーを集めて「グループ」を作成する機能があります。部門やプロジェクト、趣味の集まりなど、さまざまなグループがあります。グループの1つに「SNS構築プロジェクト用のグループ」もありました。
SNS構築プロジェクト用のグループを使って、作業内容を共有していました。具体的には、時間割表、環境構築の作業ログ、打ち合わせの議事録、テスト・ケース、リリース手順書など、プロジェクトに関する、ソース・コードを除いたほとんどの情報を、掲示して共有していました。
社内SNSには、個人でブログを投稿する機能もあります。筆者は、新人日報というかたちで、その日に行った作業を投稿し、技術的内容で誤った理解をしていた場合は指摘をもらったり、アドバイスをもらったりしました。
ここで筆者が大切だと感じた点は、「気軽に情報を発信できる」ということです。
筆者のチームは、お互いをよく知ろう、話し合おう、ということをモットーにしていました。つまり、「お互いに興味を持つ」ということを大事にしていたのです。こうした背景もあり、上記のような「気軽に情報を発信できる」環境を利用することで、そこで発信したことに対し、日々フィードバックを得られた、と感じています。
どのようなプロジェクトにおいても、コミュニケーションは非常に重要だと思います。しかし、会社によっては、1日一緒にいるチーム・メンバーとの間で会話が無い、お互いに関心を持たない、という話も耳にします。こうした状態では、チームとして活動する意義があるとは思えませんし、チーム全体としての生産性が上がるとも思えません。
チームにとって、メンバーがお互いに興味を持ち合うことは、極めて大切です。ささいな発言にも耳をかたむけることが、プロジェクトを円滑に進める手助けになります。このため、「気軽に情報を発信できる」環境を用意することは、とても大切だと思います。
新人の筆者の場合、日々の作業を報告し、それに対するフィードバックをもらうことで、仕事のやり方や技術を身に付けることができました。