初めに
- 個人的な環境によりWeb系開発の話になっております。
- 気付き次第追加します。
- 追加希望は、コメントかプルリクエストでお願いします。
目的
- 新しいプロジェクトを始める時のドキュメントやルール作りの簡略化
- コミュニケーション・学習コストを下げる
- ドキュメント作成コストを下げる
- リスト化で項目の抜け漏れをなくす
プロジェクトに入るエンジニア側のメリット
- 開発プロジェクトに入ったら、すぐに仕事に入れるようにスムーズに情報が得られる
- 毎回誰かに聞くと時間もかかるし、作業が進まない事態を防ぐ (誰かの作業も止めたくない)
受け入れるチーム側のメリット
- 途中から入った人に、できるだけ早く、スムーズに開発に入ってもらう
- ルールから外れたコードをできるだけ生み出さないようにする
開発環境
ハードウェア
- PC (ID, password)
- ディスプレイ
- キーボード
- マウス
- 検証、テスト用ハードウェア(検証端末)
- ネットワーク環境 (使えるイーサネット、ハブ, wifi ssid)
- 使って良い電源(コンセント)とその数
- サーバ環境
ソフトウェア
- プログラミング環境、ツール
- ID,パスワード
- PC
- サーバ
- メール
権限
- 集中管理(LDAP等)? 個別にID発行?
ツール
- チャット (IRC, Skype, ChatWork, HipChat, etc)
- ドキュメント (wiki, Google Docs, etc)
- プロジェクト管理ツール (Redmine, JIRA, etc)
- 社内情報共有(ポータルサイト?wiki?SNS?)
プログラミング
ルール・規約
- コーディング・ルール
- ネーミング・ルール
- コード内変数、クラス名
- ディレクトリ構造、ディレクトリ名
- ファイル名(prefix, postfix): アンダースコアか?ハイフンか? 日付?
- DBのテーブル名、フィールド名等
コード内のルール
- 日付の扱い方 (timestamp, ISO?)
コード管理
- ソースコード管理ツール(subversion, git, etc)
- ブランチ・ルール
- コミット・ルール
- コードレビューのルール
- 誰がコードレビューするのか?
- マージのルール
- 誰がマージするのか?
- デプロイのルール
- 誰がいつどうやってデプロイするのか?
- デプロイ履歴は、どう追うのか?
テスト
- ユニットテストの方法
- テストのフロー (unit test,自動テスト, QA?)
プロジェクト進行
- ミーティングの開催方法
- 進捗報告、確認方法
- タスクの登録方法
- バグの報告方法
- 自分のタスクの優先順位は、誰がどのように決めるのか?
プロジェクト概要
- 会社全体の目的や方向性
- 会社における該当プロジェクトの位置づけや目的、ゴール
- プロジェクトのゴール
- ステークホルダーと各ステークホルダーの目的、意向
- ユーザと顧客は誰と定義しているのか?
プロジェクト・マネージメントの基本ですが、意外にやらないところは多いような印象。(リスク管理、モチベーション管理の点で非常に重要かと思います。)
メンバー
- 各メンバーの役職や役割
- 誰がどの責任、権限を持っているのか?
- どのような情報を誰に共有するのが良いのか?
- どの質問、相談は誰にすればいいのか? (技術分野、担当分野)
社内のこと
- 遅刻の連絡方法
- 外出、休暇申請の方法
- 昼ごはん
感想
リストアップして気づきましたが、プロジェクトに入った際に必要な情報の数はかなり多いようです。
この情報を得るためのコストはかなり高いかも知れません。
大人数の場合、ツールや仕組み化による効率化にメリットがあるかも知れません。