▲GN⁺ 2025-01-14 | parent | ★ favorite | on: 디버깅: 가장 찾기 어려운 문제까지 해결하는 필수 규칙 (2004)(dwheeler.com)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가 실패하고 성공하는지 확인해야 함 디버깅 후에도 작업이 끝난 것이 아님. 각 버그에 대해 세 가지 질문을 해야 함: 이 실수가 다른 곳에도 있는가? 이 버그 뒤에 숨겨진 다음 버그는 무엇인가? 이런 버그를 방지하기 위해 무엇을 해야 하는가? 최소한의 설정으로 문제를 재현하는 것이 중요함. 대부분의 경우 이렇게 하면 버그를 찾을 수 있음. 코드를 반으로 나누어 정확히 어떤 부분이 잘못되었는지 찾는 것이 효과적임
Hacker News 의견
버그가 있는 코드를 수정하려는 유혹은 크지만, 고장 난 코드를 수정하는 것보다 작동하는 코드를 망가뜨리는 것이 더 쉬움. 크리스마스 전구 예시처럼 최소한의 작동 예시로 시작하여 문제를 찾는 것이 효과적임
문제 해결 시 중요한 것은 당황하지 않는 것임. 명확한 사고가 필요하며, 좋은 관리자는 문제 해결에 집중할 수 있도록 지원해 줌
git bisect는 여러 커밋 중 문제를 일으킨 커밋을 찾는 데 유용함. 특히 큰 코드베이스에서 문제를 빠르게 찾을 수 있음시스템을 이해하는 것이 중요하지만, 모든 매뉴얼을 읽는 것은 비현실적임. 실용적인 접근이 필요함
올바른 파일을 올바른 기계에서 편집하는 것이 중요함
문제 해결 사고방식을 기르기 위해 추천하는 책들:
추가 규칙:
CI에 버그를 테스트로 추가하여 회귀를 방지해야 함. 수정 전후로 CI가 실패하고 성공하는지 확인해야 함
디버깅 후에도 작업이 끝난 것이 아님. 각 버그에 대해 세 가지 질문을 해야 함:
최소한의 설정으로 문제를 재현하는 것이 중요함. 대부분의 경우 이렇게 하면 버그를 찾을 수 있음. 코드를 반으로 나누어 정확히 어떤 부분이 잘못되었는지 찾는 것이 효과적임