ソフトウェア開発におけるフロントローディングとは何だろう?

自分の身近でソフトウェアのフロントローディングということばをよく聞くようになったのだけれど疑問点もいくつかある。

フロントローディング - sakataakinoriのブログ

僕もその一人だ。
僕は3次元CAD関係の開発をしているわけで、必然的に製造業という業界に触れる機会が多く、そんなわけでフロントローディングという言葉が製造業の文脈で語られていることはそこそこ知っている。しかし、そのフロントローディングという概念をソフトウェア開発に持ち込むというのは、どうもピンと来ない。

企画/設計/コード/テストといったいわゆるウォーターフォール的に工程をとらえれば、かつフロントローディングを現象ではなく、手法と捕らえればこういう誤解(!)もありうるだろう。

要求/要件を追加し続けるシステム開発や改版を重ね続けるソフトウェア製品の工程とはなんだろう。企画/設計/コード/テストのそれぞれを工程と考えるのは無理がある。

フロントローディング - sakataakinoriのブログ

これ、すごく共感した。

フロントローディングという言葉は、すごくウォーターフォール的な開発モデルを連想させる。工程がずらっと一列に並んでいて、左から右に順序良くこなしていけばソフトウェアが出来るんだけど、後ろ側の工程でちょくちょく問題が発生して前工程に手戻りが発生する。こりゃ参った大変だ、この問題を解決しなくちゃ!そうだ、もっと前工程で後工程のことまで配慮しておけばいいんじゃない?そう、もっと前工程側で頑張るんだ、フロントローディングだ!

・・・これはちょっと違うんじゃないかぁ?

製造業とか建築からの連想で、ウォーターフォールという開発モデルが出来上がったわけだけれど、どうもそれではうまく開発できないことが多いということでアジャイル開発手法が注目されてきたという経緯がある。アジャイルの発見とはすなわち、ソフトウェア開発を製造業とのアナロジーで捉えるのは危険である、というメッセージではなかったか。ここで再びフロントローディングというキーワードを製造業から引っ張ってくることは、ソフトウェア開発の現場を再び暗い闇の中に突き落としてしまうことにはならないか。

アジャイルの発見とは、すなわちこうだ。「手戻りが問題ならば、手戻りが素早く楽に行えるようにしよう!」

知的生産とは、本質的に手戻りの連続である。トライ&エラーの繰り返しから新しいソフトウェアが生まれるのだ。これを認めるのならば、ソフトウェア開発から手戻りをなくそうとする試みはナンセンスである。むしろ、その手戻りをより素早く行えるように工夫をするべきなのだ。


・・・てなことぐらいは、フロントローディングという言葉を使っている方も十分に理解されているのかもしれない。これはフロントローディングという言葉から僕が連想したものに対する意見に過ぎないのであって、実際にどういう意味でこの言葉が使われているのか僕は実はよく知らない。僕に誤解があったら誰か教えて。