28P by spilist2 2달전 | favorite | 댓글 1개

최근의 페어 디버깅 경험

  • '목록 페이지에서 여러 아이템에 대해 특정 액션을 한 결과물이, 개별 아이템 페이지에서는 반영이 안 될 때가 있는 문제'. 재현 경로 파악하지 못함
  • 듣자마자 '개별 아이템 페이지에 먼저 간 상태에서 목록 페이지로 돌아간 다음 해당 액션을 수행'했을 때를 확인해보자고 제안. 그게 재현 경로가 맞았음

페어 디버깅 세션은 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?

결론

  • 대개 비동기로 이루어지는 깃헙 PR 리뷰에서는 리뷰어의 암묵지가 훨씬 덜 드러남
  • 이때 의식적으로 CDM 질문을 셀프로 물어보면서 ‘내가 이 코멘트를 어떻게 생각해낼 수 있었는지’가 함께 들어간다면 리뷰어와 PR 작성자의 역량 모두 훨씬 빠르게 올라갈 거라고 봄
  • 당연히 개발 외의 영역에서도, 인지적 과업이 필요한 어느 영역이라도 CDM을 아주 잘 써먹을 수 있음. 내가 교육을 하든, 교육을 받든.

CDM 부분 번역(DeepL):

  • 단서 : 무엇을 보고, 듣고, 냄새를 맡았나요...?
  • 지식, 출처 : 이 결정을 내리는 데 어떤 정보를 사용했으며 어떻게 얻었습니까?
  • 유사 : 이전 경험이 떠올랐나요?
  • 목표 : 당시 구체적인 목표는 무엇이었나요?
  • 옵션 : 고려하거나 선택 가능한 다른 어떤 행동 방침이 있었나요?
  • 근거 : 이 옵션은 어떻게 선택되었고, 다른 옵션은 어떻게 거부되었나요? 어떤 규칙을 따랐나요?
  • 경험 : 이 결정을 내리는 데 필요했거나 도움이 된 구체적인 교육이나 경험은 무엇인가요?
  • 도움 : 최선의 결정이 아니었다면 어떤 교육, 지식 또는 정보가 도움이 되었나요?
  • 도구 : 이 결정을 내릴 때 특정 결정에 도움이 된 도구가 있었나요?
  • 시간 압박 : 이 결정을 내리는 데 얼마나 많은 시간적 압박이 있었나요?
  • 상황 평가 : 이 시점에서 자신보다 상급자(예: 전문성 측면에서)에게 상황을 설명해 달라는 요청을 받았다고 가정했을 때, 상황을 어떻게 요약하면 될까요?
  • 가설 : 상황의 주요 특징이 달랐다면, 여러분의 결정에 어떤 차이가 있었을까요?