第2回 新人のアジャイル開発体験 | Think IT(情報元のブックマーク数)

プロジェクトに途中参加した人がプロジェクトの状況や色々を理解できたのは情報共有で、社内

新人でもあり、開発が始まっているプロジェクトに途中から参加した筆者。そんな筆者が、プロジェクトの状況や開発しているシステム、開発の流れを理解できたのは、アジャイル開発では自然と行える「情報共有」があったからです。「情報共有」を通して、アジャイル開発を学ぶこともできました。

以下では、どうやってチーム内で「情報共有」を行っていたのかを伝えます。まずは、今回の事例で取り組んでいた「社内SNS」について、簡単に説明します。

筆者が所属するTISには、常々、以下のような課題がありました。

  • 部門間を越えたコミュニケーションを行うのが難しく、個人が情報を社内全体に発信できる場が無い
  • 有益な技術情報がプロジェクトごとに点在していて、技術的課題の解決に時間がかかる


これらの課題を解決するため、「コミュニケーションの促進」と「ナレッジの共有」を目的として、「サービス提供者である開発チームと、実際に利用するTIS社員とが、一緒にサービスを育てていく」という考えのもと、「社内SNS」の開発・展開を開始しました。

新人のアジャイル開発体験 | Think IT(シンクイット)

OSSSNSとしてSKIPと言う名前で公開されているそうです。

現在、この社内SNS「SKIP」は、オープン・ソースとして公開されています。当時の上司でありPM(プロジェクト・マネージャ)兼チーフ・プログラマでもあった倉貫義人が代表のTIS社内ベンチャー「SonicGarden」により、SaaS事業としても展開しています。詳しくは、コチラを御覧ください。

新人のアジャイル開発体験 | Think IT(シンクイット)

SNSを開発するプロジェクトそれも、試作プロジェクトの話。

筆者が配属された当時、プロジェクトのメンバーは5人で、XPが日本に上陸した当初からアジャイル開発を実践していた倉貫(プロジェクト・マネージャ)を中心に、XPによる開発を行なっていました。

当時は、SNSソフトのSKIPを社内システムとして開発していた最中であり、会社内でも公認ではなく、試作的なサービスという位置付けでした。

新人のアジャイル開発体験 | Think IT(シンクイット)

こうした戸惑いを解決する鍵となるのは、「チーム全体で情報を共有」(情報共有)することです。チームで「情報共有」する手段としては、メンバー間で「コミュニケーション」を取ったり、常に情報を見える状態にする「見える化」を行ったりするなど、多くの方法があります。

次のページからは、筆者と筆者のチームがどのように「情報共有」を行って仕事をしていたのかを、「計画の共有」、「進ちょくの共有」、「開発の共有」の3つに分けてお話します。

新人のアジャイル開発体験 | Think IT(シンクイット)

ふむふむ、1艇期間毎に目標を定めて開発を繰り返し行う。アジャイルの人の言っているイテレーションってこのことか。

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

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

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

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

新人のアジャイル開発体験 | Think IT(シンクイット)

こういう定例ミーティング(毎日)って結構大切ですね。前職でも昼食後15分スタンディングミーティングってしていましたが、進捗や抜けを確認できたり、助けてもらったりとしてもらいましたね。

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

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

新人のアジャイル開発体験 | Think IT(シンクイット)

気軽に共有できる場

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

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

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

新人のアジャイル開発体験 | Think IT(シンクイット)

UIとか結構重要ですし、一番初めに行うんですねぇ。

筆者のチームでの開発の流れは、UI(User Interface)の設計/DB(Database)設計をチーム全員で行った後、実際に着手できる単位の一覧であるToDoリストにチケットを落とし込み、テスト・ケースを作成します。そして「1つ目のToDoをコードにして、リファクタリングし、テストし、コミットする」、「次のTodoをコードにして、リファクタリングして、テストをし、コミットする」という流れを繰り返します。

新人のアジャイル開発体験 | Think IT(シンクイット)

screenshot