훌륭한 주니어를 육성하기: AI가 지식에 대해 오해하고 있는 점과 그것이 다음 세대에 의미하는 바
요약
AI 어시스턴트가 결과물만 제공하고 추론 과정을 생략함으로써, 전문가의 '암묵적 지식(tacit knowledge)'이 전수되지 못하는 위기를 다룹니다. 숙련된 개발자의 경험과 맥락에 기반한 패턴 인식은 데이터로 기록되지 않기에 AI가 복제할 수 없으며, 이는 주니어 개발자의 성장에 심각한 결함을 초래할 수 있습니다.
핵심 포인트
- 전문가의 지식은 기록되지 않은 '암묵적 지식'의 형태로 존재하며, 이는 AI 학습 데이터에 포함되지 않음
- AI 어시스턴트가 '왜'라는 질문을 생략한 채 결과만 제공할 경우, 주니어의 사고 과정과 이해도가 저하됨
- 경험을 통한 정신적 모델(mental model) 구축은 단순한 코드 작성을 넘어 맥락과 냄새를 맡는 능력을 포함함
- AI가 복제할 수 없는 지식의 간극이 코드베이스 내에서 암묵적 지식의 파산을 야기할 수 있음
내 친구인 Jose는 자신이 읽고 있던 기사에 대해 AI 어시스턴트와 나눈 대화 내용을 나에게 보내주었습니다. 그 기사는 Christian Ekrem의 '암묵적 차원 (The Tacit Dimension)'이었습니다. Jose의 관찰은 날카로웠습니다. 그는 기사가 설명하는 것과 똑같은 문제, 즉 추론 과정을 드러내지 않은 채 자신감 있게 결과물만 내놓는 AI 어시스턴트들 때문에 좌절감을 느껴왔던 것입니다. 암묵적인 설계 결정들이 계속해서 암묵적인 상태로 남아있었던 것이죠. 그가 공유해준 대화 내용이 꽤 훌륭했기에, 나는 직접 그 기사를 찾아 읽어보았습니다. 그 기사는 내가 휴대폰을 내려놓게 만들었습니다. 내용이 틀렸기 때문이 아니라, 실재하며 불편한 무언가를 지적하고 있었고, 읽자마자 즉시 내 아들에 대한 생각을 하게 만들었기 때문입니다.
이 기사는 Michael Polanyi의 1966년 주장, 즉 '우리는 말할 수 있는 것보다 더 많은 것을 알 수 있다'는 내용을 바탕으로 합니다. Polanyi의 관찰에 따르면 전문가의 지식은 구조적으로 암묵적 (tacit)입니다. 그것은 신체에, 실무에, 그리고 어떤 일을 수행하며 수년간 축적된 패턴 인식 (pattern-recognition) 속에 존재합니다. 그것을 추출할 수는 없습니다. 그것은 기록된 적이 없기 때문에 모델을 학습시킬 수도 없습니다. 그리고 그것을 가진 사람과 나란히 일하는 것 외에는 전달할 방법이 없습니다.
Ekrem은 이를 AI 보조 소프트웨어 개발에 적용하며 우리가 위기를 향해 몽유병 환자처럼 걸어가고 있다고 주장합니다. 주니어들이 시니어 (senior)가 아닌 AI 어시스턴트에게 도제 교육을 받고 있으며, "왜 이것이 이런 방식으로 작동하는가?"라는 질문들은 말라가고 있고, 팀을 통해 흐르던 암묵적 지식이 코드베이스에서 조용히 파산해가고 있다는 것입니다. 시니어들은 은퇴합니다. 아무도 인증 (auth) 시스템이 왜 그런 방식으로 작동하는지 모릅니다. 코드는 계속 실행됩니다. 이는 논리적으로 잘 구성된 글입니다. 하지만 그 안에는 간극이 존재하며, 그 간극은 흥미로운 지점으로 이어집니다.
논거가 유효한 지점
Ekrem의 가장 강력한 논점은 AI에 관한 것이 아닙니다. 그것은 어떤 지름길이 '행위'와 '이해' 사이의 연결을 끊어버릴 때 발생하는 현상에 관한 것입니다. 그의 예시는 기술적으로는 정확하지만, 오후 내내 머지 (merge)를 거부했던 한 동료의 사례입니다. 테스트는 통과했고, CI는 녹색(green)이었으며, 서류상으로는 모든 것이 완벽했습니다.
그는 계속해서 "난 그냥 이 코드가 믿기지 않아"라고 말했습니다. 작성자와 함께 한 줄씩 코드를 훑어 내려간 지 40분이 지났을 때, 작성자가 무심코 말했습니다. "이건 큐(queue)가 FIFO(First-In-First-Out)라고 가정하고 있는데, 제 생각엔 안전할 것 같아요." 하지만 그렇지 않았습니다. 개발 환경에서는 큐가 FIFO였지만, 운영 환경에서는 '최선 노력 FIFO (best-effort-FIFO)'였습니다. 이 사실은 2년 동안 아무도 읽지 않은 런북(runbook) 속에 파묻혀 있었습니다. 동료는 문서를 읽어서가 아니라, 변경 사항(diff)을 보고 그 냄새를 맡았던 것입니다. 유사한 사례들을 10년 동안 지켜보며 고통이 어디서 발생하는지에 대한 정신적 모델(mental model)을 축적해 온 결과였습니다. 그런 종류의 지식은 어떤 훈련 코퍼스(training corpus)에도 나타나지 않습니다. 왜냐하면 단 한 곳에 기록된 적이 없기 때문입니다. 그것은 항상 경험, 맥락, 그리고 기억 속에 분산되어 있었습니다. AI는 이를 복제할 수 없습니다. 현재의 모델이 너무 제한적이어서가 아니라, 모델이 학습할 수 있는 그 어떤 것에도 해당 지식이 구조적으로 결여되어 있기 때문입니다. 이것이 실제 주장이며, 면밀한 검토를 거쳐도 유효합니다.
내가 반박하는 지점
이 주장은 AI 어시스턴트를 사용할 수 있는 평범한 주니어(median junior)가 이를 사고를 대체하는 수단으로 사용할 것이라고 가정합니다. 솔직히 말하자면? 실제로 많은 이들이 그럴 것입니다. 하지만 그것은 AI에 관한 사실이 아닙니다. 그것은 평범한 주니어의 특성이며, 좋은 멘토링(mentorship)의 부재에 관한 사실입니다. Stack Overflow, Google, 혹은 질문을 던질 때마다 먼저 스스로 생각하게 만들지 않고 친절하게 답해주는 인내심 있는 시니어(senior)를 접하게 된 동일한 주니어 역시 퇴보할 것입니다. 목발의 종류만 다를 뿐, 역학 관계는 동일합니다. 훌륭한 주니어는 AI가 사고를 멈추게 하는 무한한 지식 베이스가 아니라, 이해가 필요한 부분에서 막힌 것을 뚫어주는 도구라는 점을 이해합니다. 여기서 핵심 단어는 '이해한다'입니다. 그 이해는 자동으로 이루어지지 않습니다. 반드시 구축되어야 합니다. 그리고 이것이 이 글이 명시적으로 말하지는 않지만 실제로 지적하고 있는 바입니다. 도제 모델(apprenticeship model)이 실패하는 이유는 AI 때문이 아니라, 아무도 주니어에게 학습하는 법을 가르치지 않기 때문입니다. Ekrem은 한 가지 실패 양상을 '유창성의 가면 (Fluency Mask)'이라고 부릅니다. 즉, 코드에 대한 AI의 언어적 유창성을 코드에 대한 이해로 착각하는 현상입니다. 이는 실제로 존재하는 문제입니다.
하지만 그것은 주의 깊게 살피지 않는 사람에게만 덫이 됩니다. 시니어(Senior)의 역할은 언제나 주니어(Junior)에게 바로 그런 것들을 살피도록 가르치는 것이었습니다. 이해하는 것처럼 느껴지지만 실제로는 아무런 근거도 없는 자신감 넘치는 출력값들. 높은 추천수를 받은 Stack Overflow 답변들. 컴파일은 되지만 잘못된 코드. 명확하게 읽히지만 엉뚱한 것을 설명하는 문서들. AI는 오래된 문제의 새로운 사례일 뿐입니다. 제 아들은 AI가 우리 세대에게 인터넷만큼이나 일상적인(ambient) 세상에서 자라날 것입니다. 그는 AI가 없는 시대를 알지 못할 것입니다. 문제는 그가 AI를 사용할 것인가가 아니라(그는 사용할 것이고, 마땅히 사용해야 합니다), 그가 그것을 잘 사용할 것인가 아니면 나쁘게 사용할 것인가입니다. 제가 그에게 물려주고 싶은 구분법은 간단합니다. AI는 특정 격차(gap)를 해결하기 위한 도구이지, 그 격차가 어디에 있는지 알아내는 판단력(judgment)을 기르는 것을 대체하는 수단이 아니라는 점입니다. 먼저 생각하십시오. 막혔을 때 도움을 요청하십시오. 그리고 얻은 결과물이 무엇인지 이해하십시오. 이 순서를 뒤집는 것이 바로 피해가 발생하는 지점입니다.
근육 키우기
가장 중요한 시기는 그가 AI를 유창하게 사용하기 전인데, 이 시기는 빠르게 줄어들고 있습니다. 제가 그가 발달시키기를 원하는 인지적 능력은 '모른다는 상태에 대한 인내심(tolerance for not-knowing)'입니다. 즉, 즉각적인 해소책을 찾지 않고 해결되지 않은 문제와 함께 머무를 수 있는 능력입니다. 디버깅(debugging), 추론(reasoning), 설계(designing), 그리고 무엇이 잘못되었는지 이름을 붙이기 전에도 무언가 잘못되었다는 것을 느끼는 직관(smell) 등 그 이후의 모든 과정은, 실제로 생각할 수 있을 만큼 충분히 불편함 속에 머무를 수 있는지에 달려 있습니다. 이러한 인내심을 기르는 방법은 설명하는 것이 아닙니다. 그를 구해주지 않는 것입니다. 그가 막혔을 때, 해결해주고 싶은 유혹이 들 것입니다. 그것을 저항하십시오. 그가 막혀 있는 상태에 함께 앉아 있으십시오. 문제를 해결하지 않으면서 문제를 가리키는 질문을 던지십시오. 그가 마찰(friction)을 느끼게 하십시오. 그 불편함이 바로 운동입니다. 그것을 건너뛰는 것은 운동 횟수(rep)를 건너뛰는 것과 같습니다. AI가 등장한 상황에서, 저는 그와 함께 소리 내어 AI를 사용하며, 왜 제가 그것에 의지하는지를 말로 설명하며 사용하고 싶습니다.
"여기서 내가 무엇을 원하는지는 알지만 구문(syntax)을 잊어버렸으니 확인해 봐야겠어"라는 말은, "내가 무엇을 원하는지 아직 모르겠으니, 무엇을 물어보기 전에 먼저 생각을 해봐야겠어"라는 말과는 다릅니다. 그는 이 차이점을, 본능이 되기 전에 자신이 신뢰하는 누군가에 의해 의식적으로 구분하는 모습을 볼 필요가 있습니다. 그가 무언가를 해결하고 나면, 저는 그에게 그것을 다시 설명해 달라고 요청하고 싶습니다. 시험으로서가 아니라, 진정한 호기심으로서 말입니다. 설명하는 행위는 그가 실제로 이해한 것과 단순히 패턴 매칭(pattern-matching)한 것을 구분하여 공고히 하도록 강제합니다. 그 과정에서 공백이 즉각적으로 드러납니다. 그는 무언가를 말하다가 왜 그렇게 작동하는지 실제로 알지 못하기 때문에 잠시 멈출 것입니다. 그 멈춤이 바로 핵심입니다. 그 공백을 자신감 있어 보이는 말로 덮어버리는 것이 아니라, 공백으로 인식하는 것이 제가 그에게 길러주고 싶은 습관입니다.
진정한 도제 제도 (The Actual Apprenticeship)
이 모든 것의 가장 직접적인 버전은 가장 단순합니다. 제가 문제, 코드 조각, 혹은 결정을 내리며 무언가를 해결해 나갈 때, 가끔은 그가 지켜보게 하는 것입니다. 도메인 지식을 가르치기 위해서가 아니라, 사고(thinking)가 어떻게 이루어지는지를 보여주기 위해서입니다. 잘못된 시작들, "음, 이건 맞지 않네"라고 말하는 순간들, 그리고 무언가 깨달음이 오는 순간들 말입니다. 대부분의 아이들은 어른들이 고군투쟁을 숨기기 때문에, 어른이 어려운 문제와 진정으로 씨름하는 모습을 결코 보지 못합니다. 저의 불확실성을 포함하여 그 고군분투를 보여주는 것이 아마도 제가 할 수 있는 가장 가치 있는 일일 것입니다.
위협은 AI가 아닙니다. 위협은 도제 모델의 느린 작업을 기꺼이 수행하려는 사람들의 부재입니다. 즉, 주니어들이 자신의 사고 과정을 지켜보게 하고, "이유는 모르겠지만 나를 믿어봐"라는 말에 반론을 제기하며, 페어 프로그래밍(pair)과 리뷰(review), 그리고 설명을 수행하는 사람들 말입니다. AI는 지름길을 더 이용하기 쉽고 더 매혹적으로 만듭니다. 하지만 지름길은 언제나 존재해 왔습니다. 문제는 누군가가 당신에게 더 긴 길을 가도록 만들 만큼 충분히 신경을 써주느냐 하는 것이었습니다. 제 아들에게 있어, 그것이 저의 역할입니다. 그를 AI로부터 멀리 떨어뜨려 놓는 것이 아니라(그 배는 이미 떠났고 목적지는 괜찮습니다), 그가 먼저 긴 길에서 충분한 반복(reps)을 경험하여 그 길이 어떤 느낌인지, 그리고 왜 걸어갈 가치가 있는지를 알게 하는 것입니다.
그것을 깨닫는 아이들이야말로 다음 세대의 팀들이 간절히 필요로 하는 인재가 될 것입니다. Christian Ekrem의 "The Tacit Dimension"과, 적절하게도 제가 기대했던 것보다 더 유용했던 AI 어시스턴트와의 대화에서 영감을 받았습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기