気づいた事、発見した事
私が現在関わっているシステム開発プロジェクトは、担当してからもう2年以上経ちます。その間、数え切れない後悔と反省…そして勉強の日々でしたが、開発面で特に苦労したのが仕様変更への対応でした。エンドユーザー様から要望は頂くのですが、要望のシステムと実際に作ったシステムの間には必ずギャップがあり、できたシステムを触ってもらって初めてユーザー様にイメージして頂ける、というような状況でした。システムを作るときには必ず何か前提となるルールを決めた上で作るわけですが、仕様変更によってその前提が崩されると大変で、大幅な作り直しが要求されます。ある程度、変更に耐えられるように考慮して作っていましたが、どこまで前提条件を決めるのかという見極めは非常に難しいものでした。
そこで、最近書店で見つけたのが「AdaptiveCode」というプログラムコードの適応力に関する本でした。その本の面白いところは冒頭でウォーターフォール開発モデルの否定から始まるところです。現実的には仕様変更を無くすのは不可能なのだから、仕様変更にも対応できるようなコーディングをしておくべき、そのような適応力のあるコードを書くにはどうすればよいのか?という本です。最近読み始めたばかりでまだ主題までたどり着いていませんが、モジュールの依存管理やテスト駆動開発など、言語はC#で記述されていますが、どの言語でも共通のソフトウェア開発における普遍的なノウハウが書かれており、とても価値のある本だと思います。
もちろん、仕様変更はできるだけ少なくなるように努力するべきだとは思いますが、開発者の立場としては変化に柔軟に対応でき、拡張性にも優れたプログラムが作れる技術者を目指したいですね。