당신의 전문성은 5층 건물입니다. AI가 3층까지만 올라올 수 있는 이유
요약
AI가 생성한 코드의 한계를 분석하며, 인간의 전문성이 발휘되는 5단계 지식 계층 구조를 제시합니다. 단순 구현(Layer 1)을 넘어 도메인 지식과 맥락이 결합된 상위 계층의 중요성을 강조합니다.
핵심 포인트
- AI는 단순 코드 구현(Layer 1)에서 매우 강력한 성능을 보임
- 도메인 특수성과 레거시 인프라 맥락은 AI가 해결하기 어려운 영역임
- 인간의 전문성은 맥락과 예외 케이스를 다루는 상위 계층에 존재함
- AI 시대의 경쟁력은 5층 구조 중 상위 계층을 구축하는 능력에 있음
이 글은 "AI가 생성한 코드를 어떻게 테스트하나요?"라는 순수한 질문에서 시작된 시리즈의 네 번째 글입니다.
첫 번째 포스트는 인식론적(epistemological) 토대를 구축했습니다.
두 번째 포스트는 이를 전략 지도(strategy map)로 전환했습니다.
세 번째 포스트는 5단계 운영 사이클을 제시했습니다.
이 포스트는 프레임워크 자체에 대한 심층 분석 (deep dive) — 즉, 다른 모든 것들이 그 위에 구축되는 5개의 계층(layers)에 관한 것입니다.
두 가지 프롬프트 이야기
프롬프트 1 — 오늘날 어떤 LLM(Large Language Model)에게든 이렇게 입력해 보세요:
고정 금리 모기지(mortgage)의 월 납입금을 계산하는 Python 함수를 작성해줘. 입력값: 원금, 연 이자율, 대출 기간(년). 출력값: 월 납입금.
10초면 충분합니다. 결점 없는 코드입니다. 매번 그렇습니다.
프롬프트 2 — 동일한 LLM에게 이렇게 입력해 보세요:
모기지 계산기를 위한 전체 시스템 아키텍처(system architecture)를 설계해줘. 다음 사항들을 처리할 것: 변동 금리 변경, 부분 중도 상환, 전액 중도 상환, 다중 통화, 은행 API 연동, 세 가지 서로 다른 세금 공제 규칙.
AI는 50페이지 분량의 문서를 만들어낼 것입니다. API 설계, 데이터베이스 스키마(database schemas), 마이크로서비스 아키텍처(microservice architecture), 장애 조치(failover) 전략까지 포함됩니다. 완벽해 보입니다.
하지만 실제 은행에서 일해본 적이 있다면, 문제점을 알고 있을 것입니다: AI는 당신이 어떤 은행과 연동하려 하는지 모릅니다. 그리고 모든 은행은 이자를 계산하는 방식이 다릅니다. 어떤 곳은 1년을 360일로 계산하고, 어떤 곳은 365일로 계산합니다. 어떤 곳은 매일 복리를 적용하고, 어떤 곳은 매달 적용합니다. 어떤 곳은 매월 1일에 금리를 조정하고, 어떤 곳은 계약 기념일에 조정합니다.
AI의 문서는 틀린 것이 아닙니다. 단지 실제 질문에 답하지 못했을 뿐입니다. 왜냐하면 진짜 질문은 "시스템을 어떻게 설계하는가"가 아니기 때문입니다. 진짜 질문은 "이 규제 체제 하에서, 이 레거시 인프라(legacy infrastructure)를 가진, 이 은행을 위해, 이 시스템을 어떻게 설계하는가"입니다.
프롬프트 1과 프롬프트 2의 차이는 계층 1(Layer 1)과 계층 2(Layer 2)의 차이입니다.
계층 1(Layer 1)에서 AI는 무적입니다. 계층 2(Layer 2)에서 AI는 무적처럼 보입니다 — 하지만 5년의 도메인 경험을 가진 누군가가 AI가 놓친 세 가지 예외 케이스(edge cases)를 발견하기 전까지만 말이죠.
하지만 그 위에는 더 많은 것이 있습니다.
5층 건물
여기 프레임워크가 있습니다 — AI로 대체되기 쉬운 순서부터 가장 어려운 순서까지 나열한 인간 지식의 5개 계층입니다:
계층 4: 메타 인지적 창조 (Meta-Cognitive Creation)
존재하지 않는 새로운 프레임워크를 만드는 것
...
각 층을 하나씩 살펴보겠습니다.
계층 1: 응용 지식 (Application Knowledge) — "정답을 아는 것"
이것은 표면입니다. 교과서적 지식. API 문서. Stack Overflow의 추천수가 높은 답변들. 읽는 것만으로 배울 수 있는 것들입니다.
이 영역에서 AI의 성능: 막을 수 없습니다.
GPT-4는 2년 만에 SWE-bench에서 약 5%에서 70% 이상으로 상승했습니다. 구문(syntax), 표준 라이브러리 패턴, 일반적인 디자인 패턴(design patterns)에 있어서 — AI는 이미 중간 수준 엔지니어(mid-level engineer)의 역량을 넘어섰습니다.
AI가 이 계층을 장악한 세 가지 이유:
- 밀도 높은 학습 데이터 (Dense training data) — 인터넷은 API 문서, 일반적인 패턴, 알려진 솔루션으로 가득 차 있습니다.
- 고정된 패턴 (Fixed patterns) — Python의
try/except는 프로젝트마다 바뀌지 않습니다. 리스트를 정렬하는 올바른 방법은 하나입니다. - 명확한 피드백 (Clear feedback) — 코드는 컴파일되거나 되지 않습니다. 테스트는 통과하거나 실패합니다. 이진 신호(Binary signal)입니다.
만약 당신의 전문적 정체성이 "나는 React를 안다" 또는 "나는 AWS를 안다"라면 — 당신은 가라앉는 모래 위에 건물을 짓고 있는 것입니다.
도구를 포기해야 한다는 뜻이 아닙니다. 그것들을 아는 것만으로는 더 이상 충분하지 않기 때문입니다. AI도 그것들을 알고 있습니다. 차이가 있다면 — 만약 존재한다면 — 반드시 다른 계층에 있어야 합니다.
계층 2: 시스템 구축 (System Building) — "올바른 것을 만드는 것"
결합도(Coupling), 응집도(cohesion), 추상화 경계(abstraction boundaries), 장기적인 유지보수 비용, 6개월 동안은 드러나지 않을 기술 부채(technical debt).
이 영역에서 AI의 성능: 그럴듯해 보이는 결과물을 생성하지만, 시스템 자체를 완전히 놓칩니다.
나는 LLM에게 결제 처리 함수를 설계해 달라고 요청했습니다. 모든 단위 테스트(unit test)가 통과했습니다. 아름다운 코드였습니다.
LLM이 미처 질문하지 못한 것들:
- "동일한 주문에 대해 두 개의 관리자 작업이 경합(race)하면 어떻게 되나요?" (동시성(Concurrency) — AI는 싱글 스레드(single-threaded)라고 가정했습니다)
- "취소하기 전에 이미 은행 결제가 완료되었다면 어떻게 하나요?" (단순한 상태 변경이 아니라 환불 프로세스(refund flow)가 필요합니다)
- "스토리지 백엔드(storage backend)가 관계형(relational)인가요, 아니면 이벤트 소싱(event-sourced) 방식인가요?" (이에 따라 전체 아키텍처(architecture)가 바뀝니다)
이것들은 AI가 "배울 수 없는" 것들이 아닙니다. AI는 그것들을 배울 수 있습니다. 다만 그것들이 존재한다는 사실을 모를 뿐입니다. 동시 쓰기(concurrent writes) 상황에서 주문이 불일치 상태(inconsistent state)에 빠져 새벽 3시에 호출되는 페이저(pager) 알람을 받아본 적이 없기 때문입니다.
AI가 이 지점에서 구조적인 사각지대(blind spot)를 갖는 이유:
AI의 학습 데이터는 **정적인 코드 스냅샷(static code snapshots)**입니다. AI는 수백만 개의 git commit을 보았지만, 커밋 이후의 밤을 단 한 번도 살아본 적이 없습니다.
학습 데이터에는 "상태 머신(state machine) 설계를 위한 베스트 프랙티스(best practices)"는 들어 있습니다. 하지만 "이 특정 상태 머신 설계가 어떻게 6개월 후에나 나타날 버그를 유발했는가"에 대한 내용은 없습니다. AI는 명명 규칙(naming conventions), 테스트 커버리지(test coverage), 함수 길이와 같은 좋은 코드의 _통계(statistics)_는 알고 있습니다. 하지만 코드가 어떻게 _부패(rots)_하는지는 모릅니다.
이는 모든 요리책을 읽었지만 정작 요리는 한 번도 해본 적 없는 사람과 같습니다. 그들은 책에 적힌 대로 "소금 세 큰술"이 무엇인지 압니다. 하지만 돼지갈비찜에 넣는 세 큰술과 생선찜에 넣는 세 큰술이 완전히 다른 의미를 갖는다는 것은 모릅니다. 맥락(context)이 의미를 바꾸기 때문입니다.
여러분의 강점은 여러분은 부패해 보았다는 점입니다. 여러분은 결국 자신을 괴롭히게 될 코드를 직접 배포(ship)해 보았습니다. 여러분의 몸은 6개월 전의 버그를 발견했을 때 가슴이 조여오던 느낌을 기억합니다. AI에게는 기억할 몸이 없습니다.
3층: 메타 도메인 지식 (Meta-Domain Knowledge) — "좋은 질문이 무엇인지 아는 것"
이것은 판단(judgment)에 관한 지식입니다. 자신의 답을 언제 믿어야 하는지, 언제 탐색을 멈춰야 하는지, 검증 루프(verification loop)를 어떻게 설계해야 하는지, 그리고 — 가장 결정적으로 — 자신이 무엇을 _모르는지_를 아는 것입니다.
이 지점에서 AI의 성능: 형태를 흉내(mimic) 낼 수는 있지만, 교정(calibrate)할 수는 없습니다.
저는 LLM에게 "이 코드에 대한 보안 검토 체크리스트를 생성해줘"라고 요청했습니다. AI는 SQL 인젝션(SQL injection), XSS, 인증 우회(auth bypass), 입력값 검증(input validation) 등 10가지 항목을 만들어냈습니다. 마치 보안 전문가가 작성한 것처럼 보였습니다.
그다음 저는 이렇게 물었습니다: "이 중 _이 특정 코드베이스(codebase)_에서 실패할 가능성이 가장 높은 것은 무엇인가요?"
AI는 대답할 수 없었습니다. AI는 가능한 실패 모드(failure modes)를 나열할 수는 있습니다. 하지만 "47번 라인이 사용자 입력을 SQL 쿼리에 직접 연결(concatenate)하는 반면, 다른 입력 경로에는 미들웨어 필터링이 있으므로 3번 항목이 여기서 더 위험합니다"라고 말할 수는 없습니다. 그것은 학습 데이터(training data)와 독립적인 판단력을 필요로 합니다.
AI는 학습 데이터와 독립적인 판단을 내릴 수 없습니다. 그것은 트랜스포머(transformer)가 하는 일이 아닙니다. 트랜스포머는 문맥(context)이 주어졌을 때 가장 확률이 높은 다음 토큰(token)을 선택할 뿐입니다. "내가 모르는 것을 바탕으로, 여기서는 답변을 유보해야겠다"라고 말하지 않습니다.
3층의 핵심은 자신이 무엇을 모르는지 아는 것입니다.
AI에게는 "모른다"라는 개념이 없습니다. AI는 모든 답변을 동일한 최대 신뢰도의 유창함(fluency)으로 출력합니다. AI에게 "이 코드에 보안 취약점이 있나요?"라고 물으면 "네, 세 가지가 있습니다"라고 답합니다. "이 코드가 정말로 깨끗한가요?"라고 물으면 "철저한 검토 후에, 완전히 그렇습니다"라고 답합니다. 두 답변 모두 유창합니다. 둘 다 전문적으로 들립니다. 하지만 적어도 하나는 틀렸습니다.
문제는 어느 것이 틀렸는지 당신도 알 수 없고, AI도 알 수 없다는 점입니다.
누군가 "AI가 자신의 출력물을 스스로 검토하게 하자"라고 말할 때마다, 저는 이 격차(gap)를 떠올립니다. 자기 검토(Self-review)를 하려면 정답과 오답을 구별할 수 있어야 합니다. AI는 할 수 없습니다. AI는 단지 동일한 신뢰도를 가진, 서로 모순되는 두 개의 텍스트를 생성할 수 있을 뿐입니다.
당신의 강점은 당신은 이 격차를 느낀다는 것입니다. 왜 그런지 말로 설명하기 전에 찾아오는 "뭔가 이상하다"라는 감각 말입니다. 그것은 논리가 아닙니다. 수백 번의 과거 실패가 신체적 직관(bodily intuition)으로 압축된 것입니다. AI는 단어를 가지고 있습니다. 당신은 단어와 _감각_을 모두 가지고 있습니다.
4층: 메타 인지적 창조 (Meta-Cognitive Creation) — "존재하지 않는 프레임워크를 만드는 것"
이것은 "프레임워크 내에서 문제를 해결하는 것"이 아닙니다. 이것은 프레임워크가 없을 때 프레임워크를 구축하는 것입니다.
역사적 사례:
- Newton는 다른 누구보다 사과가 떨어지는 것을 더 잘 계산한 것이 아닙니다. 그는 "낙하"와 "궤도 운동"을 하나의 수학적 프레임워크 (mathematical framework)로 통합했습니다. 즉, 이전에는 두 개의 별개 현상이었던 것을 하나의 체계로 만든 것입니다.
- Einstein은 시간 지연 (time dilation)을 발견한 것이 아닙니다. Lorentz와 Poincaré가 먼저 그곳에 도달했습니다. 그는 "공간과 시간은 독립적이지 않다. 그것들은 동일한 것의 서로 다른 측면이다"라고 말하며 _프레임워크를 바꿨습니다 (changed the framework).
- Turing은 자동 계산을 꿈꾼 것이 아닙니다. 그는 "계산 (computation)"을 수학적 대상 (mathematical object)으로 변모시켰습니다. 그 이전까지 계산은 사람들이 수행하는 행위였으나, 그 이후로 계산은 Turing machine이 시뮬레이션할 수 있는 모든 프로세스가 되었습니다.
AI가 (아직) 할 수 없는 것:
AlphaGo Zero는 인간의 데이터가 전혀 없는 상태에서 바둑을 처음부터 학습했으며, 인간이 한 번도 본 적 없는 새로운 전략들을 발견했습니다.
하지만 솔직해집시다. "인간의 데이터가 제로"라는 것이 "프레임워크가 제로"라는 의미는 아닙니다. 게임의 규칙은 주어졌습니다 (19×19 판, 번갈아 두는 수, 활로 규칙, 패, 집 계산). 승리 조건도 주어졌습니다 (더 많은 점수를 얻는 쪽이 승리). 탐색 아키텍처 (search architecture)도 주어졌습니다 (Monte Carlo tree search). 하이퍼파라미터 (hyperparameters)도 주어졌습니다 (학습률 (learning rate), 네트워크 아키텍처 (network architecture)). AlphaGo Zero는 이러한 프레임 내에서 최적의 전략을 찾아낸 것입니다. 그것은 규칙에 의문을 제기한 적이 없습니다. 새로운 게임을 발명한 적도 없습니다.
진정한 4층(Layer 4)은 규칙이 없을 때 규칙을 만드는 것입니다. AI는 이를 한 번도 해낸 적이 없습니다.
AI가 이 층에 도달하는 경로에서의 네 가지 병목 현상 (bottlenecks):
-
프레임워크 인식 (Framework awareness) — AI는 자신이 어떤 프레임워크를 사용하고 있는지 모릅니다. 그저 실행할 뿐입니다. 사람은 "베이지안 추론 (Bayesian reasoning)으로 이 문제에 접근해 보겠습니다"라고 말합니다. 즉, 프레임워크를 _선택_하는 것입니다.
-
독창성 대 최적화 (Originality vs. optimization) — 고정된 목적 함수 (objective function) 하에서, 자기 개선 (self-improvement)은 지역 최적점 (local optimum)으로 수렴합니다. 새로운 프레임워크를 만드는 사람 (예: 아인슈타인)은 주어진 목적을 최적화하는 것이 아니라, 목적 그 자체에 의문을 제기합니다.
-
긴 사슬에서의 신용 할당 (Credit assignment over long chains) — 아인슈타인이 특수 상대성 이론에서 일반 상대성 이론에 도달하기까지는 10년이 걸렸습니다. 수천 번의 결정, 수백 번의 막다른 길, 수십 번의 재시작이 있었습니다. 어떤 결정이 돌파구를 만들었을까요? 그 자신에게조차 이를 할당하는 것은 거의 불가능에 가깝습니다.
-
평가의 무한 퇴행 (Infinite regress of evaluation) — 만약 AI가 자신의 출력을 평가한다면, 평가자를 평가하는 것은 누구입니까? 만약 평가자 또한 자기 개선을 한다면, 우리는 어떻게 성능 저하 (degradation)를 방지할 수 있을까요? 괴델의 불완전성 정리 (Gödel's incompleteness theorem)가 이 질문을 괴롭힙니다. 충분히 복잡한 모든 자기 평가 시스템은 모순적이거나 불완전합니다.
이것들은 "일시적인 공학적 문제"가 아닙니다. 이는 인간 지능과 기계 지능 사이의 가장 깊은 구조적 차이를 가리키고 있을지도 모릅니다. 그것은 연산 능력도, 지식도 아닌, 자신의 프레임에 대한 인식 (awareness of one's own frame) 입니다.
레이어 0: 체화된 접지 (Embodied Grounding) — "당신이 살아온 것"
레이어 0은 다른 모든 것이 놓이는 토대입니다. 이는 두 가지로 나뉘며, 그 차이는 매우 결정적입니다.
레이어 0b: 도구적 체화 (Instrumental Embodiment) — "몸을 갖는 것"
이것은 AI가 얻을 수 있는 영역입니다. 물리적 센서, 액추에이터 (actuators), 물리적 세계로부터의 피드백. 로봇, 체화된 AI (embodied AI), 세계 모델 (world models) 등이 여기에 해당합니다.
[IMG:02] 공장에서 부품을 집어 드는 법을 배우는 모습. 넘어질 뻔한 후 걸음걸이를 조정하는 Optimus. 이전에 본 적 없는 패키지 모양을 다루는 법을 배우는 EVE. 이것들은 실제이며, 빠르게 발전하고 있습니다.
5~10년 안에, 도구적 체화는 설득력 있을 정도로 훌륭해질 것입니다.
물건을 떨어뜨리며 배우는 창고 로봇. 카펫의 가장자리가 시각적으로 모호하다는 것을 기억하는 가정용 로봇. 전문가 수준의 정밀도를 위해 연습하는 수술 로봇.
이러한 시스템들은 물리적 피드백 (physical feedback)을 실제로 가지고 있습니다. 이들은 실제 세계의 실패로부터 실제로 배웁니다.
하지만 물리적 피드백을 갖는 것이 삶을 살아왔다는 것과 같지는 않습니다.
Layer 0a: Native Embodiment (태생적 체화) — "삶을 살아왔다는 것"
이것은 오직 인간의 존재만이 제공하는 것입니다:
신체적 감각 (Somatic sensing) — 왜 그런지 논리적으로 설명하기 전에 "이 코드는 느낌이 안 좋다"라고 말하는 엔지니어. 이것은 신비주의가 아닙니다. 의식적인 사고보다 더 빠르게 패턴 매칭 (pattern-matching)을 학습한 신체의 능력입니다.
잠재의식적 통합 (Subconscious integration) — 샤워할 때의 순간. 문제에 대해 생각하는 것을 멈추면 답이 나타납니다. 당신의 의식적인 마음이 휴식을 취하는 동안 잠재의식은 계속 작동하고 있었던 것입니다. AI에는 목표 함수 (goal function)가 구동하지 않는 상태에서 구조를 재편하는 "오프라인 (offline)" 모드가 없습니다.
인지 구조로서의 필멸성 (Mortality as a cognitive structure) — 당신은 자신이 죽을 것이라는 사실을 압니다. 이것은 슬픈 일이 아닙니다. 이것은 당신이 선택하고, 집중하고, 취향을 발전시키도록 강제하는 구조입니다. 영원히 사는 AI는 선택할 필요가 없습니다. "생산적인 시간이 30년밖에 남지 않았기에 가치 있는 일"이라는 신호는 AI가 내부적으로 결코 생성할 수 없는 것입니다.
사회적 내재성 (Social embeddedness) — 당신은 어떤 동료가 압박 속에서도 탄탄한 코드를 작성하는지 압니다. 새벽 2시에 누구에게 전화해야 할지도 압니다. 누군가의 설계 문서 (design doc)가 틀리는 것에 대한 두려움 때문에 방어적으로 작성되었다는 것도 압니다. 이 중 그 어떤 것도 문서에 들어있지 않습니다. 이것은 오랫동안 인간 공동체 안에 존재함으로써 얻어지는 것입니다.
지도가 움직이고 있다
이러한 계층들은 정체되어 있지 않습니다. AI는 매년 위쪽으로 밀고 올라오고 있습니다:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기