4 minute read

“이 기능 어떻게 돌아가는 거예요?”

동료가 무심코 던진 이 한마디에 등줄기에 식은땀이 쫙 흘렀다. (내가 만든 기능인데… 솔직히 1도 모르겠다.) Claude Code가 뚝딱 짜줬고 테스트도 통과했길래 그냥 머지했는데, 코드가 구체적으로 어떻게 도는지 나조차 설명을 못 하는 거다.

최근 r/ClaudeCode에 올라온 개발자 u/cipi1357의 뼈아픈 반성문이 남 일 같지 않았다. AI 덕분에 생산성은 미친 듯이 올랐는데, 정작 내 코드를 이해하는 능력은 처참하게 퇴화하고 있었으니까. 그래서 그가 만든 플러그인이 바로 No-Numb다. AI 코딩에 뇌가 무뎌지는 걸(Numb) 막겠다는 결사 항전이다.

특별한 이야기가 아니다. Claude Code, Cursor, Copilot 같은 AI 코딩 도구를 쓰는 개발자라면 누구나 어렴풋이 느끼고 있는 현실이다. 생산성은 폭발적으로 올랐는데, 정작 내가 쓴 코드를 설명할 수 있는 능력은 점점 줄어들고 있다. 높은 수준의 “무엇을 하는지”는 안다. 하지만 “왜 이 방식을 썼는지”, “이 부분을 바꾸면 무엇이 깨지는지” — 그런 내부 이해는 사라지고 있다. 결정을 내린 건 개발자가 아니라 에이전트이니까.

모든 diff를 읽고, 설명을 요구하고, 주니어의 PR을 리뷰하듯 대하면 된다는 건 안다. 하지만 아무도 그렇게 하지 않는다. 느리니까. AI 코딩의 속도는 중독적이다. 한 번 속도에 맛을 들이면 일일이 확인하는 건 의지만으로는 거의 불가능하다.

u/cipi1357은 의지에 기대는 대신 강제 장치(forcing function)를 만들었다. 이름은 No-Numb. “무뎌지는 것”을 거부하겠다는 뜻이다.

핵심 내용

No-Numb가 작동하는 방식 — “읽었냐”가 아니라 “아느냐”를 묻다

Claude Code 플러그인이다. 설계가 단순하면서도 강력하다.

  1. Stop 훅 트리거 — Claude Code가 코드를 작성하고 세션을 종료하려 하면 No-Numb의 Stop 훅이 발동한다. “감사합니다, 좋은 작업이었습니다” 같은 인사는 없다. 방금 작성된 코드에 대한 객관식 퀴즈가 화면에 나타난다.

  2. 합격 전까지 블록 — 퀴즈를 통과하지 못하면 세션이 다음으로 진행되지 않는다. 오답을 고르면 정답과 해설이 표시되고, 다시 응시한다. 탈출구가 없다. 코드를 이해하지 못하면 앞으로 갈 수 없다.

  3. 두 가지 난이도 모드:
    • 표준(Standard): 개념적 이해를 묻는다. “왜 이 접근 방식을 썼는가?”, “X를 변경하면 무엇이 깨지는가?” — 파일을 열지 않고도 답할 수 있는 수준.
    • 심층(Deep): 실제로 코드를 읽어야 답할 수 있는 질문. 변수명, 제어 흐름, 에러 처리의 구체적 동작을 묻는다.
  4. 스마트 필터링 — 코드를 실제로 수정한 차례에만 퀴즈가 발동한다. 단순한 코멘트 추가나 포맷팅 변경 같은 사소한 작업은 건너뛴다. ~/.no-numb/config.json에 긴급용 끄기 스위치도 있다.

설치는 Claude Code에서 두 명령이면 된다.

/plugin marketplace add Ciucky/no-numb
/plugin install no-numb@no-numb

MIT 라이선스, 완전한 오픈소스. GitHub 저장소는 Ciucky/no-numb에서 확인할 수 있다.

왜 ‘스킬’이 아니라 ‘훅’인가 — 인간의 의지력은 믿을 게 못 된다

No-Numb 설계에서 가장 중요한 결정은 이것을 ‘스킬’이 아니라 ‘훅’으로 만들었다는 점이다. Claude Code에서 ‘스킬’은 무시할 수 있다. 바쁠 때, 피곤할 때, 그냥 넘어가고 싶을 때 스킬을 건너뛰는 건 아무 일도 아니다. 하지만 훅(hook)은 무시할 수 없다. Stop 훅은 시스템 수준에서 실행되며, 개발자가 명시적으로 끄지 않는 이상 항상 작동한다.

행동 심리학의 오래된 통찰과 맞닿아 있다. 인간의 의지력은 한정된 자원이다. 매번 “이번엔 코드를 꼼꼼히 읽어야지”라고 다짐하는 건, 매번 “이번엔 디저트를 안 먹어야지”라고 다짐하는 것만큼 신뢰할 수 없다. 결국 의지력이 고갈되는 순간 속도가 이긴다. 코드 리뷰는 건너뛰고, diff는 스크롤하고, “됐어, 푸시하자”가 된다.

No-Numb는 이 게임의 규칙을 바꾼다. 의지력이 아니라 구조가 당신을 통제한다. 퀴즈를 풀지 않으면 진행할 수 없다는 구조적 제약은 “이번엔 꼭 읽어야지”라는 자기 약속보다 훨씬 신뢰할 수 있다.

개발자도 솔직하게 한계를 인정한다. DRM이 아니다. Esc를 누르거나 설정에서 끌 수 있다. 여전히 약간의 의지력이 필요하다. 하지만 “매번 확인”에서 “가끔 끄기”로 의지력 요구량이 극적으로 줄어든다.

‘시험 효과(Testing Effect)’ — 퀴즈는 세금이 아니라 기능이다

여기서 하나 질문이 생긴다. 퀴즈를 푸는 게 그냥 시간 낭비가 아닌가? 개발 속도만 느려지고, 실질적인 이해는 크게 달라지지 않을 수도 있지 않은가?

인지과학은 수십 년간 이렇게 답해왔다. 아니다. 검색 연습(retrieval practice)과 시험 효과(testing effect)는 입증된 학습 원리다. 정보를 다시 떠올리는 행위 — 퀴즈를 푸는 행위 — 가 단순히 다시 읽는 것보다 기억 정착에 훨씬 효과적이다. 교육학의 상식이지만, 소프트웨어 개발 도구에서는 거의 적용되지 않았다.

No-Numb 개발자가 이걸 정확하게 짚는다. “퀴즈를 받는 건 작업의 밀도를 높이는 기가 막힌 방법이다. 마찰은 세금이 아니라 기능(feature)이다.”

No-Numb가 만드는 마찰은 생산성을 깎아먹는 비용이 아니라 이해도를 높이는 학습 과정 자체다. 코드를 읽고 퀴즈를 푸는 2분은, 나중에 버그를 디버깅할 때 절약되는 30분과 맞바꿀 수 있다. 장기적으로는 더 빠르고 더 안전한 개발로 이어진다.

한계도 있다. 질문 작성과 채점은 전적으로 Claude에 의존한다. 추가 토큰 비용이 발생한다. 그리고 질문의 질이 Claude의 능력에 좌우된다 — “실제 이해를 측정하는 질문”인지 “겉핥기식 암기를 테스트하는 질문”인지는 보장할 수 없다. 개발자도 이 부분에 대해 커뮤니티 피드백을 적극적으로 구하고 있다.

왜 주목할까

No-Numb는 그냥 유용한 플러그인이 아니다. AI 코딩 도구가 만들어낸 구조적 문제에 대한 최초의 진지한 대응이기 때문에 주목할 만하다.

지금 AI 코딩 생태계를 보면 생산성 도구는 넘쳐나는데 ‘이해의 질’을 관리하는 도구는 거의 없다. Claude Code, Cursor, Windsurf, GitHub Copilot — 모두 “더 빨리 코드를 쓰게” 해준다. 하지만 “그 코드를 진짜로 이해하게” 해주는 도구는? No-Numb가 거의 유일하다.

지난 몇 달간 r/ClaudeCode에서는 같은 문제가 반복적으로 등장한다.

  • “에이전트가 작성한 코드를 디버깅하는 게 더 힘들다” — 코드를 이해하지 못하니까
  • “에이전트 SDLC가 테스트 단계를 없앤다고? 오히려 늘었다” — 이해 없는 코드는 버그도 많다
  • “Opus가 Sonnet의 코드를 못 믿겠다” — 멀티모델 환경에서는 인간 이해 부족이 더 치명적

No-Numb는 이 모든 문제의 근원 — “코드를 이해하지 못하는 개발자” — 을 직접 공격한다. 접근 방식이 현실적이다. 인간을 더 똑똑하게 만들겠다는 게 아니라, 모르는 상태로 넘어가지 못하게 막는 것. 단순하지만 지금까지 아무도 하지 않았던 일이다.

더 깊이 생각하면 AI 시대의 새로운 코드 리뷰 패러다임을 시사한다. 전통적인 코드 리뷰는 “다른 사람이 내 코드를 검토하는 것”이었다. AI 코딩 시대에 진짜 필요한 리뷰는 “내가 AI의 코드를 검토하는 것”이다. No-Numb는 그 검토를 강제하는 장치다. 코드 리뷰의 방향이 바뀌는 것이다.

정리: 속도와 이해, 둘 다 가질 수 있을까

AI 코딩 도구의 약속은 “더 빠르게”였다. 그리고 그 약속은 지켜졌다. 문제는 속도의 대가로 이해가 희생되고 있다는 것. No-Numb는 이 트레이드오프에 “꼭 그래야 할까?”라고 묻는다.

접근 방식이 영리하다. AI가 만든 속도를 빼앗지 않으면서 그 속도의 결함을 보완한다. 퀴즈를 푸는 데 2분이 걸려도, AI가 코드를 쓰는 데 1분밖에 안 걸린다면, 전체적으로는 여전히 비교할 수 없을 만큼 빠르다. 그런데 이해도는 훨씬 높다.

r/ClaudeCode 커뮤니티에서 이 게시물이 얼마나 큰 반향을 일으킬지 지켜봐야겠지만, 분명한 건 하나다. AI가 코드를 쓰는 시대에 인간이 해야 할 일은 ‘쓰기’가 아니라 ‘이해하기’다. No-Numb는 그 이해를 구조적으로 강제하는 첫 번째 도구다. 비슷한 접근이 다른 AI 코딩 도구에도 확산된다면, “AI가 짠 코드를 자기도 모르는 개발자”는 더 이상 당연한 현실이 아니라 해결된 과거의 문제가 될 수 있다.


📖 원문: I kept shipping code I couldn’t explain — r/ClaudeCode
🔧 GitHub: Ciucky/no-numb
📅 수집: 2026-06-19 (RSS 기반)