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

2010年9月9日(木)
西口 直樹

(3)計画をチームで立てる

アジャイルでは、一定期間ごとに目標を定め、繰り返し開発を行い、これを継続していきます。繰り返しの1つを「イテレーション」と呼び、そのイテレーションで行う作業の計画(イテレーション計画)を最初に行います。筆者のチームは、イテレーションを1週間と定めていたので、1週間で実行できる計画を立てていました。

具体的には、課題管理システム(ITS: Issue Tracking System)をインプットとして、手書きの時間割表(図2)を作成していました。

時間割表の作成手順は、以下の通りです。

  1. 要望や不具合の報告など、やるべき作業の「チケット」を、ITSに登録する(これは随時行います)
  2. 「チケット」の棚卸しと、前のイテレーションで積み残った「チケット」の再見積もりをする
  3. 新しく登録した「チケット」の、おおよその見積もりを実施する
  4. 次のリリースまでに必要な「チケット」のうち、その週に取り込む「チケット」を、ビジネス・オーナー(今回はプロジェクト・マネージャ)を中心に、チームで選定する
  5. メンバー自身が、何時どの「チケット」に取り組むか、を決めて、時間割表に予定として書き込む

後は、この時間割表をもとに、作業をします。時間割表があれば、自分がその日にいつ誰と何をするのかが、常に明確な状態になります。さらに、ほかのメンバーが何をしているのかも、常に把握できます。ミーティングやレビューといった先輩社員の時間の確保や、後で紹介するペア・プログラミングにおけるペアの組み合わせも、同時に調整できます。

時間割表の作成作業において筆者が特に大切だと感じるのは、「計画をチームの皆で作る」という点です。皆で作ることによって、以下のような効果があるからです。

  • その場で計画をチーム全員で共有できる
  • 自分たちがやる仕事を自分たちで自立的に考える

プロジェクト・マネージャが計画を立てて、チームに展開する、というやり方は、一般的によくとられる手段だと思います。しかし、プロジェクト・マネージャにとっては、計画を立てる時間と、その計画をチームに対して説明/展開する時間という、2度の手間が必要になります。

また、こうしたやり方の場合、メンバーから見れば、ただ決められた仕事を割り振られる、という状態になります。しかし、これは良いことなのでしょうか。自分たちで考えた方がモチベーションも上がるのではないでしょうか。

しかも、作業内容がプロジェクト・マネージャによって決められてしまうと、メンバーはただ与えられた仕事だけをこなす人になり、自分たちは何も考えなくて良い、という状態になってしまうと思います。

アジャイルな開発を行うチームは、1人1人が自ら考えて仕事をすることを大切にします。しかし、「個人個人が自分の仕事だけをこなし、ほかのメンバーの仕事に関しては無関心」というチームであってはなりません。

こうした意味でも、チームで実行すべきことを考え、それをチームで共有し、メンバー間で連携して仕事をできるよう、計画をチームで作ることは、非常に大切な要素といえます。

図2: 1週間の時間割表(クリックで拡大)

(4)日々の作業を共有する

イテレーション中は、計画時に立てた時間割表をもとに、作業を実施していました。

以下では、イテレーション中に、日々の作業の進ちょくと作業内容を、どうやって共有していたのかを紹介します。

「朝会」で、作業進ちょくを共有する

日々の作業を共有する仕組みとして、「朝会」があります。「朝会」では、毎朝、時間割表を見ながら、前日の作業を確認するとともに、進ちょくや問題点をチーム内で共有します。

配属された当初、筆者は、見積もりに対する作業実績のズレが、多くありました。このことを朝会で報告することで、直後に時間を別途設けてアドバイスをもらったり、場合によっては先輩社員に助けてもらったりしました。

このように、朝会を通して、問題を早期に発見できました。問題を1人で抱え込むことなく、チームとして対処することができました。

「社内SNS」で作業内容を共有する

作業内容は、自分たちが作っている社内SNS自体を利用して、共有していました。

SNSには、複数人のユーザーを集めて「グループ」を作成する機能があります。部門やプロジェクト、趣味の集まりなど、さまざまなグループがあります。グループの1つに「SNS構築プロジェクト用のグループ」もありました。

SNS構築プロジェクト用のグループを使って、作業内容を共有していました。具体的には、時間割表、環境構築の作業ログ、打ち合わせの議事録、テスト・ケース、リリース手順書など、プロジェクトに関する、ソース・コードを除いたほとんどの情報を、掲示して共有していました。

社内SNSには、個人でブログを投稿する機能もあります。筆者は、新人日報というかたちで、その日に行った作業を投稿し、技術的内容で誤った理解をしていた場合は指摘をもらったり、アドバイスをもらったりしました。

ここで筆者が大切だと感じた点は、「気軽に情報を発信できる」ということです。

筆者のチームは、お互いをよく知ろう、話し合おう、ということをモットーにしていました。つまり、「お互いに興味を持つ」ということを大事にしていたのです。こうした背景もあり、上記のような「気軽に情報を発信できる」環境を利用することで、そこで発信したことに対し、日々フィードバックを得られた、と感じています。

どのようなプロジェクトにおいても、コミュニケーションは非常に重要だと思います。しかし、会社によっては、1日一緒にいるチーム・メンバーとの間で会話が無い、お互いに関心を持たない、という話も耳にします。こうした状態では、チームとして活動する意義があるとは思えませんし、チーム全体としての生産性が上がるとも思えません。

チームにとって、メンバーがお互いに興味を持ち合うことは、極めて大切です。ささいな発言にも耳をかたむけることが、プロジェクトを円滑に進める手助けになります。このため、「気軽に情報を発信できる」環境を用意することは、とても大切だと思います。

新人の筆者の場合、日々の作業を報告し、それに対するフィードバックをもらうことで、仕事のやり方や技術を身に付けることができました。

TIS株式会社

先端技術センター所属。Ruby好きなプログラマ。Ruby on Railsを利用したWebアプリケーション開発に従事。最近は、スマートフォンアプリの開発に取り組んでいる。スクラム・アライアンス認定スクラムマスター。
Twitter: http://twitter.com/nsgc

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています