fc2ブログ

ネタつつき145 - お客様を羅針盤に開発の荒海を航海する

 開発は荒海を航海するのと似ています。状況は常に変化し、危険にみち溢れています。少しでも舵を誤れば、プロジェクトの船は大破します。一体どうすればよいのでしょうか?今回は、この命題について書きます。
 先に断っておきますが、銀の弾丸は存在しません。あったら誰も苦労しません。現実は常に複雑なのです。人間の能力など高が知れており、神様でもない限り完璧な開発は行えません。しかし諦める必要もありません。事実をありのままに受け入れれば、困難な現実を乗り越えられます。
 システム開発が難しい一番の原因はゴールが定まらない事です。完璧な要求定義など見た事がありません。お客様の要望は時間と共に変化します。従って、スタートした時点でゴールが決まっていないのです。正しく荒海を航海するのと同じです。いえ、漂流するのと等しいと言っても過言ではありません。プロにとって、技術的な事ならば比較的簡単です。しかし、非技術的な問題は解決が困難なのです。
 この難題を解決する方法は一つです。初めから仕様とゴールは変化するものと考えるしかありません。人は自然(世の理)に勝てません。下手に逆らわず、自然に対応する術を身につける方が賢明です。だからと言って、無目的に漂流しろと言っているのではありません。言いたい事はその逆で、常に目標を見失わない事が大事です。
 改めてシステム開発の目的について考えましょう。芸術的なプログラミングをする事でしょうか?完璧な理論で設計を組み事でしょうか?美しいドキュメントを書く事でしょうか?・・・。答えは否です。それらは一要因にしかすぎません。システムを販売している以上、答えは一つしかありません。システム開発の目標はお客様を満足させる事です。厳しいようですが、お客様が満足しないシステムに価値はありません。
 システム開発では一般的に、仕様要求の変更は忌避するべきものと看做されています。しかし前向きに考えれば、むしろ歓迎するべき事だと分かります。常にお客様の満足だけを目標にすれば、開発の荒波で沈没しないことを意味しています。従って、お客様の意思である仕様変更は喜ぶべき事なのです。それさえわかれば、迷うことなどありえません。
 誤解が無いように書きますが、お客様の満足度を考えると言う行為は、盲目的に従う事を意味していません。日本ではその辺が混同されています。お客様は情報に関しては素人です。迷って当然です。ですから私達プロが、お客様の真の要望を引き出しつつ道案内をすればよいのです。そうすれば自ずと、技術軽視、知識軽視、ドキュメント指向などといった奇妙な現象は起きません。
 もちろん、実際にそれを行うのは難しいです。だからと言って、始めから放棄する者は、プロを名乗る資格がありません。必死になって泥臭くやるからこそ、仕事はやりがいがあるのです。お客様の笑顔を糧に、充実した人生を送りましょう。誰かから求められる人生を目指すのか、誰からも必要とされない人生を目指すのか、それを選ぶのは貴方です。
スポンサーサイト



テーマ : ソフトウェア開発
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

インドリ

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カウンター