ソフトウエアを構築することは多くの制約を管理することと密接に関連する。制約とは時間、資金、技術、意思決定、互換性、規則、そして人や業務のプロセス、またはこれらすべてを合わせたものからなる。Jim Bird氏は、創造性を育て正しいソフトウエアを作る上で、スクラムやXPによって背負わされる制約が役にたつことについて論じた。
氏は制約について興味深い意見を披露している。
しかし、制約には素晴らしい矛盾と限界があります。このことについて考えるのは私にとって楽しいことです。
制約があると制御をしなくてよくなります。制約によって選択肢が制限されることで、考え方や仕事の仕方が特定の方向に定まります。
しかし…
制約は制御を行うことを支援してくれます。制約によって選択肢が制限されることで、考え方や仕事の仕方が特定の方向に定まるからです。
氏はXPとスクラムはチームの働きを一定の短い時間に押し込めるので、単一のスプリントでの作業量は限られると考える。その結果、ソリューションは完璧にならないかもしれないが、フィードバックを得て次のイテレーションに生かす良い機会が生まれる。この一定の時間は完璧主義や金メッキや先送りに対する完全な防衛手段として働く。また、一定時間の制約下で働くことはリスク管理の面でも有効だ。捨てにくい過剰実装をしないようになるからだ。
一定時間の中では、"小さく”働かざるを得ません。どうやって仕事をやり遂げるかについてだけ考えるようになるのです。つまり、実務を遂行することだけを考えるようになります。誰、何、どこ、いつ、そして、初めに起こること、次に起こること、というようなことです。また、緊急事態に対する感覚が生まれます。そして、仕事をやり遂げ、フィードバックを得ることで満足感も得られます。
また、氏は計画に関連する制約が巨大な計画を創ろうとする無駄な努力を根絶やしにする手伝いをしてくれることも指摘する。このような巨大な計画は、完了した時点で時代遅れになってしまうのだ。
37signalsの著書、“Getting Real”には、制限が創造的な解決策を導いてくれることを指摘している。チームは制約を疎むよりも受け入れるべきだ。
時間も、お金も、人も十分でない、仕事をする上で十分な環境ではないということは良いことです。
37signalsによれば、制約は彼らが創造的な解決策を生み出すのを助けてくれた。
私たちは開発するソフトウエアを少なくすることで、変更によって発生するコストを削減しました。自分たちのやり方で自分たちの問題を解決するのに必要な機能だけを提供したのです。私たちは邪魔にならないようにしたのです。
GoogleのMarissa Ann Mayer氏も同じような話を披露した。氏によれば、制約は問題の輪郭をはっきりさせ、克服すべき難問を明確にしてくれる。また、制約は創造性を最大限に発揮できるようにしてくれる。
制約によってスピードと機運が生まれます。製品を設計する過程を形成しているとき、制約は開発の速度を上げてくれます。
しかし、氏はこの制約は不可能なことを無視する健全な態度とうまくバランスがとれているべきだと指摘している。適切にバランスがとれていれば、チームが世界を変えるアイディアを生み出すこと助けてくれるようなイノベーションを導く。また、そのようなイノベーションが真っ先に失敗しても大丈夫な環境が生まれる。
Ethan Zuckerman氏は制約下で働いているときに最も素晴らしい創造性が発揮されると述べた。氏はピカソの例を引いて、次のように言う。
偉大な芸術家が自身を縛りつける環境に常に身を置いたことは明らかです。ピカソの最も感動的な仕事の一部は彼の青の時代に作られました。この時代に彼は、意識的か無意識的か、限られた飾り気のない色合いしか利用しませんでした。
このように、ほとんどの場合、制約はイノベーションや創造性を導く。創造性を最大限に発揮するための鍵は、制約と共に働き、その制約が利点に変わるときだ。37signalsも次のように書いている。
たいていの場合、制約とは利点の仮の姿です。ベンチャーキャピタルも長いリリースサイクルも素早い雇用も忘れましょう。そのかわり持っているものだけでやっていきましょう。