← 프리뷰 목록으로

왜 학교는 디버깅을 가르치지 않는가?

게시일: 2025년 11월 22일 | 원문 작성일: 2021년 11월 15일 | 저자: Dan Luu | 원문 보기

요약

  • 공학 교육은 체계적 디버깅 방법을 안 가르쳐서 학생들이 실패하도록 설계된 구조예요
  • 어려운 과목에서 낙제하는 학생들 대부분은 머리가 나빠서가 아니라 방법을 몰라서예요
  • 학교의 ‘살아남기’ 방식은 학생의 잠재력과 교육 자원을 낭비하는 거예요

문제: 방법을 모르는 차이

대학 시절, Dan Luu는 디지털 설계 과목을 들었어요. 프로젝트는 복잡한 디지털 회로를 만드는 거였죠 (NAND 게이트 → 복잡한 시스템). 그의 접근법:

  • 회로 다이어그램을 본다
  • 모든 신호 경로를 머릿속으로 추적하려고 한다
  • 하나도 안 된다

결과: 몇 주 동안 막혀서 거의 낙제할 뻔했어요.

돌파구

어느 날 그는 깨달았어요:

  • 서브 회로를 따로 테스트할 수 있다
  • 전체 시스템을 한 번에 이해할 필요가 없다
  • 각 부품이 제대로 작동하는지 하나씩 확인할 수 있다
  • 그런 다음 검증된 부품들을 합친다

이게 전부를 바꿔놨어요. 갑자기 프로젝트가 할 만해졌죠.

패턴 발견

나중에 Dan Luu는 여러 대학에서 비슷한 과목의 조교가 되었어요. 그는 똑같은 패턴을 계속 봤죠:

잘하는 학생들 고생하는 학생들
자연스럽게 체계적 디버깅을 써요 머릿속으로만 다 이해하려고 해요
부품을 나눠서 테스트해요 복잡해서 손도 못 대요
도구를 써서 실제 동작을 봐요 엄청 오래 걸리거나 포기해요
쉽게 해내요 못하는 학생으로 찍혀요

핵심 통찰: 차이는 머리가 아니라 방법이었어요.

학교가 디버깅을 가르치지 않는 이유

1. 교수진이 비공식적으로 배웠다

  • 교수들이 혼자 터득한 거예요
  • 가르쳐야 할 스킬이라고 생각 안 해요
  • “상식”이나 “당연한 거”로 여겨요

2. “도태 과목” 문화

  • 일부 교수들은 이런 고생이 사람을 키운다고 봐요
  • “이것도 못 알아내면 엔지니어 할 자격 없어”
  • 구닥다리 교육 철학이죠

3. 교육학적 초점 부족

  • 공대는 이론과 원리만 가르쳐요
  • 실제 문제 푸는 방법은 잘 안 가르쳐요
  • 디버깅은 “기술”이지 학문 과목이 아니라고 생각해요

4. 숨겨진 교육과정

  • 학생들이 알아서 배울 거라는 가정이에요
  • 일부 학생은 실제로 알아내니까요
  • 그 학생들(그리고 그런 학생이었던 교수들)한테는 이 문제가 안 보여요

체계적 디버깅 방법론 (가르쳐야 할 것)

1. 분해 (Decomposition)

  • 복잡한 시스템을 부품으로 나누기
  • 각 부품을 따로따로 테스트하기
  • 합치기 전에 각 부품을 따로 검증하기

2. 머리로만 생각하지 말고 관찰하기

  • 도구를 써서 실제로 무슨 일이 일어나는지 확인하기
  • 추측만 하지 말고, 측정하고 관찰하기
  • 가정이 아니라 실제 증거로 이해하기

3. 가설 검증

  • 뭐가 잘못됐을지 구체적으로 생각해보기
  • 그 생각이 맞는지 틀린지 테스트하기
  • 체계적으로 가능성 하나씩 지우기

4. 재현

  • 문제를 다시 만들어낼 수 있는 최소한의 테스트 만들기
  • 관련 없는 복잡한 부분 빼기
  • 진짜 문제만 추려내기

5. 도구 사용

  • 디버거, 로거, 추적 도구
  • 오실로스코프 (하드웨어), 프린트문 (소프트웨어)
  • 안 보이는 걸 보이게 만드는 거라면 뭐든지

더 넓은 시사점

공학을 넘어서

이런 패턴이 여러 분야에서 똑같이 나타나요:

  • 글쓰기: 학생들한테 체계적으로 고치는 법을 안 가르쳐요
  • 연구: 학생들한테 체계적으로 논문 찾는 법을 안 가르쳐요
  • 수학: 학생들한테 문제 푸는 요령을 안 가르쳐요
  • 비즈니스: 학생들한테 체계적으로 결정하는 법을 안 가르쳐요

핵심 문제: 내용 지식과 방법 지식을 혼동해요

  • 학교는 무엇을 (사실, 이론, 원리) 가르쳐요
  • 어떻게 (접근법, 방법론, 디버깅 전략)는 안 가르쳐요

접근성 시사점

방법을 모르면 특히 힘든 사람들:

  • 1세대 대학생 (집에서 이런 걸 배울 기회가 없었어요)
  • 교육 환경이 다른 학생들
  • 전에 관련된 취미 활동을 안 해본 학생들
  • 학교가 다 가르쳐줄 거라고 믿는 학생들

특권의 차원: 집에 개발자 부모가 있거나, 멘토가 있거나, 대학 오기 전에 이미 프로그래밍을 많이 해본 학생들은 이미 디버깅 방법을 알고 있어서 불공평한 출발선에서 시작해요.

왜 이것이 중요한가

학생을 위해:

  • 떨어지지 않아도 될 학생이 떨어지는 걸 막아요
  • 자신감이 생겨요 (복잡한 문제를 해결할 수 있다는 걸 알게 돼요)
  • 다른 데서도 쓸 수 있는 스킬이 생겨요 (디버깅 방법론은 분야를 넘나들어요)

교육을 위해:

  • 낭비가 줄어요 (방법을 모른다는 이유로 유능한 학생을 잃지 않아요)
  • 교육이 더 공정해져요 (명시적으로 가르치면 특권의 이점이 줄어요)
  • 더 나은 엔지니어를 키워요 (체계적 디버깅은 전문 기술이에요)

산업을 위해:

  • 실제 엔지니어 일의 상당 부분이 디버깅이에요
  • 체계적으로 접근하는 게 머리 좋은 것보다 중요해요
  • 체계적 접근법을 배운 주니어 엔지니어가 더 생산적이에요

한국 독자를 위한 특별 고려사항

문화적 공감

이 비판이 한국 독자들한테 정말 와닿을 거예요:

1. 한국 교육 시스템: 암기 위주예요

  • 문제 푸는 방법은 잘 안 가르쳐요
  • 학생들이 정확히 이 괴리를 경험해요
  • “도태 과목”이 한국 공대에서 흔해요

2. 학생 자책: 한국 학생들은 떨어지면 자기 탓으로 여기는 경향이 있어요

  • 이 글은 그게 교육 시스템의 문제라고 말해요
  • “당신이 문제가 아니라, 가르침이 문제예요”
  • 진짜 위로가 되는 말이에요

3. 교육 개혁 대화: 한국에서는 교육 개혁 논의가 계속되고 있어요

  • 이 글은 구체적인 비판과 해결책을 제공해요
  • “무엇을” vs. “어떻게” 구분이 한국 교육 토론의 핵심이에요
  • 실용적인 접근(방법론 가르치기)을 제안해요

4. 공정성 문제: 한국도 교육 불평등 문제가 있어요

  • 사교육 (학원) 시스템이 이런 방법을 알려줘요
  • 학원에 못 다니는 학생들은 구조적으로 불리해요
  • 이 글이 제안하는 해결책, 즉 학교가 이런 방법을 직접 가르치는 것이 바로 불평등 해소 방법이에요

실행 가능한 조언

한국 독자들은 이 글에서 다음을 얻을 수 있어요:

  • 자책하지 않기: 당신이 실패한 게 아니라, 가르침을 받지 못한 거예요
  • 구체적인 방법: 체계적 디버깅 접근법 (분해, 관찰, 가설 검증, 도구 사용)
  • 다른 데도 쓸 수 있는 스킬: 공학뿐만 아니라 모든 복잡한 문제 해결에 적용돼요
  • 교육 개선 요구: 학교와 교수님들한테 이런 거 가르쳐달라고 요구할 수 있는 근거

결론

“많은 학생들이 떨어지는 건 머리나 노력이 부족해서가 아니라, 체계적인 방법을 안 가르쳐서예요.” - Dan Luu

이건 교육의 공정성 문제예요. 학교는 다음을 해야 해요:

  1. 무엇을 가르치는 것뿐만 아니라 어떻게를 가르쳐야 해요
  2. 방법을 명확하게 가르쳐야 해요 (숨기지 말고)
  3. 불평등을 줄여야 해요 (모든 학생에게 도구를 제공)
  4. 학생들을 걸러내는 게 아니라 키우는 걸 목표로 해야 해요

오늘부터 적용:

  • 복잡한 문제에 부딪히면, 나눠보세요
  • 머리로만 생각하지 말고, 직접 관찰하고 측정해보세요
  • 하나씩 가능성을 없애나가세요
  • 도구를 써서 안 보이는 걸 보이게 해보세요

저자 소개: Dan Luu는 대규모 분산 시스템 엔지니어이자 기술 작가로, 엔지니어링 문화와 교육에 대한 날카로운 통찰로 유명해요.

참고: 이 글은 Dan Luu가 개인 블로그에 게시한 아티클을 번역하고 요약한 거예요.

원문: Why don’t schools teach debugging? - Dan Luu (2021년 11월 15일)

생성: Claude (Anthropic)

총괄: (디노이저denoiser)