技術的判断に必要な前提について深堀りする
はじめに 1. 意見の違いは、前提の違いから生まれる 2. さらに一つ前の前提を見る 3. 何を重要視しているかを確認する 4. 前提が一致しない場合どうするべきか 4-1. 価値観の違いを認識する 4-2. 制約によって変更できない場合を理解する 5. 良い技術者は正解を知っている人ではない まとめ 過去のブログで、良い判断をするためには、良い前提が必要であるという主張をしました。 例えば以下の記事です。 演繹(えんえき)法から考える設計の本質 多くの場合、前提を明確にすればうまくいくと感じています。 しかし、場合によってはうまくいかないこともありました。 今回は、 前提 について深堀していき、 前提を明確にしてもうまくいかない場合に、どうしたらよいのかを考えた内容を共有します。 はじめに アプリ開発では、日々多くの技術的な判断を行います。 どのアーキテクチャを採用するか どこに責務を配置するか 新しいライブラリを導入するか 技術的負債を返済するか これらの判断には、多くの場合「唯一の正解」はありません。 同じ技術者でも、状況によって異なる判断をすることがあります。 では、良い技術的判断とは何でしょうか。 この記事では、技術的な意思決定を行う上で重要な「前提」という考え方について整理します。 1. 意見の違いは、前提の違いから生まれる 例: 「APIレスポンスの加工処理をどこに書くべきか」 という議論。 Aさん: ViewModelで十分ではないか Bさん: UseCaseに分離すべきではないか 表面的には、 「ViewModel派」 「UseCase派」 の対立に見える。 しかし、本質的には、 「どのような未来を想定しているか」 が違います。 Aさん: この機能は小さい 今後変更されない シンプルさを優先したい Bさん: 今後拡張される可能性がある 複数画面で利用する可能性がある テスト容易性を重視したい つまり、意見ではなく、その背景にある前提を見る必要があります。 2. さらに一つ前の前提を見る 前提は深掘りできます。つまり、さらに一つ前の前提が存在します。 例えば、 「UseCaseに分離するべき」 という判断の裏には、 「保守性を高めたい」 という前提があります。しかし、さらに上を見ると、 このプロダクトは長期運用されるのか リリース時期は固定なのか 開発リソースは十分なのか 今回変更できる範囲はどこまでなのか という、さらに上位の前提が存在します。例えば、 ...