どうしてその判断ができたのか?
(stdy.blog)最近のペアデバッグの経験
- 「一覧ページで複数のアイテムに対して特定のアクションを行った結果が、個別アイテムページでは反映されないことがある問題」。再現経路は把握できていなかった
- 聞いた瞬間に「先に個別アイテムページへ行った状態で一覧ページに戻り、そのあと当該アクションを実行」したときの確認をしてみようと提案。実際、それが再現経路だった
ペアデバッグのセッションは5分もかからずに終わったが、考え込むことがあった
- 私はどうしてこれに気づけたのか、そしてなぜこの同僚は気づけなかったのだろうか?
- どうすればこの人の能力を効果的にさらに引き上げられるだろうか?
シニアとしてコードレビューやペア作業をしていると、こういうことは意外とよく起こる
- シニアが何か引っかかる部分を素早く見抜き、それらしい改善提案をする。
- ジュニアは「なるほど」と受け入れる。
- 次に、完全に同じではないが似た問題がまた起こる。
- シニアはまた見抜き、また改善提案をする。
- ジュニアは少しずつ理解してミスは減るが、私が望むレベルまで素早く伸びてはこない。
これは、シニアのソリューションだけが伝わり、その内側にある認知プロセス、つまり「その判断や意思決定をどうやって行えたのか」が伝わっていないため
Gary Kleinが開発した CDM は、このような認知プロセスを比較的すばやく、セルフでも分析できる良い方法
- Cues : What were you seeing, hearing, smelling ...?
- Knowledge, Source : What information did you use in making this decision, and how was it obtained?
- Analogues : Were you reminded of any previous experience?
- Goals : What were your specific goals at this time?
- Options : What other courses of action were considered by or available to you?
- Basis : How was this option selected/other options rejected? What rule was being followed?
- Experience : What specific training or experience was necessary or helpful in making this decision?
- Aiding : If the decision was not the best, what training, knowledge, or information could have helped?
- Tools : When making this decision, were there any tools that helped that specific decision?
- Time Pressure : How much time pressure was involved in making this decision?
- Situation Assessment : Imagine that you were asked to describe the situation to someone superior to(in terms of expertise, for example) you at this point, how would you summarize the situation?
- Hypothesis : If a key feature of the situation had been different, what difference would it have made in your decision?
結論
- たいてい非同期で行われる GitHub PR レビューでは、レビュアーの暗黙知ははるかに表れにくい
- このとき意識的に CDM の質問をセルフで投げかけながら、「自分がこのコメントをどうやって思いつけたのか」まで一緒に入れられれば、レビュアーと PR 作成者の両方の能力はもっとずっと速く伸びると思う
- もちろん開発以外の領域でも、認知的な作業が必要なあらゆる領域で CDM は非常にうまく活用できる。自分が教える側でも、教わる側でも。
1件のコメント
CDMの一部翻訳(DeepL):