見積もり

諸情報

見積りから一般に見落とされるソフトウェア開発アクティビティ

1 新しいチームメンバーの立ち上げに必要な起動時間

2 新しいチームメンバーの指導

3 マネジメントとの調整/マネージャミーティング

4 カットオーバー/配置

5 データ変換

6 インストール

7 カスタマイズ

8 要求の明確化

9 リビジョン(版)管理システムの保守

10 ビルドのサポート

11 デイリービルドを実行するために必要なスクリプトの保守

12 デイリービルドと合わせて使われる自動スモークテストの保守

13 ユーザサイトでのテストビルドのインストール

14 テストデータの作成

15 ベータ版テストプログラムの管理

16 テクニカルレビューへの参加

17 統合作業

18 変更要求の処理

19 変更の調整/優先順位決定ミーティングへの参加

20 サブコンストラクタとの調整

21 プロジェクト期間中の既存システムへのテクニカルサポート

22 プロジェクト期間中の前システムへのメンテナンス作業

23 欠陥修正作業

24 パフォーマンスのチューニング

25 新しい開発ツールの学習

26 欠陥追跡に関する管理業務

27 テストの調整(開発者に対して)

28 開発者の調整(テストに対して)

29 品質保証部門からの質問への回答

30 ユーザードキュメントへの入力およびユーザードキュメントのレビュー

31 テクニカルドキュメントのレビュー

32 顧客やユーザーに対するソフトウェアのデモ

33 展示会でのソフトウェアのデモ

34 経営上層部、クライアント、エンドユーザーに対するソフトウェアやソフトウェアのプロトタイプのデモ

35 クライアントやエンドユーザーとのやりとり、クライアントサイトでのベータ版インストールのサポート

36 計画、見積り、アーキテクチャ、詳細設計、段階計画、コード、テストケースのレビュー

ソフトウェア開発アクティビティ以外で見積りから見落とされがちなもの

1 休暇

2 祝日

3 病欠(、忌引)

4 トレーニング

5 週末

6 全社ミーティング

7 部署ミーティング

8 新しいパソコンのセットアップ

9 パソコン用の新しいバージョンのツールのインストール

10 ハードウェア問題およびソフトウェア問題のトラブルシューティング

スケジュール

・納期を100%守るため、プロジェクトメンバー各自が大きくバッファのある期限を申告する。

・早めに終わった人でもギリギリまで時間を使ってしまうため、どこかの工程で遅れが出ると、結局それがそのままプロジェクトの遅れになる。

改善するためには

プロジェクトメンバーは個別にバッファをかなりとった期限を申告するのではなく、「できるかどうかわからない、ギリギリの期限」を申告する。

バッファは、プロジェクト全体の共有バッファと、クリティカルパスへの合流地点での共有バッファにのみ取っておく。(バッファは、個別の作業者でそれぞれ分けるのではなく、プロジェクト全体で共有する)

スケジュール見積もりの幅

例えば、今から始まる製品開発プロジェクトがある。顧客への販売は12ヵ月後とする。プロジェクト責任者が製品完成までの納期を見積もらせたところ、見積は、「11ヵ月で製品開発終了しますので、1ヵ月程度の余裕があります」ということだった。

実は、12ヵ月後に予定通り顧客に納品できる確率は50%程度である。

下のリンクにある、IBMの資料によれば、11ヵ月で終わります、と見積担当が言う時は、実際には次のようなことを言っているにすぎない。

”11ヵ月で完了するという見積もりは、正しくは「11ヵ月で完了する可能性がピークにある確率分布である」と理解すべきなのです。”

”11月より前に完成する可能性は約10%です。11月中に完成する可能性は約30%。12月中に完成する可能性で48%です。ちなみに80%の確率で終わる日付は、来年の2月です”

http://blog.tinect.jp/?p=2923

仕事を確実に、予定どおり終わらせるための条件

1.不確定要素を出来るだけ少なくする。(そうすれば、見積の幅は狭くて済む)

2.タスクの時間見積は確率分布であることを認識する。

3.見積を幅で示し、リスクを織り込んだスケジュールを作成する。

普通に見積もった問題点

・見積もりが自己流。研修などは受けていないし、そもそも組織内で開催されていない。

・どうやって見積もったらいいかわからない。とりあえず人月や人日は出すが、自信が持てない。

・過去データからの推測しての見積もりや、単純にタスクを積み上げて見積もるくらいしかできない。

・見積もりの正確性が低い。タスクの見落としや過小評価のせいで、見積もりと実績が乖離している。

・見積もりの有用性が低いので、計画を立案しにくく、変更にも弱い。結果、作業効率が落ちる。

・見積もりと実績についてどのように効果測定をしたらいいかわからない。また、その時間もない。

経営陣は「見積もった結果、間に合わないと思われます」という情報が欲しいのではなく、「間に合わせるための計画」や、「間に合わせるために諦める機能を選ぶための判断材料」や「そのための追加コスト」などの情報

納品のない受託開発

http://www.slideshare.net/kuranuki/sg-management

受託開発の問題

  1. 発注者と受注者でのゴールの違い

  2. あとで直せないからと詰め込む要求

  3. 使う価値よりも、要件定義に従う

  4. 生産性が低いほど、高くなる見積もり

インターネット時代の開発

  1. 小さく初めてから大きく育てる

  2. 事業の成長にあわせて改修

  3. 外注は柔軟性が低くて金額が高い

  4. 内政は開発者の採用と育成が困難

これからの受託開発

  1. 要件の予測は困難で日々変化する

  2. ユーザが使い始めてからがスタートとなる

  3. システムの完成を目指していない

  4. 長期的視野と経営視点を持つ

納品のない受託開発とは

  1.  ⽉額定額で、開発と運⽤用を続ける

  2. 顧問として全ての工程を担当する

  3.  働く時間でなく、成果を提供する

  4. ビジネスの成長をITで⽀支えていく

納品のない受託開発で得られる顧客のメリット

  1. 「要件定義」をしなくてもよい

  2. 「仕様変更更」はいつでも出来る

  3. 直接エンジニアに相談しても良い

  4. 「作らない提案」をしてもらえる

プロフェッショナルの仕事

「納品のない受託開発」でやっていないこと

  1. ドキュメントは⼀切、作りません

  2. お客様のところには訪問しません

  3. なんでもする営業担当はいません

  4. 納期を死守する約束はできません

圧倒的な費⽤対効果を実現

顧客プログラマ

  1. プログラミングで問題解決をする

  2. コンサルティングができる開発者

  3. 分業の効率化よりも属⼈性を重視

  4. 個⼈の集まりでなくチームを重視

ナレッジワーカーとして働く

「直感」ではなく「価値観」に従って経営する

  1. 論理的 : 理にかなっていること

  2. 堅実さ : 一か八かをしないこと

  3. 迅速さ : ⼩さく試してみること

  4. 本質的 : 形にこだわらないこと

  5. 公平さ:全員が幸せになること

プランニングポーカー

http://alpha.mixi.co.jp/entry/2012/10857/