すべてのプロジェクトで必ずやっておくべき大切なことがある。それはプロジェクトのビジョンを共有することである。新サービスの開発プロジェクトやパッケージのバージョンアップ開発プロジェクト、顧客向けフルスクラッチのシステム開発などすべてでやるべき仕事である。
プロジェクトのビジョンを共有する必要がある人たちは、プロジェクトに関わる全ての登場人物であり、開発者、顧客・経営者、管理者である。プロジェクトのビジョンを文書として作成することで、このプロジェクトでチームが重視しようとしていることや目指していること、顧客の重視していることや優先順位がまとめられ、プロジェクトのビジョンとして共有される。このビジョンを確立して共有するときに関係者内の利害関係や力の関係でたくさんの意見が出るかもしれない。
関係者に共有することが思いの外難しく時間がかかるかもしれない。
でも、この工程はとても重要なので今使う時間はプロジェクトが佳境に入ったときに使う時間と同じくらい大切である。このビジョンはプロジェクト計画立案や要件定義等の工程でその土台になるべき重要な要素と考える。
私たちがプロジェクトのビジョンを策定するときのフォーマットは以下のようなタイトルが並ぶ。
これを雛形にして、プロジェクト管理者が作成するようにしている。
== ○○プロジェクトのビジョン 1. 目的 2. 要件 3. 目標 4. プロジェクトの進め方 5. 予算・リソース・工数・スケジュール感
1. 目的
はじめにプロジェクトの背景や必要とされる理由が説明されるべきであり、プロジェクトをチームで進めていくためのベースの考えとして共有される目的を明示する。これによりチームは積極的な参加と正しいと思われる方向性を示すことがある。プロジェクトマネージャーが共感しやすい目的やビジョンを説明出来ることは、プロジェクトの価値を関係者に周知する強力なツールとなり、価値ある仕事と言うことを思い出させてくれる。
これまでプロジェクトのビジョン策定後、自分のチームに説明し顧客に説明することで、顧客自身がプロジェクトで達成したいこと、何を求めているのか、がはっきりすることが多々あった。
2. 要件
要件はプロジェクトに課せられることであり、顧客やチームが重視すべきことをまとめる。重視すべき点として予算内に収まるようにすべきか(コスト)、来年の2月までにサービスインすることか(期限)、現場の全ての声に対応した機能か、これらが複数定義されているか、を明示する。
私たちは箇条書きで思いつく要件を書き出し、優先度が高いと思われるリストに並び替えて整理したりする。
3. 目標
目標はプロジェクトで達成したいことーー自分たちのチームがこのプロジェクトを進める上で達成したいことーーを書いておく。
顧客の目的とは関係ない場合もある点を頭に入れておくべきである。
具体的な例として、すでに稼働しているシステムのバージョンアッププロジェクトでは「過去のコードのリファクタリングによるコードの最適化」「DBライブラリのバージョンアップ、チューニング」「Webアプリケーション用フレームワークのチューニング」などがある。その他にも「ペアプログラミングを実践」「コードレビューによるコードの品質を担保する」「テストの自動化ツールをプロジェクトに導入」などがある。
4. プロジェクトの進め方
プロジェクトマネージャーを中心にプロジェクトのビジョンが策定され、成果物として必要なことが見えてくる。プロジェクトの進め方では、今回のプロジェクトにおいて最適と思われる開発方法ーーアジャイル開発?ウォーターフォール?ーーやチーム体制、責任の範囲、役割分担などが見えてくる。
自分のチームが得意としている方法・体制を明示する。
5. 予算・リソース・工数・スケジュール感
必須ではないがチームで共有できる場合、プロジェクトの予算、人的リソースーーだれが参加するのかーー、全体のスケジュール感(詳細なスケジュールはこれから計画されるはずであるが、おおよそのスケジュール感)を共有することは大切なことである。
さいごに
プロジェクトのビジョンはプロジェクト計画前に作っておくことをオススメする。プロジェクトが始まる前にマネージャーが時間を確保し作成することでプロジェクト管理の指針になる。
このプロジェクトのビジョンはプロジェクトが進行中も更新されチームメンバーに共有される。
当社ではいつでも見られるようにtracpathのWikiによりメンテナンスされている。