본문 바로가기

후기들

이펙티브 디버깅 후기

회사 내에서도 업무를 하면서 디버깅에 대한 고민이 많았기에 어떤 내용일까 궁금증이 생겨 이번에 Next Step에서 진행한 이펙티브 디버깅 강의를 듣게 되었다.(디버깅을 하는데 시간을 많이 잡아먹는 것이 야근의 가장 큰 원인이기 때문에….) 이에 대한 고민으로 과거 유튜브를 찾아보기도 했었는데 유튜브에서는 디버그에 필요한 IDE기능을 좀 더 잘 다루는 영상들이 대다수였다. 때문에 이번 강의도 그렇게 생각했다. 이펙티브 디버깅 이라고 해서 디버깅에 대한 좋은 도구를 설명해 주실 줄 알았다. 하지만 이펙티브 디버깅 강의는 도구에 대한 강의가 아니었다. 마인드셋에 대한 강의다. 휘동님께서 디버깅을 잘하는 사람들을 분석하시고 그분들은 어떻게 사고 하나 정리하셔서 제공해 주셨고 그것을 이용해 나만의 디버깅 템플릿을 만들자가 강의의 주된 내용이었다.

https://github.com/next-step/debugging

강의 형식은 크게

아이스브레이킹

level-1

level-2

회고

질문

로 나눠서 진행되었다.

맨 처음은 그룹지어 주신 분들과 아이스브레이킹으로 자신은 어떤 방식으로 디버깅을 하는지에 대해 대화를 나누었다.

주니어 대상 강의였기 때문에 같이 이야기를 나누는 분들의 연차가 비슷했다. 나 역시 에러메시지를 분석해서 검색 하는 방식으로 버그를 해결했는데 다른 분들도 비슷한 방식을 사용하시는 것 같았다. 

아이스 브레이킹이 끝나고 level-1을 설명해 주시면서 간단하게 디버깅 템플릿에 대해서 설명해 주셨다. 

디버깅 템플릿은 다음과 같았다. 

Step 1: 문제 정의

Step 2: 올바른 동작 정의

Step 3: 최소 재현 환경 구축하며 관찰

Step 4: 차이를 발생시키는 다양한 원인 탐색

Step 5: 가설 설정 및 검증

가장 흔히 잊어버리는 부분이 올바른 동작 정의라 말씀하셨다. 올바른 정의에 대해 given, when, then 나눠서 생각해 보면 좋다고 조언해 주셨다.  

가장 인상깊었던 말은 결과론에 집착하지 말자. 해결 못한 에러로 인해 스스로에 대해 실망감을 가졌지만 이렇게 체계화하고 생각하는 과정이 다 내 실력을 키우는 중이라는 말이 와 닿았다. 배운 내용들을 회사 업무에 적용해 나가면서 나만의 디버깅 템플릿을 만들어 가야 겠다는 생각이 들었다. 이런 템플릿을 만들어 놓고 실제로 이것들을 잘 문서화 해둔다면 나중에 다른 사람들에게도 도움을 줄 수 있을 것 같다는 생각이 들어 사내에 도입해도 좋을 것 같다는 생각이 들었다.

개발자로서 내가 해야 할 일에 대해서 명확하게 체계화하는 일은 중요한 것 같다. 처음 입사하고 내게 어려웠던 것은 공수산정하는 일이었다. 이에 대해 팀장님이 조언을 주셨는데 맡은 업무를 잘게 쪼개서 쪼개진 업무에 대한 시간 파악을 해보라고 하셨다. 하지만 이 것도 쉽지 않았다. 최근에 선임님께서 주신 조언이 있는데 데이터부터 정리해 보라고 하셨다. 기획서를 분석하면서 각 화면에 어떤 데이터가 필요할지 정리하고 데이터가 정리되면 필요한 api를 뽑아 보라고 하셨다. 확실히 api들을 뽑고 나니 해야 할 일이 명확하게 보여 좀 더 공수산정하는 것에 대한 어려움이 줄었다.

그리고 나헌님의 북콘서트에서 스포티파이에서는 업무를 시작하기 전에 사전 계획서를 작성한다고 알려 주셨다. 내가 업무를 시작하기 전에 어떤 식으로 진행할 것인지 계획을 짜고 다른 사람들에게 이에 대한 리뷰를 받는다고 하셨다. 이렇듯 오늘 배운 디버깅 템플릿을 디버깅 뿐만 아니라 변형해서 내가 하는 업무들에 녹아 내도 좋을 것 같다는 생각이 들었다.