賢明なデフォルト
「賢明なデフォルト(Sensible Default)」とは、何らかのタスクを実行する際に、特別な事情がない限り採用すべきプラクティスのことです。ソフトウェア開発においては「バージョン管理を使用する」「UIロジックとドメインロジックを分離する」「デプロイパイプラインを自動化する」が該当します。
「賢明なデフォルト」は「ベストプラクティス」と意図的に対比しています。「ベストプラクティス」という表現が好まれないのは、「常に実践すべき」という含みがあるからです。一方、「賢明なデフォルト」は新しいコンテキストで見直すべきものであり、状況が変われば上書きできる(すべき)ものです。
この用語をはじめて耳にしたのは、Thoughtworks社内にEvan Bottcherが広めたときでした。彼はJames Rossとの会話でこの用語を知りました。そして、彼の求めていたニュアンス(うまくいくことがわかっている出発点)をうまく表しているところが気に入ったそうです。
「賢明なデフォルト」とは、その環境に避けられない制約がない限り、実行することが期待されるプラクティスです。これらのプラクティスを実行するか、さらに良いやり方をしてください。別のやり方を選ぶなら、その理由を説明できるようにしておく必要があります。
– Evan Bottcher
それ以来、Thoughtworks社はこの概念を重視しており、プレイブックも公開しています。新しい作業を開始するときには、これらのデフォルトに慣れていて、すぐに使用できることを期待しています。これらがデフォルトになっているのは、これまでに多くの状況で使用し、効果的だとわかっているからです。ただし、チームはこれらの限界についても理解しておく必要があります。そして、状況に応じて変更が必要かどうかを判断できるようにしておくべきです。アジャイルの第12の原則が述べているように「チームがもっと効率を高めることができるかを定期的に振り返り、それに基づいて自分たちのやり方を最適に調整」すべきです。私たちはこれらのデフォルトを定期的に再評価しています。これがThoughtworks Technology Radarの核心です。
ウェブ検索したところ、Steve Bennettが「賢明なデフォルト」について投稿していました。この投稿はEvanがJamesと会話した時期とほぼ同時期に書かれたものです。Jamesがこの投稿から用語を知ったのか、あるいは両者が別々に考案したものなのかは私にはわかりません。