カレーなる辛口Javaな転職日記 RSSフィード

2005年 06/02

開発プロセスの功罪

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?Swebok

に尽きるかな.ウォーターフォールモデルとかPMBOKとかCMMとかCMMIとかRUP?とか,その手の「何とか標準」などは大抵は論外だ.そう言ったものが「役に立つ」「きっと適用できる」と主張する人達もたしかにいる.しかし面白いことに奇妙な偶然が見られるのだ.役に立つと主張する人はソフトウエア開発経験が全く,或いはほとんどなく,下手をすると"hello world"さえも書いたことが無い*1.逆に優れた開発者で役に立つと主張する人はまずいない.なんとも奇妙な偶然だ.


以前,とある企業の方々と話をしたが,彼らは興味深い意見の持ち主だった.書類重視でウォーターフォールモデル,低レベルプログラマの大量投入による大量生産.おそらくは『上流行程神話』の信奉者.品質もメンテナンス性も全てドキュメントでなんとかしよう,なんとかできると思っている.*2

それでオブジェクト指向が使えなくて困るのは当たり前なのだが,どうもそれが分かっていないらしい.自分たちが良かれと思ってやってきたことこそが,今オブジェクト指向やJavaが使いこなせない原因であるという自覚がない.

「UMLモデリングがオブジェクト指向の神髄だ」などという戯言に踊らされる人が後を絶たない理由が分かった気がする.こういう人に対して「あなた達のやり方自体が間違いなのだ!」と言っても信用されない*3.彼らが期待しているのは自分たちに都合の良い意見であり,痛みを伴う改革は彼らの望むものではないからだ.そのため痛みを伴う真実よりは「俗人的な開発手法など時代遅れです.これからはUMLモデリングで大系づけられた標準開発手法の時代なのです.」という甘い誘惑の方を選ぶ.こちらなら自分たちの間違いを認める必要がなく,問題を先送りにできる.

実際にはその「標準開発手法」とやらには,なんら科学的な裏付けなどない.「開発プロセスの標準化により生産性がXX%上がり,コストがXX%下がった」などという統計データがあっても信じてはいけない.統計でウソを付くのは簡単だし,ましてやソフトウエア開発においては計測そのものが事実上不可能である.よって,こういうデータは全て自説に都合がいいように捏造したものと考えてまず間違いない.*4


開発プロセスはまず役に立たない.それについては議論の余地はない.開発プロセスが問題なのは,それを使うことで生産性や品質が上がる,ひどい場合には「低レベル開発者でも高い生産性と品質が得られる」という幻想を素人に持たせてしまうことに尽きる*5.これは単なる幻想に過ぎないのだが,困ったことにそれが幻想であることを証明することもまた不可能だ.たとえば死後の世界や空飛ぶ円盤やピラミッドパワーが存在しないことを,一体誰が証明できるだろう?*6

*1:時として他業界の人間で,ソフトウエアには触れたことさえないのに,なぜか「必ず適用できる」と豪語する例もある.だったら一度でも実際に適用してみせればいいのに,何故か成功した者はいない.

*2:「これだから日本は」というのは言いたくないが,こればかりは日本の方が英語圏(特に米国)より十年は遅れているように思うのは気のせいか?

*3:事実信用されなかった.どうやら彼らにとってはUMLは神様で,私は邪教を広めて信者の心を惑わす悪魔の手先らしい.

*4:例えば「今日の降水確率」でさえも10%刻みで表現されている.誤差の関係でそれ以上細かい数値など出しても意味がないからだ.にも関わらず,もし「一ヶ月後の降水確率が29.198%から33.620%に上がった」などと言われたら,あなたはそれを信用するだろうか?
なお,気象が予測困難なのは品質に無頓着だからでも管理手法が未熟だからでもない.気象が持つ本質的な複雑さゆえである.完全に忠実なモデルでは計算不可能であり,計算するために多かれ少なかれ簡略化されたモデルを使用している.簡略化されてるが故に誤差は不可避になる.しかも簡略化すればするほど,その誤差もまた大きくなる.まるでUMLを見るかのようだ.天気予報なら外れても気象庁に苦情電話をかける程度だが,これがソフトウエア開発だと採算割れや大赤字となって帰ってくる.精度を上げるためにはより詳細なモデルを使えばいいわけだが,悲しいことに計算量がO(n^3)〜O(n^4)とかなので,スパコンの性能を1万倍にしても焼け石に水.精度の高い予測は事実上不可能になる.

*5:もっと平たく言えば,開発プロセスのメリットは上流行程屋さんが自己満足に浸れること.デメリットは開発現場の生産性や品質が低下すること.(さらには士気や忠誠心も下がるかな.)開発プロセスを導入すると現場から強い反発があるのも当然だ.
開発プロセスは標準化できても,顧客要求の標準化ができない限りは意味がない.しかし何故か顧客要求標準化という話はほとんど常に無視される.

*6:それらが「存在する」という各意見に対する反論は可能だ.各意見が間違っていることを証明することも可能かもしれない.しかし「存在しないことの証明」は遙かに難しく,事実上不可能と言っていい.