ソフトウェア開発に対する杓子定規な考え
一見同じようにみえるソフトウェア開発も個々に異なっているものがほとんどでまったく同じものはなかなかないという実感をお持ちの方も多いと思います。個々に異なれば同じ方法で開発すれば期待する効果をいつも得られるというわけにはいきません。同じ方法が通用するかどうかを考えた上で方法を活用することが大切であると考えています。また、そのことがうまく伝わるためにはどのように表現すればよいかを考えています。個々に違っていることを「文脈」の意味をあらわす「コンテキスト」と呼んでいます。個々の違いを考えることの大切さを理解してもらうのに少しは寄与したのではないかと思っています。
本エントリのタイトルの「杓子定規」もうまく伝えるための表現の一つだと思っています。「杓子定規に考えず適したやり方になっているか吟味する」は何をすべきかをイメージしやすいのではないでしょうか。SDN(Software Defined Networking)が新しくてかっこいいからSDNで、アジャイル開発がトレンドだからトレンドに乗ってアジャイル開発で、ウチでは昔からCVSを使っている・・・といったぐあいに要素技術、開発手法やプラクティス、開発支援ツールや開発環境等、様々な選択肢があります。それらが今始めようとしている開発に適しているのかを吟味することを指します。
私が研究の基盤としている実証的ソフトウェア工学の分野では、個々の開発の背景や状況の違いをコンテキストと呼んでいます。コンテキストが似ている開発では同じ方法から効果を得られ、一見似ている面が多くても方法の観点からみるとコンテキストが異なれば期待する効果が得られないことが知られています。
コンテキストが異なるものに杓子定規に方法を押しつけている場面は、ソフトウェア開発に従事していれば一度は見たことがあるのではないでしょうか。上で挙げた例もそうなのですが、規模が小さめのプロジェクト、命令系統が異なったりコミュニケーションのあり方が異なるプロジェクトにおいてもPMBOKで提案されているような計画、実行、管理・監視、終結をむりやりあてはめていくというのも、ありがちなコンテキストのミスマッチの例でしょう。計画や管理・監視プロセスを決める時間があるならば、取りかかってしまいましょうと言いたくなるような作業にも杓子定規にそれらプロセスをあてはめようとしている状況をみることがあります。
杓子定規に考えないこと、コンテキストを考えることは開発活動を大きく改善します。コンテキストを説明する講演で使ったスライドはSlideshareで公開しています。ソフトウェア開発において、様々なものを杓子定規にあてはめることの危うさをより明確にイメージいただけるのではないかと思います。一番新しいものを本ブログエントリに埋め込みました。そのほか2つもリンクを記載しておきますので、ご興味とお時間があればご覧ください。