19 min read

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

박서진님의 디버깅 행동 지도에서 가장 중요한 것은 "올바르게 동작한다면 어떤 순서로 연산이 일어나야 하는지 생각"하는 것이었습니다.
[디버깅 전문가를 만나다] 1. 토스 Head of FE 박서진님 (1/2)

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

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

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

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

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

소개

제가 만난 첫 번째 디버깅 전문가는 박서진님입니다. 서진님은 2018년 토스에 프론트엔드 개발자로 입사한 뒤, 프론트엔드 챕터 리드로서 오랫동안 토스의 근간이 되는 웹서비스를 개발해오셨습니다. 근래에는 토스 Head of FE 역할을 맡아 사내에 React Native를 도입하는 프로젝트를 주도하고 계시며, FEConf와 토스의 개발 컨퍼런스인 SLASH에도 꾸준히 연사로 참여하셨습니다.

그럼 시작해보겠습니다. 첫 인터뷰라 많이 미숙했는데도 열심히 도와주신 서진님께 다시 한 번 감사 말씀 드립니다. (원래 한 글에 담으려고 했는데 생각보다 길어져서 1부와 2부로 쪼갭니다.)

💡
참고로 이 인터뷰의 일부는 지난 3월 6일에 콜로소와 함께 진행했던 Next Solution Summit에서 정리해서 발표했던 내용이기도 합니다. 저뿐만 아니라 토스의 조유성님, 당근의 하태영님이 인사이트 넘치는 발표를 해주셨습니다.
전체 Summit에 대한 VOD 합본을 40% 할인된 가격에 구매할 수 있는, 뉴스레터 구독자 전용 프로모 코드(선착순 100명, 사용기한 7/31)을 레터 하단에 공개해두었으니 많은 관심 부탁드립니다. (VOD 링크)

Task Diagram: 박서진님의 디버깅 행동 지도 그리기

서진님을 인터뷰할 당시에 저는 ‘문제 원인만 찾으면 해결하는 건 쉽다’는 생각을 가지고 있었습니다. 그래서 첫번째 질문은 문제 원인 탐색에 대한 그림을 그리는 것이었죠.

Q. 디버깅할 때 문제 원인을 찾기 위해 서진님이 하시는 행동들을 3-5개 그려주시겠어요? 행동의 순서로 그려주셔도 되고, 종류로 그려주셔도 됩니다.

서진: 우선은 “올바르게 동작한다면 어떤 순서로 연산이 일어나야 하는지 생각한다” 이게 있겠네요. 최근에 메타인지가 켜져서 좀 알게 된 것이긴 해요.

휘동: 일단 더 자세히 들어가지 마시고, 이와 비슷한 층위에 있는 것들을 더 나열해주시겠어요? 더 깊게 들어가는 건 이 다음에 사례에 더해 여쭤보면서 해볼게요.

서진: 아, 네. 그러면 그 다음은 디버거를 걸어서 문제 상황을 더 자세히 확인하고, 그 다음에 관련된 라이브러리의 깃헙 Issue를 검색합니다.

휘동: 약간 순서가 있네요.

서진: 네 그러네요. 그리고 가장 최후 우선순위는 스택오버플로우, 구글링 또는 GPT를 쓰는 게 되겠습니다. 대충 이정도일 것 같아요.

Q. 네 가지 쓰셨는데요. 여기 아직 안 썼는데, 하나 정도 중요한 게 더 있다면 뭐가 있을까요?

서진: 어… 뭐가 있을까.

휘동: 지난번에 저랑 페어 디버깅하실 때 보여주셨던 것에서 빠진 게 하나 있어가지고요.

This post is for paying subscribers only