ADR (Architectural Decision Record) を書く機会がここ最近何度かあった。直近を振り返っての反省の話。
ADRを書くときは意思決定の選択肢やそれぞれの長所・短所を考え、それぞれを比較して最終的な結論を決めるのだけど、そればっかりに焦点を当ててしまうと、あまりうまくいかない。
具体的な選択肢について考えるよりも、意思決定をする必要が出てきた背景や目的、意思決定の結果がどう使われるのか(=ユースケース)、意思決定に影響がある制約など、前段の部分についてしっかり情報収集・整理した上で言語化することがとても大事。
今回は、今ある選択肢を比較して何らかの結論を出そうと急ぎすぎたせいか、それぞれの長所と短所を洗い出すことに考えが集中してしまう感じになってしまった。結果として、背景やユースケース、制約を踏まえれば無視できる短所になり得ない項目までリストアップしたり、それらに基づいて選択肢を比較したりしてしまい、誤った選択肢を選んでしまいそうになった。
こういう誤った選択肢を選びそうになった過程もADRに残すことで、意思決定の背景を後世により解像度が高い状態で残すことはできるのだけど、スピード感持って物事を進めていくことが重要な状況では、まあ遠回りだ。
自分はついつい、は具体的な選択肢から考えてしまいがち。背景に関する情報収集や整理は少し億劫に感じてしまい、具体的な方法を考える方が楽しい作業ではあるから。
でも、いかなる状況でも正しい設計や技術上の意思決定は存在しないし、どんな決定にもトレードオフが発生する。だからこそ、背景に関する情報収集や検討を怠ってはいけない。背景があってこその設計だし意思決定だから。
頭では理解しているつもりでも、ついついやってしまう。最近はこういう場数をたくさん経験できる環境にいるので、しっかり場数を踏んで、自然と大事なことを意識できるようにしたい。