森と砂漠
「森と砂漠」は、ソフトウェア開発プロセスを考えるための比喩である。 ベス・アンダース=ベックと彼女の父であるケント・ベックによって考案された。 ソフトウェア開発者には2つのコミュニティがあるが、 住んでいる環境が大きく異なるため、互いの意思疎通が極めて困難であることを示している。 したがって、一方のコミュニティに当てはまるアドバイスは、もう一方には理解しがたいものとなっている。
「砂漠」はよくあるソフトウェア開発の世界だ。 バグが蔓延し、スキルが育まれることはなく、 ユーザーとのコミュニケーションは困難である。 「森」はXPなどを使用する適切に運営されたチームの世界だ。 開発者は変更を迅速に本番環境に投入し、 本番環境をテストで守り、 コードを健全に保つために投資し、 顧客と定期的に連携する。
当然ながら、ベスとケントは「森」を好んでいる(私もだ)。 だが、この比喩が本当に示したいのは、 森の説明やそこでの仕事の進め方に関するアドバイスが、 砂漠の経験しかない者には通じない、ということだ。 ソフトウェア開発のプラクティスやアーキテクチャパターンから得られた教訓は、 それらを経験したコンテキストで形作られる、ということを再認識させてくれた。 「砂漠」を「森」に変えることは可能だが、非常に困難である。 多くの場合、直感に反する厳しい行動を求められるからだ。 (残念ながら、「森」が「砂漠」になるほうが遥かに簡単のように思える。)
私は間違いなく「森の住人」である。 Thoughtworksと一緒に、我々とクライアントのために健全な森を育むことを目指している。 私は「砂漠の住人」に「森」について説明し、 同僚の「森の住人」には彼らの森をさらに豊かなものにする手助けをしている。
参考情報
ベスとケントの最もまとまった要約は、ケントのSubstackで読める。 より深く知りたい場合は、彼らのØredevの基調講演を参照してほしい。
謝辞
この比喩の画像はケント・ベックから提供されたものである。 彼がドット単位で丹念に描いたものかもしれないし、そうでないかもしれない。