とある方のお話(セミナー)を聞いてきたのですが、その方が紹介してくださったblogから。
取り上げる記事はは、Life is beautiful: ソフトウェアの仕様書は料理のレシピに似ているです。このblogの運営者は、中島聡さんというWindows95/98のチーフアーキテクトなどをつとめた方です。
中島 聡(なかじま さとし、1960年 – )は、日本のコンピュータ技術者。早稲田大学高等学院、早稲田大学大学院理工学研究科修了。現在はUIEvolution(スクウェア・エニックスの子会社)のチーフソフトウェアアーキテクト。
マイクロソフトでWindows95、Windows98、Internet Explorer 3.0/4.0のチーフアーキテクトなどを務めた、日本では数少ない高い実績と海外での知名度を誇るプログラマ。
さて冒頭にURLを記載した記事より、一部を引用します。
もっとも許せないのが、そういった上流→下流という階層構造でプログラムを作る工程そのものだ。
これに関しては、自信を持って言えるのだが、「どんなに優秀なエンジニアでも、決してプログラムを自分自身で書かずに良い詳細仕様を作ることは出来ない」という絶対的な法則があるのだ。私の知っている優秀なエンジニアは、皆それを知っており自ら実行している。
(中略)
世界を又にかけてソフトウェア・ビジネスをしている米国の会社は、MicrosoftにしてもGoogleにしても、この法則にのっとって、アーキテクト自らががプログラムを書いている。
この文章を、筆者の拙い理解力で解釈すると、
ウォーターフォール開発で基本設計や詳細設計ぐらいまでをやった後に、実装を協力会社やオフショアに投げるという開発手法は不可能
という結論が導かれるように思います。
プログラムを書いてみないで詳細仕様が書けないのに、「上流」と呼ばれる工程だけを大手のSIerがプログラムを書かずに行って、「下流」と呼ばれる実装を協力会社やオフショアで実行するのはどう考えても上記の主張と矛盾します。仮に「上流」でプログラムが書かれているのなら、それでほとんどシステムは完成なので、その先にいかに外注でコストを下げるかに腐心する必要などないはずです。
ウォーターフォール開発が出てきた背景には、軍事開発という人と金を潤沢につぎ込める開発において、ソフトウェアとハードウェアを同時並行で開発する必要性があったからだと教わりました。動かすべきハードウェアも開発中であるから、実際にソフトウェアを動かしてみることは出来ない環境で、優秀なプログラマだけが集まって開発していたから行えたのでしょう。
「プログラミング経験がなくても大丈夫!」と言われて採用された日本のSIerのSEの技術力でウォーターフォール開発が行えるのかは甚だ疑問です。というか、無理だから世の中には不採算案件とよばれるものが溢れているのではないでしょうか。
上流・下流という概念は、設計→量産という形をとる既存の製造業には当てはまったのでしょうが、ソフトウェア開発には当てはまらないということでしょう。