ソフトウェアとはガーデニングである

   このエントリをはてなブックマークに登録    2007/7/17

The code garden (an analogy that sucks less)」という面白い記事がありました。 ソフトウェアとは継続的に管理が必要なものであるというアナロジーを庭園管理(ガーデニング)として表しています。

ソフトウェアは主に工場と同様に考えられてしまい、作る事に集中しがちだそうです。 技術者ではない人達にはソフトウェアメンテナンスの大事さがなかなか伝わりにくいそうなので、ピンと来そうなアナロジーを考えてみたのがこの記事だそうです。 ソフトウェアを書いた事がある人ならば、この園芸アナロジーは適切ではないのは解るだろうとも書いてありました。 「橋を作る」などのアナロジーが一般的らしいのですが、それでは「ソフトウェアには終わりが無い」という事を表しにくいので、このアナロジーを考えたそうです。

以下が理由の要約です。 面白かったです。 ただ、日本では一般家庭で大きな庭園を管理するということがあまり一般的だとは思えないので、ちょっとイメージが異なる部分もあるのかも知れないと思いました。 (もちろん、庭園管理をしている家もいっぱいあると思います。念のため。)

  • 計画的にバランスを取れた植え付けをしなくてはならない。初期の学習と継続的な変化やメンテナンスが必要。
  • リソースに拘束されたモデルである。大きな庭園が欲しいのであれば、メンテナンスのために多くを支払うか、初期投資を大きくするか、複雑度を下げるかを選択しないといけない。
  • 庭園が一定の規模になってしまうとそれ以上の追加は出来なくなる。何かを追加したければ、使っていないものと置き換える必要がある。
  • It imparts the reality that you can trade off quality for quantity, but only up to a point. You can have a tiny Japanese style garden where every rock and twig is given consideration, or you can allow a small amount of weeds. (うまく理解できず。「量と質はトレードオフだけど、それも一定値まで」と言っていると思われますが、日本庭園とのからみが良くわかりませんでした。)
  • 管理を怠り過ぎてしまった場合、直すよりも置き換えるほうが簡単な場合がある。(雑草90%、花10%)
  • 良く利用されている部分は多くのメンテナンスが必要であり、利用が少ない部分のメンテナンスは少なくても良い。しかし、メンテナンスをやめてしまうと誰も使わなくなってしまう。

なお、コメント欄には「○○の本にもそのように書いてあったよ」や「Code Completeでは農業に例えられているよ」という書き込みがありました。 また、個人的にはペットの飼育にソフトウェア管理を例えてみてはどうだろうかと思いました。

   このエントリをはてなブックマークに登録