개발일기/TIL(Since24.04.19)

디버그 와 코드리뷰 버그 공유 를 잘하자!!

w.llama 2025. 5. 11. 00:55

최근 프로젝트를 진행하면서 디버깅의 중요성에 대해 뼈저리게 느끼게 되었습니다. 그동안 버그가 발생했을 때 제대로 된 디버깅 과정 없이 추측만으로 문제를 해결하려 했던 제 자신을 돌아보며, 이 경험을 공유하고자 한다.

과거의 잘못된 디버깅 방식

추측에 의존한 문제 해결

프로젝트를 진행하면서 버그가 발생하면, 저는 주로 다음과 같은 방식으로 접근했었다.

  • 코드를 대충 훑어보고 "이 부분이 문제일 것 같다"고 추측
  • Request/Response 값들을 제대로 확인하지 않음
  • 데이터가 올바르게 전달되는지 검증하지 않음
  • 문제가 프론트엔드에서 발생한 것인지, 백엔드에서 발생한 것인지 구분하지 않음

결과적으로 발생한 문제들

이런 방식으로 접근하다 보니:

  • 문제가 점점 복잡하게 얽히게 됨
  • 해결 시간이 예상보다 훨씬 오래 걸림
  • 같은 유형의 버그가 반복적으로 발생
  • 근본적인 원인을 찾지 못해 임시방편적인 해결책만 적용

팀원을 통해 배운 올바른 디버깅 방법

체계적인 문제 접근법

옆에서 팀원이 버그를 해결하는 과정을 지켜보면서 완전히 다른 접근 방식을 배웠습니다:

  1. 문제 영역 파악하기
    • 프론트엔드 문제인지 백엔드 문제인지 먼저 구분
    • 네트워크 탭에서 API 호출 상태 확인
    • 브라우저 개발자 도구 활용
  2. 데이터 흐름 추적하기
    • Request 데이터가 올바르게 전송되는지 확인
    • Response 데이터가 예상한 형태로 도착하는지 검증
    • 각 단계별로 데이터 변환 과정 추적
  3. 메서드 동작 원리 이해하기
    • 해당 메서드가 어떤 과정으로 동작하는지 차근차근 분석
    • 코드 플로우를 따라가며 각 단계별 역할 파악
    • 예상 동작과 실제 동작 간의 차이점 발견

부트캠프 시절의 아쉬움

돌이켜보니 부트캠프를 하면서 항상 시간에 쫓겨 프로젝트를 진행했던 것이 이런 습관을 만든 원인 중 하나였습니다.

시간 압박의 부작용

  • 빠른 결과물 도출에만 집중
  • 근본적인 이해보다는 당장 동작하는 코드 작성 우선
  • 디버깅과 코드 분석에 충분한 시간 투자하지 못함
  • 장기적인 관점에서의 코드 품질 관리 소홀

놓친 학습 기회들

  • 체계적인 디버깅 방법론 학습
  • 코드 리뷰와 분석 과정의 중요성
  • 문제 해결 과정에서의 사고 체계 구축

플러스 [코드 리뷰의 중요성 ]- 팀원의 코드도 이해해야 하는 이유

디버깅과 함께 깨달은 또 다른 중요한 점은 코드 리뷰의 필요성입니다. 팀 프로젝트에서는 내가 작성하지 않은 팀원의 코드에서도 버그가 발생할 수 있고, 이때 해당 코드를 이해하지 못하면 문제 해결이 더욱 어려워집니다.

팀원 코드 이해의 중요성

  • 통합된 시스템: 개별 코드들이 서로 연결되어 동작하기 때문에 전체적인 이해 필요
  • 효율적인 협업: 다른 사람의 코드를 빠르게 파악할 수 있어야 팀 전체의 생산성 향상
  • 버그 발생 시 대응: 문제가 생겼을 때 해당 코드의 작성자가 부재중이어도 대응 가능
  • 지식 공유: 서로의 코드를 리뷰하며 다양한 접근 방식과 패턴 학습

코드 리뷰를 통한 학습 효과

  1. 다양한 문제 해결 방식 학습: 같은 문제를 다른 관점에서 해결하는 방법 습득
  2. 코드 품질 향상: 서로의 코드를 검토하며 더 나은 코드 작성법 공유
  3. 팀 전체의 코드 일관성: 통일된 코딩 스타일과 패턴 유지
  4. 예방적 버그 발견: 코드가 배포되기 전에 잠재적 문제 발견 및 해결

현재 적용하고 있는 디버깅 전략

1. 문제 발생 시 체크리스트

  • [ ] 에러 메시지 정확히 읽고 이해하기
  • [ ] 브라우저 개발자 도구로 네트워크 상태 확인
  • [ ] Request/Response 데이터 검증
  • [ ] 프론트엔드/백엔드 문제 영역 구분
  • [ ] 관련 메서드 동작 원리 파악

2. 단계별 접근법

  1. 문제 재현: 버그를 일관되게 재현할 수 있는 조건 파악
  2. 범위 축소: 문제가 발생하는 구체적인 영역 특정
  3. 데이터 추적: 각 단계별 데이터 상태 확인
  4. 가설 검증: 추측이 아닌 실제 데이터로 가설 검증
  5. 근본 원인 해결: 임시방편이 아닌 근본적인 해결책 적용

3. 예방적 접근

  • 새로운 기능 구현 전 메서드 동작 원리 충분히 이해
  • 코드 작성 과정에서 중간중간 디버깅 포인트 설정
  • 예상 결과와 실제 결과 비교하는 습관 형성

4. 코드 리뷰 활용하기

  • 정기적인 코드 리뷰: 팀원들과 서로의 코드를 검토하는 시간 확보
  • 질문하는 문화: 이해되지 않는 부분은 적극적으로 질문
  • 문서화: 복잡한 로직이나 중요한 결정사항들을 주석이나 문서로 기록
  • 페어 프로그래밍: 가능할 때 함께 코드를 작성하며 실시간으로 지식 공유

버그 공유의 중요성 - 혼자 끙끙대지 말자

또한 버그가 발생했을 때나 해결 과정에서 동료와의 적극적인 소통과 공유가 얼마나 중요한지도 깨달았습니다. 과거의 저는 버그가 발생하면 혼자서만 끙끙대며 해결하려고 했고, 팀원들에게 상황을 알리지 않는 경우가 많았습니다. 하지만 이는 팀 전체에게 좋지 않은 영향을 미친다는 것을 깨닫게 되었습니다.

혼자만의 디버깅이 가져오는 문제점

팀에게 미치는 악영향:

  • 같은 문제로 다른 팀원들도 시간을 낭비할 수 있음
  • 전체 프로젝트 일정에 영향을 미칠 수 있는 중요한 버그를 늦게 알게 됨
  • 팀 차원에서 우선순위를 조정할 기회를 놓침

개인적으로도 비효율적:

  • 혼자서는 해결하기 어려운 문제를 계속 붙잡고 있게 됨
  • 다른 관점에서의 해결책을 놓치게 됨
  • 불필요한 스트레스와 시간 소모

버그 발생 시 즉시 공유해야 하는 이유

1. 버그인지 사양인지 판단 가능

혼자서는 이것이 실제 버그인지, 아니면 원래 의도된 동작인지 판단하기 어려운 경우가 많다. 하지만 팀원들과 공유하면 빠르게 상황을 파악할 수 있다는것을 알게되었다.

2. 다른 팀원의 코드 수정 시 사전 협의

버그를 해결하는 과정에서 다른 팀원이 작성한 코드를 수정해야 하는 경우가 자주 발생합니다. 이때 사전에 상황을 공유하고 협의하지 않으면:

  • 의도치 않게 다른 기능에 영향을 줄 수 있음
  • 해당 코드의 작성자가 모르는 사이에 로직이 변경될 수 있음
  • 추후 충돌이나 혼란을 야기할 수 있음

3. 팀 전체의 학습 기회

버그 해결 과정을 공유하면 팀 전체가 함께 배우고 성장할 수 있는 기회가 된다.

마치며

디버깅은 단순히 버그를 고치는 것이 아니라, 코드와 시스템에 대한 깊은 이해를 바탕으로 한 문제 해결 과정이다 그리고 팀 프로젝트에서는 내 코드뿐만 아니라 팀원들의 코드도 이해할 수 있어야 진정한 협업이 가능하다는점을 알게되었다.

시간이 부족하다는 이유로 이런 과정들을 소홀히 했던 과거를 반성하며, 앞으로는 체계적인 디버깅과 적극적인 코드 리뷰를 통해 더 나은 개발자로 성장하자!

'개발일기 > TIL(Since24.04.19)' 카테고리의 다른 글

SOLID 원칙  (1) 2025.06.12
WebSocket을 통한 실시간 데이터 통신  (0) 2025.05.17
CRLF vs LF 문제  (0) 2025.05.07
Kotiln 공부하기  (1) 2025.04.26
ES 조건 별 검색하는방식 Must, Filter  (0) 2025.04.22