little hands' lab

ドメイン駆動設計を布教したい

議論で迷った時、まず取りうる選択肢を列挙すると道が開けるという話

はじめに

エンジニアとして働くなかで、色々な職種の方と議論をして意思決定をすることがあります。

そのなかで、

  • 会議が紛糾してなかなか結論に辿りつかない時
  • 他の人から仕様について相談をうけて、なかなか向こうの言いたいことが見えて来ず、議論が進まない
  • 一人で案を考えていて、堂々巡りでになってしまう

なんてこと、ありますよね。

こういうケースで自分で心がけたり、人に「こういう風に案をまとめてきてください」というものがあるので、それをまとめます。

検討の3Step

Step1.取りうる選択肢を列挙する

色々な論点が交差して混乱したとしても、最終的には何かのアクションに落とし込まないといけません。それならば最初から取り得る選択肢を並べましょう。多くの場合、選択肢は意外と多くないことに気づくでしょう。

有効な選択肢があまり思いつかない場合は、そもそもの設定している問題に無理があるのかもしれません。そこを疑ってみましょう。

選択肢が多すぎる場合は、問題のフォーカスする粒度が粗すぎる可能性があります。一度問題を分解することを考えましょう。

現実的な選択肢が幾つか並んだら、その時点で答えが自ずと出るかもしれません。おめでとうございます。

複数の選択肢で迷うことがあったら、Step2に進みましょう。

とにかく、迷ったら取りうる選択肢を並べるだけでも、現状の問題がどこにあるのか整理されます。まずはここから始めましょう。

Step2.検討観点と検討結果を整理する

選択肢を複数並べたら、それぞれのメリット、デメリットを書き出しましょう。

メリットデメリット以外に、検討時に重要な項目は独立させましょう。(工数、リスクのように横串で検討しないといけないものなど)

これを書き出すと複数案を同じ軸できちんと比較できるようになります。

そうでない状況の例:
A案は機能上のメリットを話していて、B案は工数の話をしていて、のような状況では、比較をしようとしても同じ条件の比較でないので論理的な判断がしにくくなります。A案とB案ではどれほど機能に違いがあるのか、工数はどれほど変わるのか。また現在重みを置くのは機能なのか工数なのか、ということを踏まえて総合的に判断がしやすくなります。

Step3.分析結果を踏まえた結論を出す

上記を踏まえて、現時点の判断結果を導きだします。明らかに特定の案がよさそうであれば決まりです。

特定の案を除外しても、残った案で判断がつかない場合は、なぜ判断がつかないのかを切り分けましょう。項目の重み付けに迷うのか、判断する材料が不足しているのかなどです。迷う場合は近くにいる人、特にその重み付けに責任を持つ人に相談しましょう。材料不足の場合は必要な情報を得るためにアクションを起こしましょう。

人に報告する時の順番

大体の意思決定は関係者の合意が必要となります。その場合は上述のStepの内容を以下の内容で話しましょう。

まず、Step0として背景や概要の頭出しをします。

Step1の選択肢一覧を概要レベルで話しましょう。この段階ではあまり詳細まで触れないほうが良いです。まずは全体感を伝えましょう。

次は詳細より先にStep3の分析結果を述べましょう。自分の中で結論が決まっているのか、迷っているので相談したいのかのスタンスを伝えることが重要です。相手も聞く前提が大きく変わります。

最後に、Step2の詳細を述べて、Step3に戻りましょう。

このプロセスのなかで寄り道をすることはあると思います。例えば、選択肢を並べた段階で「こういう案もあるよね」という話がでることもあるでしょう。

その場合はその案をその場で改めて検討するば良いと思います。準備したStepはあくまで思考の整理と、たたき台として捉えましょう。自分の時間で論点を整理したことにより、複数人で検証する時間を短縮し、時間を有効に使うことはできたはずです。

重要なのは「自分で考えたほうが効率が良いのか、相手と考えたほうがよいのか」を常に考えることです。その判断軸で、準備と相談のバランスを考えられるとよいと思います。

まとめ

お気づきの方もいらっしゃるかと思いますが、議論で迷った時ときとは言っていますが、一般的な選択肢検討のテンプレだったりします。

ただ、議論の時にふと当てはめてみると効率的に話を進められるきっかけになるかもしれません。よろしければ、迷った時に思い返してみてください。