砂で城を作ろうとする場合、まず水を混ぜるなりして固形のブロック状のものを作らないといけないでしょう。砂で積木のブロック相当のものを作ることから作業が始まります。
だから、積木で城を作るよりも、砂では時間がかかってしまいます。
砂で城を作るのが悪いのかというと、そうではありません。積木はブロックの形があらかじめ決まっていますが、砂は自分の好きなブロックを好きなように作ることが出来るからです。
システム開発の分野に置き換えると、砂の一粒は、ちょうどプログラム言語の一語に相当するでしょう。だから、何もないところからプログラム言語だけを使ってシステムを組むことは、砂遊びに相当します。この場合、完全なオーダーメイドですから、顧客の望むものが確実に出来ます。しかし、時間と費用がかかります。また、砂で城を作るのは高度なテクニックが必要になりますが、システム構築でも同様です。技術者のレベルによっては、危なっかしいシステムになる可能性も大です。
積木遊びの世界はレディメードです。積木の一つのブロックは、砂の一粒に比べて圧倒的に大きく、自由な形には出来ません。おおよそ、出来上がった城は似たような形になりがちです。しかし、砂で作ることに比べて圧倒的に速く、幼児でも作れますからテクニックも不要です。
コンピュータが生まれてから、システム開発はずっと砂遊び式の方法が取られてきました。しかし、最近ではシステムは経営に直結するためにスピーディーな開発が求められています。さらに、技術者は不足がちです。こうした中で、遅くてテクニックが必要な砂遊び式ではなく、速くてテクニックが不要な積木遊び式のシステム開発が待望されるようになっています。(究極的には城をそのまま買うようにパッケージを買うことになります。パッケージをそのまま適用することで、開発そのものを不要に出来ますが、顧客のビジネススタイルをパッケージに合わせて変える努力が必要になってしまいますので、そこまでは求められていないようです。)
積木遊び式システム開発は、待望だけでなく既に形になっているものもあります。VBやDelphiにおけるコントロールや、JavaBeans、EJB、Webサービスといったコンポーネント思想、分散コンポーネント思想です。
いま、積木遊びはさらに進化しようとしています。城を作るときに、あらかじめ積木をはめ込む枠を用意して、そこに好きな色の積木をはめ込むだけで城を作ってしまおうという発想です。枠とはフレームワーク(枠組み)です。VBやDelphiでもスケルトンやテンプレートといった枠が用意されていましたが、さらに進化してEJBを核とするJ2EEの世界ではMVCフレームワークがあり、Webサービスの世界ではMicrosoftの.NET や、各アプリケーションサーバ毎でフレームワークが用意されています。
積木を作ること、どの積木を使うか選ぶことがシステム開発の中心的作業になる日は遠くありません。