ひとつの態度は、プログラマーはソフトウェア開発における自分の行動を律するべきだというものです。このような態度をとる人たちは、ほとんどのプログラマは自分のやることがあまり得意ではないので、自分のやることを律し、抑制すべきだと考えています。開発中のシステムに害を及ぼすようなことをしないようにすべきです。このような態度がシステム設計やツールに反映されている場合、プログラマが特定のことをするのを防ごうとしたり、プログラマが過度に複雑な状況に陥るのを防ぐ方法として、プログラマができることを制限していることがよくあります。
もう1つの態度は、プログラマーは信頼された専門家であり、好きなことをする自由を与えられるべきだというものです。このような姿勢で設計されたソフトウェアは、使いやすいことを目指しますが、プログラマは自分が何をしているかを知っていることを前提としています。ですから、このような姿勢で設計されたソフトウェアは、プログラマが間違った使い方をすることを意図的に防いでいるわけではありません。間違った使い方をしても構いませんが、この姿勢はあなたが正しい使い方を知っていることを前提にしているので、正しい使い方をしなければ、あなたはその結果を支払うことになります。
ソフトウェア開発における多くの議論は、視点が制約的であるか寛容であるかという事実によって引き起こされます。この考え方の違いは、プログラミング言語の選択、設計ソリューション、開発ツール、開発プロセス、その他多くの側面に影響します。
この2つの相反する態度の例をいくつか挙げてみましょう:
- 少し前に、ジョエル・スポルスキー(Joel Spolsky)氏のブログに端を発した議論がありました。彼は、例外は誤用を引き起こしやすく、コードが乱雑になるため、例外を嫌っています。一方、Bill Caputo氏は、例外をうまく使えば、プログラミングをより簡単で便利なものにできると指摘しています。
- 静的型と動的型に関する議論の中にも、この2つの考え方の違いを反映しているものがあります。静的型付けを好む人は、静的型付けによって特定のミスを防ぐことができると言います。また、動的型付けを支持する人たちは、静的型が多くの有用な言語機能を制限していると指摘します。
- アジャイル開発の実践指導は人間重視であり、計画主導の開発手法は、お粗末な開発チームでも仕事をやり遂げられるようにするためのものです。
こうした態度は必ずしも永続的なものではありません。通常、人々は抑制的である場合もあれば、寛容である場合もあります。しかし、その根底には、たいていの場合、性格によって決まる要因が働いていると思います。