完璧な答えが役に立たなくなる場所
構成した例です。検索が遅いのでキャッシュを入れてほしい、という依頼がチームに届きます。二週間後にキャッシュが入り、応答時間の中央値は半分になり、指標は緑になります。ところが不満は変わりません。遅いと言った人たちが当たっていたのは平均的な照会ではなく、フィルタを三つ重ねたときだけ出る十二秒の問い合わせで、よりによってその区間はキャッシュのヒット率がほぼゼロでした。
ここで誤っていたのは腕前ではありません。キャッシュはよく作られました。誤っていたのは何を直すかでした。そしてこの種の失敗には厄介な性質が一つあります。粗い答えは足りないという合図を出しますが、完璧な答えは終わったという合図を出します。だから誤って立てた問題をうまく解くほど、誤りは長く隠れます。
この力が高い側に残る理由
第1回で、検証を高くする要因を四つ整理しました。暗黙の文脈、遅れて来る結果、判定基準の不在、責任の帰属です。問題定義に当ててみると四つとも掛かります。どれが正しい問題かを教える正解表はなく、間違えたという知らせはたいてい出荷後に届き、判断に要る情報はコードではなく人に散らばっており、最後は誰かが名前を掛けて決めねばなりません。
Fred Brooksは1986年の「No Silver Bullet」でこれをもっと強く書きました。ソフトウェアシステムを作る仕事で最も難しい単一の部分は何を作るかを正確に決めることであり、誤ったときに成果物をこれほど損なう部分もなく、後から正すのがこれほど難しい部分もない、と。
四十年前の文ですが、生成が安くなった今のほうが刃が立っています。作る速度が上がれば、誤った問題に到達する速度も同じだけ上がるからです。速い実装は誤った方向を直してくれず、その方向へ遠くまで運びます。
要求はたいてい解決策の姿で届く
キャッシュを入れてほしい、は要求ではなく解決策です。依頼者は自分が味わった不便を、こちらに届く前に一度答えへ翻訳しています。その翻訳は善意で行われ、依頼者が知っている範囲の中だけで行われます。
翻訳を戻すには質問三つでたいてい足ります。
- これが無いと今どんなことが起きますか。この質問が症状を引き出します。
- いつから問題になりましたか。この質問が何が変わったかを引き出します。
- これが解決したら何を違うようにしますか。この質問が成功判定を引き出します。
三つめが最もよくふるいにかけます。答えが出なければ、その依頼はまだ問題ではなく願望です。答えが出れば、その答えがそのまま完了条件になります。
注意すべきは姿勢です。この質問は依頼を断るためではなく正確に受け取るために投げるもので、その違いは口調ではなく次の行動に出ます。問い返しておいて何もしなければ、次からは誰も答えてくれません。
作らないものを先に書く
範囲を決める仕事はたいていやることの一覧として表現され、その一覧は放っておいても伸びます。逆方向のほうがずっと強い。今回やらないことを書く側です。
非目標を書くと三つ生まれます。第一に、議論が前に寄ります。やらないと決めた項目を見せれば反対は今出て、今出た反対は安く処理できます。開発が終わってから出る同じ反対は高い。第二に、後から来る依頼を判定する基準ができます。第三に、自分自身へのブレーキになります。
規則は一つです。非目標には理由を付けます。多言語はやらない、とだけ書かずに、最初の顧客二社がどちらも国内で、文字列の切り出しは後からでも費用が線形にしか増えないから、と書きます。理由のない非目標は次の会議でひっくり返ります。
問題記述の六行
問題定義を文書にするとたいてい長くなり、長いと読まれません。六行で足ります。
例 — 問題記述の六行
症状: フィルタ3個以上の組み合わせで検索応答が10秒超。1日およそ40件
影響: 該当ユーザーが検索を諦め、担当者へ電話で問い合わせる
成功判定: 同じ組み合わせの95パーセンタイル応答が3秒以下。電話の減少で確認
非目標: 検索全体の高速化。今の問題は裾であり、中央値はすでに十分
制約: 索引スキーマの変更は次の四半期まで不可
不明: この組み合わせを使う利用者が何人か、いつから増えたか
最もよく空くのは最後の行です。不明が空いている問題記述は、たいてい調べが足りていません。知っていることだけ書かれた文書は自信ありげに見えますが、日程を実際に揺らす項目はいつもそこに載っていなかったほうです。
範囲を縮めることと問題を変えること
ここは正直であるべき部分です。問題を定義し直す力は悪用しやすい。難しい要求に出会ったとき、本当の問題は実は別だと宣言して解きやすいほうへ乗り換えることが実際によく起き、それは問題定義ではなく回避です。
見分ける方法は一つだけです。元の依頼者がその再定義に同意するかを確かめること。範囲を縮めるのは同じ問題を小さく切る仕事で、切った断片は依頼者の症状に触れ続けます。問題を変えるのは別の症状を狙う仕事で、依頼者は成果物を受け取っても最初に味わっていたことを味わい続けます。だから再定義は必ず依頼者へ戻して確認すべきで、その確認が抜ければ好みで舵を切っただけです。
手を動かす
今週、いま抱えている作業を一つ選び、上の六行を埋めてみてください。三十分で足ります。埋めていて詰まる行が出れば、その行が聞くべき相手と質問を教えてくれます。とくに成功判定が書けないなら、その作業は今、完了条件なしで進んでいます。
- 思考力トレーニング — 問題を自分の言葉で書き直すことと、命じられていない仮定を消すことが九つの手の中にあります。記述の一行目と非目標の行がする仕事と同じです。
- 協業RPG — 依頼を問い返す選択が関係にどんな代価を払わせるかが、数場面あとに届きます。問い返しは無料ではなく、この道具はその費用を時間差で見せます。
通じない場合も書いておきます。依頼者が自分の問題をすでに正確に知っていることがあります。規制対応、契約書に書かれた項目、上位システムが強制するインターフェースのように、定義が外で確定している仕事です。ここに問題記述を付けても時間を使うだけです。問い返しの価値は、依頼者と実行者のあいだに情報の差があるときに生まれます。
続けて読む
- このブログの関連記事: 問題を定義し、問いを立てる方法 — 答えより問題が重要だ
高いまま残る技術シリーズ
参考資料
- No Silver Bullet: Essence and Accidents of Software Engineering — Fred Brooks, 1986 (全文) — 何を作るかを決めることが最も難しい単一の部分であり、誤ったときに成果物を最も損ない、後から正すのが最も難しいという文は「Requirements refinement and rapid prototyping」の節にあります。2026-08-15閲覧。
- 問い返す三つの質問、理由を付けた非目標、六行の問題記述は上記資料にあるものではなく、この記事でまとめた手順です。
현재 단락 (1/36)
構成した例です。検索が遅いのでキャッシュを入れてほしい、という依頼がチームに届きます。二週間後にキャッシュが入り、応答時間の中央値は半分になり、指標は緑になります。ところが不満は変わりません。遅いと言...