AI 요약
최근 앤디 윙고(Andy Wingo)의 마스토돈 포스트를 계기로 제럴드 서스먼(Gerald Sussman) 교수의 과거 발언이 다시 주목받고 있습니다. 서스먼 교수는 MIT의 입문용 프로그래밍 코스인 '6.001'이 Scheme 언어를 포기한 이유에 대해, 1980년대의 정교하고 이해 가능한 공학 방식이 현대에 이르러 정체를 알 수 없는 라이브러리를 실험하고 분석하는 '기초 과학'과 같은 방식으로 변했기 때문이라고 설명했습니다. 과거에는 저항기의 오차 범위와 저항값을 읽듯 코드의 모든 동작을 파악할 수 있었으나, 현재는 불완전한 문서와 복잡한 추상화 더미 속에서 코딩이 이루어집니다. 1982년생인 저자는 애플 II(Apple II)와 VIC-20 같은 8비트 시스템으로 시작한 자신의 경험을 투영하며, 시스템의 복잡성이 이해의 속도를 추월해버린 현대 소프트웨어 개발 환경을 비판적으로 고찰합니다. 이는 특히 코딩 에이전트가 확산되는 현재, 개발자가 부품의 원리를 알지 못한 채 결과만 쫓는 현상에 대해 깊은 의문을 던집니다.
핵심 인사이트
- MIT 6.001 과정의 변화: 1980년대에는 작은 부품을 완벽히 이해하고 조합하는 법을 가르쳤으나, 1990년대 중반과 2000년대를 거치며 시스템이 너무 복잡해져 교육 과정의 철학 자체가 변경됨.
- 제럴드 서스먼의 진단: 현대 프로그래밍은 알려진 부품을 조립하는 것이 아니라, 동작 원리를 알 수 없는 외국 라이브러리의 기능을 탐구하는 '기초 과학' 활동에 가까워짐.
- 저자의 배경: 1982년생인 저자는 읽기를 배우자마자 VIC-20과 Apple II에서 BASIC으로 프로그래밍을 시작했으며, 기술의 급격한 복잡화 과정을 직접 겪음.
주요 디테일
- 1980년대 프로그래밍의 특징: 코드가 하드웨어(Metal)에 가깝게 실행되었으며, V=IR 법칙처럼 모든 구성 요소의 사양과 동작을 완전히 이해하고 통제할 수 있었음.
- 현대 개발 환경의 문제: 소프트웨어 스택은 '누설된 추상화(Leaky Abstractions)'의 거대한 더미이며, 작성자를 알 수 없거나 문서화가 전무한 소프트웨어를 다루는 일이 비일비재함.
- 실험적 접근: 현대 프로그래머는 라이브러리에 다양한 입력을 넣어보고 반응을 살피는 실험을 통해 기능을 파악해야 하는 상황에 놓여 있음.
- 코딩 에이전트의 영향: 앤디 윙고는 최근의 AI 코딩 에이전트 시대를 보며, 서스먼이 16년 전 예견했던 '부품 이해의 상실'에 대해 깊은 우려를 표명함.
- 추상화의 한계: 저자는 어린 시절 BASIC 명령어로 시작해 시스템이 이해의 범위를 넘어설 정도로 빠르게 발전했던 과정을 회고하며, 현재의 '블랙박스'식 개발 방식을 지적함.
향후 전망
- AI 코딩 도구의 발전에 따라 '원리를 이해하는 개발'과 '결과만 도출하는 실험적 개발' 사이의 간극이 더욱 벌어질 것이며, 이는 소프트웨어의 안정성과 유지보수성에 영향을 미칠 것임.
- 시스템의 내부 동작을 끝까지 파헤치는 '이해'의 가치가 희소해짐에 따라, 복잡한 추상화 계층을 관통하여 문제를 해결할 수 있는 엔지니어의 중요성이 더욱 강조될 것으로 예상됨.
