인지적 부채(Cognitive Debt)를 이미 해결한 6가지 산업
요약
AI가 생성하는 코드의 속도가 인간의 이해 속도를 앞지르며 발생하는 '인지적 부채' 문제를 다룹니다. 원자력 발전소의 사례를 통해 개별 변수가 아닌 시스템의 불변량(invariants)을 모니터링하는 방식으로 패러다임을 전환해야 함을 제안합니다.
핵심 포인트
- AI로 인한 코드 생성 속도와 인간의 이해도 사이의 격차 발생
- 원자력 산업의 '운영 범위(operating envelope)' 모니터링 방식 차용
- 코드 자체를 이해하기보다 시스템 불변량(invariants) 검증에 집중
- 개발자의 역할이 코드 해석에서 속성 검증으로 전환되어야 함
소프트웨어 엔지니어링은 인지적 부채(Cognitive Debt)와 사투를 벌이고 있습니다. 이는 AI가 인간이 흡수할 수 있는 속도보다 더 빠르게 코드를 생성함에 따라 가속화되는 공유된 이해(shared understanding)의 상실을 의미합니다. 이러한 모순이 새롭게 느껴질 수도 있지만, 사실 그렇지 않습니다.
다른 6개의 분야 또한 동일한 구조적 모순에 직면했었으며, 종종 실패가 곧 죽음을 의미하는 상황에 놓여 있었습니다. 각 분야는 해결책을 찾아냈습니다. 그리고 그 해결책 중 어느 것도 속도를 늦추는 방식은 아니었습니다.
1. 속도-이해 격차 (The Velocity-Comprehension Gap)
소프트웨어의 모순: AI는 인간이 이해할 수 있는 속도보다 더 빠르게 코드를 생성합니다. 속도는 올라가지만, 이해도는 떨어집니다.
극단적인 사례: 원자력 발전소 운영
원자력 발전소의 상태는 운영자가 추적할 수 있는 것보다 더 빠르게 변합니다. 중성자 속(Neutron flux), 냉각재 온도, 압력, 제어봉 위치 등 수십 개의 변수가 지속적으로 변화하며 비선형적으로 상호작용합니다. 시스템의 상태 공간(state space)은 방대하며, 오해로 인한 결과는 재앙적입니다.
초기 원자로 운영은 제동 방식(braking approach)을 시도했습니다. 프로세스의 속도를 늦추고, 더 많은 운영자를 투입하며, 더 많은 감독을 요구하는 방식입니다. 쓰리마일 섬(Three Mile Island, 1979) 사고는 더 많은 운영자가 더 많은 계기판을 감시한다고 해서 오해를 방지할 수 없다는 것을 증명했습니다. 오히려 오해를 증폭시켰습니다. 운영자들은 시스템의 속성(system properties) 대신 개별 변수들을 추적하고 있었기 때문에 몇 시간 동안 원자로의 상태를 잘못 해석했습니다.
원자력 산업이 이를 해결한 방법
이 산업은 **메커니즘을 모니터링하는 것(monitoring mechanism)**에서 운영 범위(operating envelope)를 모니터링하는 것으로 전환했습니다. 운영자들은 원자로가 매 순간 어떻게 작동하는지를 추적하지 않습니다. 대신 원자로가 정의된 범위 내에 머물고 있는지를 확인합니다. 발전소의 기술 사양(Technical Specifications)과 운영 허가증이 법적으로 구속력을 갖는 경계값들이 있습니다. 예를 들어 온도는 X 미만, 압력은 Y 미만, 중성자 속은 Z 대역 이내여야 합니다. 이들은 'Tech Specs'라고 불립니다. 소프트웨어 엔지니어라면 이를 불변량(invariants)이라고 부를 것입니다. 두 개념은 동일합니다. 만약 어떤 제한 사항이라도 위반되면 보호 시스템이 자동으로 작동합니다. 운영자의 역할은 _원자로의 상태를 이해하는 것_에서 _원자로가 불변량(invariants)을 충족하는지 확인하는 것_으로 전환되었습니다.
운영 범위(operating envelope)는 작고, 안정적이며, 이해 가능한 산물입니다. 원자로의 역학(dynamics)은 방대하고, 빠르며, 실시간으로는 이해할 수 없습니다. 이해의 규모는 역학이 아니라 운영 범위에 따라 결정됩니다.
전이 (The carry-over)
원자로의 상태를 코드베이스의 상태로 대체하십시오. 운영 범위를 시스템 불변량(system invariants)으로 대체하십시오. 개발자의 업무는 _AI가 생성한 코드가 무엇을 하는지 이해하는 것_에서 _코드가 선언된 속성(properties)을 충족하는지 검증하는 것_으로 전환됩니다. 속성은 작고, 안정적이며, 사람이 읽을 수 있습니다. 코드는 방대하고, 빠르게 변하며, 점점 더 AI에 의해 생성됩니다. 이해의 규모는 코드가 아니라 속성에 따라 결정됩니다.
2. 정신적 고투의 우회 (Bypass of the Mental Struggle)
소프트웨어의 모순: AI는 즉각적으로 해결책을 제공하므로, 개발자들은 깊은 이해를 구축하는 문제 해결 과정을 건너뛰게 됩니다.
극단적인 사례: 의료 진단 (Medical diagnostics)
이제 AI는 영상에서 특정 병리학적 상태를 감지하는 데 있어 영상의학 전문의보다 뛰어난 성능을 보입니다. 진단을 위해 AI에 의존하는 의대생은 수천 개의 스캔 영상을 보고, 실수를 저지르고, 고투를 통해 패턴 인식 능력을 쌓으며 얻게 되는 임상적 판단력을 결코 기를 수 없습니다. 효율성 향상(더 빠르고 정확한 진단)이 학습 과정(어려움을 통한 내재화)을 직접적으로 저해하는 것입니다.
의료 교육은 소프트웨어보다 10년 앞서 이 모순에 직면했습니다. 만약 AI가 전공의보다 진단을 더 잘한다면, 왜 전공의가 진단을 해야 할까요?
의료계가 이를 해결한 방법
의료 교육은 고투(struggle)를 없애지 않았습니다. 대신 그것을 **재지정(redirected)**했습니다. 학습 목표가 _진단을 내리는 법을 배우는 것_에서 _진단이 옳은지 평가하는 법을 배우는 것_으로 전환되었습니다. 이제 전공의들은 AI의 출력값을 평가하는 법을 배웁니다. 이 진단이 환자의 병력과 일치하는가? 신뢰도 점수(confidence score)가 영상 소견과 일치하는가? 무엇이 진단을 바꿀 수 있는가? 와 같은 질문들 말입니다.
그 투쟁은 한 단계 더 높은 추상화 수준으로 이동했습니다. 생산 기술(정답을 찾는 것)은 자동화되었습니다. 평가 기술(정답을 판단하는 것)은 보존되었고 더욱 심화되었습니다. 평가에는 정답이 당신에게 주어지더라도 해당 도메인 — 병리학, 환자의 맥락, 감별 진단 (differential diagnosis) — 에 대한 이해가 필요합니다.
체스 역시 동일한 궤적을 따랐습니다. AI는 그 어떤 그랜드마스터보다 더 뛰어난 경기를 펼칩니다. 그렇다고 체스 교육이 사라지지는 않았습니다. 교육의 초점이 최선의 수를 찾는 법을 배우는 것(탐색, 자동화 가능)에서 포지션을 평가하는 법을 배우는 것(판단, 자동화 불가능)으로 이동했을 뿐입니다. 평가 기술은 탐색 기술보다 더 지속 가능하며 더 전이 가능(transferable)합니다.
전이 (The carry-over)
개발자의 고민은 "이것을 어떻게 구현할 것인가?"(생산, 이제 자동화 가능)가 되어서는 안 됩니다. 대신 "이 구현이 우리의 맥락에 적합한가?"(평가, 자동화 불가능)가 되어야 합니다. 평가는 도메인 제약 조건, 아키텍처의 근거(architectural rationale), 실패 모드(failure modes)에 대한 이해를 요구하며, 이는 바로 인지적 부채(cognitive debt)가 갉아먹는 요소들과 정확히 일치합니다. 투쟁의 방향을 생산에서 평가로 재설정함으로써, AI의 속도로 구현을 수용하는 동시에 멘탈 모델(mental model)을 보존할 수 있습니다.
개발자는 명세(specification)를 작성하며(투쟁의 보존 — "무엇이 참이어야 하는가?"), AI가 생성한 구현이 그 명세에 부합하는지 평가합니다(판단의 보존 — "이것이 반드시 참이어야 하는 조건을 충족하는가?"). 명세는 외재화된 멘탈 모델입니다.
3. 의도성의 상실 — '왜(Why)'의 간극
소프트웨어의 모순: AI는 전략적 의도가 아니라 패턴을 기반으로 코드를 생성합니다. 결정 뒤에 숨겨진 '왜(why)'는 기록되지 않는데, 그 이유는 어떤 인간도 구현에 대해 숙고(deliberate)하지 않았기 때문입니다.
극단적인 사례: 법률 시스템
서면 의견(written opinion) 없이 법원이 판결을 내리는 법률 시스템을 상상해 보십시오. 유죄. 무죄. 근거도 없고, 판례도 없으며, 어떤 법이 적용되었는지 또는 증거가 어떻게 평가되었는지에 대한 설명도 없습니다. 미래의 법원은 일관된 판결을 내릴 근거를 갖지 못할 것입니다. 시스템은 기능적일 것이지만(판결은 내려지겠지만), 비논리적일 것입니다(아무도 그 이유를 알 수 없기 때문입니다).
이는 가설이 아닙니다. 초기 법률 시스템은 이런 방식으로 작동했으며, 자체적인 비일관성으로 인해 붕괴했습니다. 그 해결책은 인류 문명의 가장 오래된 지적 기술 중 하나입니다.
법이 이를 해결한 방법
영미법(common-law) 체계의 모든 사법 결정에는 반드시 **서면 의견 (written opinion)**이 포함되어야 합니다. 즉, 법원의 추론, 적용 가능한 판례, 기각된 논거, 사실관계에 적용된 법률 해석 등이 포함되어야 합니다. 법은 판결이 아니라 의견입니다. 미래의 법원은 결론이 아니라 그 추론을 적용합니다.
의견은 일급 산출물(first-class artifact)입니다. 이는 출판되고, 검색 가능하며, 인용할 수 있고, 논쟁의 대상이 됩니다. 판사의 은퇴 이후에도 살아남으며, 법원이 해산된 후에도 살아남습니다. '왜(why)'는 구전 전통이나 기억이 아니라, 공식적인 지위를 가진 문서입니다.
전이되는 원리
아키텍처 결정에는 판결뿐만 아니라 의견이 필요합니다. "REST 대신 gRPC를 선택했다"는 판결입니다. 반면, "위협 모델(threat model)이 상호 TLS(mutual TLS)를 요구하는 네트워크 수준의 적대자를 가정하고 있으며, gRPC의 네이티브 상호 TLS 지원이 REST의 헤더 기반 토큰 모델에 비해 인증 구현 표면(implementation surface)을 줄여주기 때문에 REST 대신 gRPC를 선택했다"는 의견입니다.
의견은 근거(rationale)와 함께 제약 사항(constraint)으로 기록됩니다. 제약 사항은 '무엇(what)'(상호 TLS 필요)을 포착하고, 근거는 '왜(why)'(위협 모델이 네트워크 수준의 적대자를 가정함)를 포착합니다. 둘 다 버전 관리(version-controlled)가 됩니다. 둘 다 팀의 인력 교체(turnover) 속에서도 살아남습니다. '왜'는 기억이 아니라 파일입니다.
AI가 코드를 생성할 때, 그것은 판결(verdict, 즉 구현체)을 생성합니다. 의견(opinion, 즉 근거)은 사후적인 생각이 아니라, 코드 생성의 입력값으로서 판결 이전에 존재해야 합니다. 근거(rationale)에 대한 제약은 소프트웨어 아키텍처에서의 법적 의견(legal opinion)과 동일합니다.
4. 분산된 인지적 파편화 (Distributed Cognitive Fragmentation)
소프트웨어의 모순: 여러 AI 에이전트가 코드베이스의 서로 다른 부분을 동시에 건드립니다. 시스템 이론이 산산조각 납니다. 그 구성 요소들이 어떻게 상호작용하는지에 대해 일관된 관점을 가진 인간은 단 한 명도 없습니다.
극단적인 사례: 국제 우주 정거장 (ISS)
ISS는 15개국에 걸친 5개의 우주 기관에 의해 설계되고 구축되었습니다. 모듈들은 서로 다른 대륙에서, 서로 다른 표준을 사용하여, 서로 다른 언어로 수십 년에 걸쳐 엔지니어링되었습니다. 단 한 명의 엔지니어 — 심지어 단 하나의 기관조차도 — 정거장 전체를 이해하지 못했습니다.
만약 ISS가 어떤 한 정신의 총체적 이해(holistic understanding)에 의존했다면, 그것은 결코 건설되지 못했을 것입니다. 첫 번째 모듈이 발사되기도 전에 복잡성은 인간의 인지 능력(cognitive capacity)을 넘어섰습니다.
항공우주 분야가 이를 해결한 방법
인터페이스 제어 문서 (Interface Control Documents, ICDs). 모든 모듈은 인터페이스에 대한 공식적인 사양(specification)을 가집니다. 즉, 무엇을 제공하는지(전력 출력, 데이터 형식, 구조적 하중 용량), 무엇을 요구하는지(냉각 용량, 데이터 대역폭, 장착 지점), 그리고 무엇을 보장하는지(진동 허용치, 열 범위, 고장 모드)를 명시합니다.
모듈들은 서로를 이해할 필요가 없습니다. 그들은 인터페이스 계약(interface contracts)을 충족하기만 하면 됩니다. 정거장이 일관성을 유지하는 이유는 계약들이 결합(compose)되기 때문이지, 어떤 정신이 전체 그림을 파악하고 있기 때문이 아닙니다.
인터넷도 같은 방식으로 작동합니다. 아무도 인터넷 전체를 이해하지 못합니다. 일관성은 프로토콜 사양(protocol specifications, RFCs)에서 나옵니다. 각 구현자는 자신의 계층(layer)에 대한 계약을 이해합니다. TCP는 HTTP에 대해 알지 못합니다. HTTP는 당신의 애플리케이션에 대해 알지 못합니다. 각 계층은 자신의 사양을 충족합니다. 시스템은 결합됩니다.
전이 (The carry-over)
소프트웨어 시스템에는 총체적인 이해(holistic understanding)가 아닌 ICD(Interface Control Documents, 인터페이스 제어 문서)가 필요합니다. 여러 AI 에이전트가 동시에 서로 다른 모듈을 수정할 때, 일관성(coherence)은 모든 수정을 이해하는 인간으로부터 오는 것이 아니라, 각 수정 사항이 반드시 충족해야 하는 인터페이스 계약(interface contracts)으로부터 나옵니다.
각 모듈은 계약을 가집니다: 무엇을 제공하는지, 무엇을 요구하는지, 무엇을 보장하는지 말입니다. 모듈 내에서 AI가 생성한 변경 사항은 해당 모듈의 계약에 따라 자동으로 검증됩니다. 모듈 간의 변경 사항은 영향을 받는 모듈들 사이의 인터페이스 계약을 통해 검증됩니다. 여기서 공유된 이론은 공유된 이해가 아니라, 공유된 계약 저장소(contract repository)입니다.
패러다임의 전환: "전체 시스템을 이해하는 누군가가 필요하다"(규모가 커지면 불가능하며, 취약하고, 인력 교체 시 유지되지 않음)에서 "올바르게 구성되는 계약이 필요하다"(확장 가능하며, 내구성이 있고, 기계로 검증 가능함)로의 전환입니다.
5. 보이지 않는 조정 오버헤드 (Invisible Coordination Overhead)
소프트웨어의 모순: 더 많은 AI 에이전트는 더 많은 보이지 않는 결정(invisible decisions)을 의미합니다. 각각의 보이지 않는 결정은 인간이 알아야 하지만 알지 못하는 정보이며, 이는 팀을 마비시키는 미지의 미지(unknown unknowns)를 만들어냅니다.
극단적인 사례: 군사 작전
제병 협동(combined-arms) 군사 작전에는 수백 개의 부대가 동시에 행동하는 과정이 포함됩니다. 각 부대는 매 분마다 어디로 이동할지, 무엇과 교전할지, 언제 대기할지 등의 결정을 내립니다. 각 결정은 인접한 부대에 영향을 미칩니다. 아군 보병이 동일한 위치로 전진하고 있는 상황에서, 포병 부대가 적군이 점유하고 있다고 믿는 위치에 사격을 가하면 아군 오사(fratricide)가 발생합니다. 사격 결정은 국지적으로는 합리적이었으나, 전체적으로는 재앙적이었습니다.
군사 작전에서의 보이지 않는 결정 문제는 인명 피해로 측정됩니다. 이를 해결하기 위한 브레이크 방식 — 모든 부대가 모든 결정을 본부에 승인받도록 하는 것 — 은 중앙 집중식 지휘(centralized command)라고 불립니다. 이 방식은 시도되었던 모든 주요 분쟁에서 통신 오버헤드(communication overhead)가 사건의 속도를 초과했기 때문에 처참하게 실패했습니다.
군대가 이를 해결한 방법
지휘관의 의도 (Commander's Intent). 교리에 따르면, 지휘관은 구체적인 행동이 아니라 원하는 최종 상태 (end state)를 전달합니다. "06:00까지 다리를 점령하고 적의 도하를 차단하라"가 바로 의도입니다. 각 하급 부대는 그 행동이 의도에 부합하는 한 스스로의 행동을 선택합니다.
의사결정은 여전히 본부(headquarters)의 눈에 보이지 않습니다. 하지만 그 결정들은 경계가 정해져 있습니다. 모든 결정은 반드시 지휘관의 의도를 충족해야 합니다. 지역적 상황과 관계없이, 지휘관의 의도를 위반하는 국지적으로 합리적인 (locally rational) 결정을 내리는 부대는 잘못된 것입니다. 의도가 바로 제약 조건 (constraint)입니다. 의사결정은 그 제약 조건 안에서 자유롭습니다.
금융 거래 (Financial trading) 또한 동일한 패턴을 따릅니다. 알고리즘 트레이딩 (Algorithmic trading) 시스템은 초당 수천 개의 보이지 않는 결정을 내립니다. 해결책은 모든 결정을 가시화하는 것이 아닙 (그 속도에서는 불가능합니다). 대신 리스크 한도 (risk limits)와 서킷 브레이커 (circuit breakers)를 정의하는 것입니다. 즉, 포지션 규모가 X 미만이고, 일일 손실이 Y 미만이며, 섹터 집중도가 Z 미만으로 유지되는 한 트레이딩 알고리즘은 무엇이든 할 수 있습니다. 위반 사항이 발생하면 자동으로 중단됩니다.
전이 (The carry-over)
코드베이스 (codebase) 내의 AI 에이전트 (AI agents)에게 필요한 것은 중앙 집중식 검토 (centralized review)가 아니라 지휘관의 의도입니다. 의도는 아키텍처 제약 조건 (architectural constraints)으로 표현됩니다: "모든 서비스 간 통신은 상호 TLS (mutual TLS)를 사용한다", "재시도 (retries)는 최대 5회로 제한된 지수 백오프 (exponential backoff)를 사용한다", "어떤 모듈도 상위 레이어 (upstream layer)로부터 임포트 (import)할 수 없다"와 같은 식입니다. 각 제약 조건은 하나의 아키텍처 차원에 대한 지휘관의 의도입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기