PR

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

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のWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

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