プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

システム構築で最も大切なこと


システム構築で最も大切なことは全体のバランスだと思います。そして開発チームにはユーザとプログラマの要求をバランスよく調停する人が必要です。私はそのような人にはなれませんが、バランス感覚を磨く努力はしていきたいですね。

予想でモノを作るな


argvさんのBlogより:


予想でモノを作るな

結局のところ、そのシステムの特徴や顧客の特徴、開発プロジェクトの状況などを踏まえ、適切なバランスを考えることが重要だろうと思う(※)。


まさにその通りだと思います。よく出来たシステムは、このへんのバランスがよくとれているものです。拡張性とシンプルさは相反するので難しいところですが。


ここにはプログラマと利用者(ユーザ)の考える理想のギャップがあるようです。

プログラマの理想


プログラマにとって自分のプログラムは一種の芸術作品です。プログラマは構造が理論整然としていて、データの流れが明確なプログラムを目指します。後から機能追加されたことで冗長な部分ができたり、構造的に美しくなくなることは嫌いです。そうは言っても、プログラムの機能はどんどん変化していきますから、変更によって美しさを損ねないように設計されることが多いのです。


また、プログラムを書き直すということは、変更によるリスクも高まります。特に一度リリースされたソフトウェアであれば、メジャーリリースでもない限り多くのテスト工数を取ることが出来ません。加えて、構造の変更は従来バージョンとの非互換を生む可能性もあります。


これらの理由により、プログラマはあらかじめ予想される拡張を見込んでプログラミングすることが多いのです。

ユーザの理想


プログラムを使うユーザの理想は、分かりやすく使いやすいソフトウェアです。特にユーザインタフェースなどは使ってみないと分からないことが多く、変更の対象となります。使いやすくなるのであれば、従来の機能が必要なくなることも少なくありません。


定型化された業務のようなものもありますが、作業はどんどん変化していくのが普通です。それと共にプログラムの変更が必要とされるのは、ごく自然な流れといえます。

バランスのよいシステムを作るには


バランスのよいシステムを構築するには、両者の中間で調停を行う人が必要です。


両者の理想は一見違っているように見えますが、ソフトウェアをよくしたいという根本の願いは同じです。どちらの意見も尊重しプログラムを改善することがよいシステムを作ります。しかしながら、何でも機能を追加していけば全体がムダに大きくなり、使い方も複雑にしてしまいます。


そこでソフトウェアの機能をどちらの目でも見ることが出来る人間が必要となります。それは本当に必要な機能なのか、システムを複雑にしてしまわないか、全体のバランスを見ることが出来る人。プログラミングの視点からもユーザの視点から見ることが出来る人。加えて関係者からの信頼を得ることも出来たらパーフェクト。


そのような人や開発チームの実現は、現実にはなかなか難しいです。私はそのような人になれる自信は全くないですけど、ソフトウェアのバランス感覚は身につけられるように努力していきたいですね。