22 min read

[디버깅 전문가를 만나다] 1. 토스 Head of FE 박서진님 (2/2)

"문제만 빨리 해결하는 것도 물론 가치가 있죠. 당장 고객이, 사용자가 불편해하니까요. 고쳐서 빨리 내보내는 건 하되, 그런 workaround는 단순히 시간 벌이로 생각해요. 그렇게 내보내자마자 바로 각 잡고 앉아서 근본 원인 이해하고, 제대로 재발 방지까지 하도록 노력합니다."
[디버깅 전문가를 만나다] 1. 토스 Head of FE 박서진님 (2/2)

'디버깅 전문가를 만나다' 인터뷰 시리즈는...

💡 ‘디버깅 전문가를 만나다’ 인터뷰 시리즈는 CTA(Cognitive Task Analysis, 인지작업 분석) 기법을 이용해 디버깅 전문가들을 인터뷰함으로써 그들의 머릿속에 숨겨진 문제해결 패턴을 추출해내는 프로젝트입니다. 소프트웨어 디버깅을 넘어 삶을 디버깅하는 다양한 문제해결사들의 이야기를 담았습니다.

제 인터뷰는 크게 다음 세 가지 기법을 주로 사용합니다. 참고로 이 인터뷰 기법들은 김창준님의 인터뷰 교육 세션, 그리고 제가 직접 CTA 관련 논문을 읽으면서 익힌 것들입니다.

  1. 작업 지도 그리기(Task Diagram Mapping): 전문가가 디버깅을 하기 위해 주로 하는 행동에 대해 물으며 함께 디버깅의 지도를 그린다. 이 큰 그림에서 무엇이 중요하고 무엇이 덜 중요한지 구분한다.
  2. 결정적 의사결정의 순간 파헤치기(Critical Incident/Decision Method): 전문가가 근래에 디버깅하면서 전문성을 발휘했던 사례의 기억을 떠올리게 한다. 전문가가 거쳐간 첩경에서 어떤 중요한 의사결정을 했는지, 그 때 어떤 신호를 감지했기 때문에 그 의사결정을 할 수 있었는지 등을 파헤친다.
  3. 전문성 탐침 질문을 이용해 보충하기(Knowledge Audit + Collaborative Development of Expertise): 처음에 그렸던 작업 지도와 실제 사례에서의 기억을 비교한다. 처음에는 중요하다고 생각했는데 별로 실천하지 않았던 행동, 처음에는 기억 못했는데 중요하다는 게 밝혀진 행동 등을 확인한다. 제약조건을 바꿔가며 추가적인 기억을 탐색하고, 어떤 단계에서 어떤 도구와 습관을 활용하는지 파악한다.

분야를 막론하고 전문가들은 초능력자처럼 손쉽게 문제를 해결하고는, 본인이 무엇을 보고 무엇을 했는지 인지하지도 못할 때가 많습니다. 이러한 암묵적인 인지 과정을 위와 같은 기법으로 파헤쳐서 교육에 적용하면 그 성과가 엄청나게 향상된다는 사실이 여러 연구를 통해 밝혀졌습니다. 실제로 저도 개발자뿐 아니라 여러 분야의 전문가들을 인터뷰하면서 문제를 발견/진단/해결하는 데 핵심이 되는 지식/기술/태도를 무척 빠르게 습득할 수 있었습니다. 이 글이 여러분의 문제해결 역량 발전에도 큰 도움이 되길 기대합니다.

박서진님과의 인터뷰 1부에서 이어집니다.

Knowledge Audit: 박서진님의 전문성 탐침하며 보충하기

첫 번째 사례에 대해 듣고 나서 다른 디버깅 사례도 듣고 싶어졌습니다. 하지만 구체적인 걸 한 번 얘기하며 기억을 떠올리도록 도와드렸으니, 다시 추상화 수준을 조금 높여서 서진님의 전문성을 더 탐침해보고 싶었어요.

Q. 이번에는 ‘에러 메시지가 없지만 재현이 되는’ 사례였잖아요. 혹시 반대로, 에러 메시지는 있지만 재현이 어려웠던 경험으로 떠오르시는 게 있을까요?

서진: 크게 두 가지가 떠오르네요. 하나는 원인이 A에 있는데 메시지가 B에서 나올 때예요. 에러 메시지를 읽는 게 결국 원인을 찾기 위한 건데 B 메시지를 아무리 읽어도 A에 대한 단서는 없는… 이건 결국 다르게 정보를 수집했어야 했던 것 같고요.
두번째는, 에러 메시지가 너무 광범위하게만 나와서 도움이 크게 안 될 때였던 것 같아요. Fetch failed 같은 메시지만 있는 네트워크 에러라거나.

휘동: 아, 저도 말씀하신 것 같은 네트워크 에러가 항상 골치가 아프더군요. 그럴 때 어떻게 하시나요?
(돌이켜보니 이 때 과거형, 즉 “-하셨나요?”를 이용해서 경험을 물어봤으면 더 좋았을텐데 보통 어떻게 하냐는 식으로 질문해버린 게 아쉽습니다.)

서진: 제가 가장 중요하게 생각하는, ‘올바르게 동작한다면 어떤 순서로 연산이 일어나야 하는가?’를 여기서도 이용할 수 있어요. 근데 이걸 못한다면, 결국 도메인 지식이 부족해서 아닐까 싶네요.

Q. 그러면 서진님은 올바른 순서를 그리는 데 필요한 도메인 지식이나 경험이 뭐라고 생각하세요?

This post is for paying subscribers only