QConの発表は、僕にとってはほぼ初めてコードがないプレゼンでした。その中で一番言いたかったのは「環境としてのアーキテクチャ」という話です。資料の35Pあたりからです。
人というのは、指示されても動けません。指示しただけで全員が正しく行動するならプロジェクトマネジメントなんかで悩むことはありません。
一般的に指示を守ってもらうためには"監視機構"が必要になります。たとえばレビューや抜き打ちてすとです。こうした監視機構によって、その人自身が「監視されているかもしれない」という意識を持ち、結果として自律的に指示を守ることになります。
これに対して、最近では環境型管理と呼ばれる考え方があります。これは「環境を変質させることでヒトの行動は変わる」「環境のデザインにより、行動の傾向性を変えていく」という考え方です。
わかりやすい例ではマクドナルドの椅子の堅さを上げることができます。環境要素(椅子の堅さ)を操作(堅く)することで、ヒトの行動の方向性(より早く帰りたくなる)を変えています。客の回転率を上げるには有効な手段です。
僕は「アーキテクチャが環境型管理機構として機能"してしまう"」ことをもっと意識すべきだと考えています。「アーキテクチャには知性がある」という表現を使いましたが、アーキテクトの意図とは関係なく、アーキテクチャはメンバーに対してなんらかの振る舞いを促してしまいます。
フレームワークの選択でプロジェクトを成功させることも、失敗させることも可能です(もちろん、それだけで決まることではありませんが、大きな要素であることは間違いありません)。
もう少しハッキリ書けば、アーキテクトは権力を行使できる立場にいることを学ぶべきだし、それを正しく使う必要があると言うことです。
これについて講演を聞いた頂いたケペルの知野さんから、次のようなメールを頂きました。
環境型管理という考え方も共感できました。環境を変えることで人の行動を変えるというよりは、気持ち良く効率的に仕事をするための環境とはどんなものか?という切り口のほうが受け入れられやすいかも知れませんね。「ピープルウェア」に書いてあるようなことが当然のこととして 世の中に浸透していけばいいのですが。
僕の返事は、次の通り。
あえて厳しい言い方をすれば、SIの現場で、そんな甘い意見は聞いてもらえません。その点では、性善説だけでは乗り切れないことがあります。なので、あえてドライにアーキテクチャが、もっと多くの制御や制約をメンバに対して与えるべきだと感じています。だからこそ、アーキテクトの責任の重さを、もっと強く感じるべきだし、それだけの重さを担える存在であることをアピールしないといけない。そうしないとPMよりも重要なポストにはなりません。
アーキテクチャは環境として管理機能を持ってしまう。だからこそ正しく使うことで価値あるソフトウェアを作りたいと思っています。
