http://martinfowler.com/bliki/SoftwareDevelopmentAttitude.html

アップデート:Steve Freemanのフォロー記事を参照のこと。

ソフトウェア開発のディベートの多くは、 スピーカーがどちらの主義を持っているかによるところがあります。 直轄主義委任主義かです。 これらの違いは、言語の選択、設計の判断、ツールの取捨、プロセスの選択などに影響してきます。

2つの主義の例を記しました:

  • ちょっと前に、Joelの「例外」についてのエントリが引き金となり、議論となったことがあります。彼は「例外」が嫌いだというのです。誤用される可能性があり、複雑なコードを招くからだそうです(直轄主義)。Bill Caputoは「例外」について、うまく使えば幸せになれると指摘しました(委任主義)。

  • 静的型かそれとも動的型かといったディベートでも、違いが見られました。静的型派の意見が「いかにミスを避けることが出来るか」(直轄主義)なのに対し、動的型派は「静的型がいかに便利なイディオムを制限しているか」なのです(委任主義)。

  • アジャイルプロセスはピープル指向です(委任主義)。一方、計画駆動手法では、いかに貧弱なチームであっても仕様通りに仕事を行うよう画策します(直轄主義)。

どちらかの主義だけを備えているということはありません。 ある場面では直轄を行い、ある場面では委任を行うというのが普通です。 しかし、深いところにそうさせる「気質」というものが存在するのではないでしょうか。 たいていは個人的なことです。 これが、いかにソフトウェアを開発するかといった場面で首をもたげてくるのです。 (私は委任主義に入ると思います。あなたはどちらに入るでしょうか。)

開発者の行動を規制するものはすべて直轄主義だと思うかもしれません。 しかし、そんなに簡単なことではないのです。 メモリ管理を例に挙げましょう。 メモリ管理が正しく動作することを信頼できないのは直轄主義だと言えます。 メモリ割り当ての機能を排除すれば、やらなければならないことを増やしてしまいます。 逆に、メモリ管理を委任し得る技術だと捉えれば(自分が気にしたくないことをやってくれる技術だと捉えれば)、 やることを減らすことが出来、本当にやらなければならないことに集中できるのです。 Steveがこの考えを、問題と複雑性との違いにうまく結びつけてくれました