fc2ブログ

分秒単位の最速アジャイル開発を考えてみた

 ビジネスに速さが求められているのが原因でここ最近は、1時間1イテレーションでアジャイル開発することも要求されてきました。基本は日単位なのですが、何時間かかるのか気にされるお客様も増えてきています。また、内部イテレーションとして時単位を採用する場合もあります。こうなってくると当然、分もしくは秒単位のアジャイル開発が気になります。そこで、もっと速くしたらどうなるのかについて考察してみました。
 1イテレーション1~10分、もしくは1イテレーション10秒程度のアジャイル開発(まさか1秒単位で知りたいと思う人はいないでしょう)とはどんなものでしょうか?私が推測するに、あらゆるシステムの要素を細分化することが前提になるでしょう。何故ならば、分もしくは秒単位で見積もりを出すのですから、自然と誤差が大きくなる大きな粒度での見積もりを避けると思われるからです。また、粒度が大きくなり、常に数イテレーションが普通になってくると、分秒単位で開発を考える意味がなくなってしまいます。一般的に、1イテレーションの要素が全くない状態だと見積もりの正当性が疑問視されます。誰しも最小単位がわからない状態では、見積もりの精度を疑うでしょう。従って、精密かつ細かく見積もりを出すのが開発の前提となります。
 さて、そこまで精密にアジャイル開発をするプロジェクトとはどんなものでしょうか?運用する対象を考えない事には始まりません。私はそんなプロジェクトに出会ったことがないので推測するほかないのですが、社運を賭けて行うプロジェクト、他社との競合が考えられる速さが勝負のプロジェクト、・・・などの極めて重要な一大プロジェクトだと思います。人が精密に行うときは、ほぼ必ずと言っていいほど重要なものです。よほど変わった人ではない限り、人は重要でないものにまで神経をすり減らさないでしょうし、そこまで精度が高い進捗情報が必要でないと思います。
 話しを進めるために、細かな仕様もあり動機もあるとしましょう。そうなると問題となるのは、どのように開発するのかです。通常の開発方法では、分秒単位の進捗状況を管理できないでしょうし、細かな単位で仕事を割り振らなければなりません。となれば、細かな単位の進捗情報と連動する開発ツール、およびプロジェクト運用テクニックが必要です。
 分秒単位で開発を管理するという事は、現在どの機能に何秒使っているのかを常に把握しなければなりません。それに加えて、細かな単位で分けられた機能を、細かく技術者に指示できなければ、見積もりを保証することはできません。分秒単位の見積もりを出すのですから、何年何月何日何分何秒にどの機能がどれだけの割合完成しているのかわからないとなりません。その難題を達成するには、プロジェクトの管理者は、迷わず仕事を割り当てないとなりません。何故ならば、迷うことによる時間のロスは、通常のアジャイル開発よりも大きいからです。仮に120秒で仕上がる予定の機能について30秒悩んだら、それだけで25%の時間を無駄にしたことになってしまいます。すなわち、分秒単位のアジャイル開発を採用するという事は、それに伴う分割コストとの戦いを意味するのです。
 普通の人は物事を細かく分けると、それだけ精度や信頼度がますと考えるでしょう。しかしながら、システム開発はそれと逆に、精度と信頼性が落ちます。何故ならば、分割を行う事で発生する各種コストと不確定要素が増えるからです。細かく管理すればするほど、コミュニケーションコストと管理コストは増しますし、人は機械のように精密かつ正確に働けません。それゆえに、成功する確率が減ります。
 では、分秒単位のアジャイル開発は絶対にありえないでしょうか?私はそう思いません。世界の変化スピードはまし、人が求められる仕事量と技術進歩は年を追うごとに速くなっています。ならば、今では考えられない開発手法も、将来では当たり前になると考えるのが妥当だといえるでしょう。それに、どんな技法にも適材適所があります。プロジェクト単位ではなく、自分用の時間管理で役立つかもしれません。なんにせよ、分秒単位のアジャイル開発を想定しておくと、将来の仕事に役立つと思います。今目の前にある仕事だけをさばいていては、変化の波についていけません。常にあらゆる状況を想定し、それを受け入れる準備をしておけば、秒進分歩と呼ばれるこの業界でも余裕をもって生き抜けるでしょう。
スポンサーサイト



テーマ : 情報処理技術
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター