Hacker News 의견
  • 버그가 있는 코드를 수정하려는 유혹은 크지만, 고장 난 코드를 수정하는 것보다 작동하는 코드를 망가뜨리는 것이 더 쉬움. 크리스마스 전구 예시처럼 최소한의 작동 예시로 시작하여 문제를 찾는 것이 효과적임

  • 문제 해결 시 중요한 것은 당황하지 않는 것임. 명확한 사고가 필요하며, 좋은 관리자는 문제 해결에 집중할 수 있도록 지원해 줌

  • git bisect는 여러 커밋 중 문제를 일으킨 커밋을 찾는 데 유용함. 특히 큰 코드베이스에서 문제를 빠르게 찾을 수 있음

  • 시스템을 이해하는 것이 중요하지만, 모든 매뉴얼을 읽는 것은 비현실적임. 실용적인 접근이 필요함

  • 올바른 파일을 올바른 기계에서 편집하는 것이 중요함

  • 문제 해결 사고방식을 기르기 위해 추천하는 책들:

    • "The Martian" by Andy Weir
    • "Zen and the Art of Motorcycle Maintenance"
    • "The Three-Body Problem"
    • "To Engineer Is Human" by Henry Petroski
    • "Surely You're Joking, Mr. Feynman!"
  • 추가 규칙:

    • "자신의 잘못임을 의심하라". 코드 변경을 먼저 의심해야 함
    • "버그를 찾으면 그와 관련된 다른 문제도 찾아라". 같은 종류의 문제가 다른 곳에서도 발생할 수 있음
    • "사용자와 유지보수 프로그래머를 우선으로 최적화하라"
  • CI에 버그를 테스트로 추가하여 회귀를 방지해야 함. 수정 전후로 CI가 실패하고 성공하는지 확인해야 함

  • 디버깅 후에도 작업이 끝난 것이 아님. 각 버그에 대해 세 가지 질문을 해야 함:

    1. 이 실수가 다른 곳에도 있는가?
    2. 이 버그 뒤에 숨겨진 다음 버그는 무엇인가?
    3. 이런 버그를 방지하기 위해 무엇을 해야 하는가?
  • 최소한의 설정으로 문제를 재현하는 것이 중요함. 대부분의 경우 이렇게 하면 버그를 찾을 수 있음. 코드를 반으로 나누어 정확히 어떤 부분이 잘못되었는지 찾는 것이 효과적임