Hacker News

Learning Programming in an Age of LLMs

LLM 시대에 프로그래밍을 배운다는 것 — Mark Seemann이 답한 독자의 편지

AI로 대규모 TypeScript 시스템을 만들었지만 자신의 이해 수준을 넘어선 코드를 갖게 된 비전공자 독자의 편지에, Mark Seemann이 공개 답변을 씁니다. 그는 추상화 계층의 이해, 기초를 체계적으로 배우는 것의 가치, 그리고 LLM에는 '검증 가능한 질문'만 던져야 한다는 자신의 원칙을 이야기합니다.

본문

Mark Seemann(ploeh)이 LLM 시대의 프로그래밍 학습에 대해 질문한 독자의 긴 편지에 공개적으로 답한 글입니다. 편지의 주인공은 CS 전공 배경 없이 LLM의 도움으로 API, PostgreSQL, LLM 파이프라인, 멀티모델 워크플로를 포함하는 꽤 큰 TypeScript/JavaScript 시스템을 만들었습니다. 처음에는 '아이디어와 구현 사이의 거리가 사라진 것'처럼 느껴졌지만, 이를 실제 프로덕션 제품으로 만들려 하자 문제가 드러났습니다. AI로 오류 하나를 고치면 또 다른 오류가 나타나고, 자신이 완전히 이해하지 못하는 동작이 계속 생겼습니다. 그는 '자신의 이해 수준 위에 있는 시스템을 만들었을지 모른다'며, 1년간 제품을 만든 것인지 아니면 제품의 외형을 만든 것인지 불안해합니다.

Seemann의 입장: AI에 대해 아직 결론 내리지 못했지만 부정적 쪽에 기움

Seemann은 자신의 입장을 먼저 밝힙니다. 그는 AI를 아직 판단 보류 중이지만 '싫어하는 쪽으로 기울고 있으며', 그것이 막을 수 없는 흐름일 수 있음도 압니다. LLM이 인상적일 때 오히려 가장 강하게 반감을 느끼며, 최상의 결과를 낼 때는 'Butlerian jihad(듄 세계관의 기계 파괴 운동)에 어디 서명하면 되느냐'는 생각까지 든다고 씁니다. 경제학자 출신으로서 그는 지식 노동자의 30~40% 대량 실업이 경제에 큰 충격을 줄 것이라 보며, '기술 발전은 새 일자리를 만든다'는 반론에도 회의적입니다. 증기기관이나 컴퓨터의 사례에서 새 일자리는 생겼지만 그 일자리는 일자리를 잃은 사람들에게 가지 않았고, 중국의 WTO 가입 때도 새 일자리는 서구가 아닌 다른 곳에 만들어졌다는 것이 근거입니다. 프로그래밍은 검증이 비교적 쉬운 분야라 다른 화이트칼라 직종보다 먼저 대체될 수 있다고도 지적합니다.

오늘 시작한다면 기초를 배울 것인가

'LLM 이전에 프로그래밍을 배워서 다행인가'라는 질문에는 당연히 그렇다고 답합니다. 30년간 그 기술이 밥벌이가 되었기 때문입니다. 하지만 오늘 새로 시작한다면 목공, 금속가공, 총기 제작 같은 손과 눈의 협응이 필요한 일을 진지하게 고려할 것이라고 말합니다. 수동 노동의 대체는 로봇 공학 발전에도 불구하고 더 먼 미래의 일로 보기 때문입니다. 그 자신도 현재 대학 과정으로 자료구조와 언어 의미론을 배우고 있지만, 돈을 벌기 위해서가 아니라 호기심 때문이라고 덧붙입니다.

'AI가 사람의 이해 속도보다 빠르게 만들 능력을 주는가'라는 질문에는 '지켜봐야 한다'고 답하면서, 개발자들은 이미 수십 년간 이해하지 못하는 추상화 위에서 일해왔다고 지적합니다. 웹 개발자는 컴파일러를 모르고, 컴파일러 개발자는 집적회로 설계를 몰랐습니다. 그가 제시하는 경험 법칙은 '자신이 일하는 추상화 계층의 바로 아래와 바로 위를 이해하라'는 것으로, 이것이 대부분의 문제 해결을 가능하게 합니다.

기초가 약한 상태에서 어떻게 할 것인가

그는 이 질문이 자신에게는 해당하지 않는다고 인정합니다. RISC-V 어셈블리로만 작성된 애플리케이션을 유지보수하라는 극단적 상황을 상정해도, 기존 지식을 활용해 적응할 수 있기 때문입니다. 대신 자신이 1999년에 C++로 COM 컴포넌트를 작성하며 '일을 해내면서 동시에 배우는 칼날 위 균형'을 잡던 시절을 떠올립니다. 그는 이해 없이 결과물만 붙여 넣는 것을 견디지 못했고, 결국 물러나서 기초를 체계적으로 배웠습니다. 다만 그 방식이 오늘에도 통할지는 불확실하다고 봅니다. 과거의 자신감이 'Dunning-Kruger 곡선의 무지를 자각하지 못하는 구간'이었음을 깨달을 만큼의 역량에 도달하는 데 수십 년이 걸렸는데, 오늘날 그만한 시간이 주어질지 모르기 때문입니다. LLM으로 질문을 더 직접적으로 할 수 있어 학습이 빨라질 수는 있지만, 병목은 교사나 자료가 아니라 인간의 뇌가 새 지식을 흡수하는 속도이므로 근본적인 가속은 어렵다고 봅니다.

어떻게 배웠고, 오늘날 새 언어를 어떻게 배우는가

그의 첫 프로그래밍은 경제학 석사 논문을 위해 분기 도표와 Lorenz attractor를 계산한 것으로, QBasic과 함께 배송된 예제와 친구의 도움으로 배웠습니다. 1990~2000년대에는 주로 예제와 문서로 배웠고, C#도 문서와 예제 코드만으로 익혔습니다. 반면 F#과 Haskell은 책이 결정적이었다고 밝힙니다. 오늘날 새 언어를 배울 때는 이미 본 언어가 많아 기존 코드를 훑고 모르는 부분만 찾아보는 방식이지만, 이 역시 초보자에게는 쓸모없는 경험이라고 인정합니다.

그는 학습에 LLM을 거의 쓰지 않습니다. 'LLM은 환각(hallucinate)하는 것이 아니라 그냥 아무렇게나 말한다(bullshit)'며 그들의 답변을 깊이 불신하기 때문입니다. 대신 검증 가능한 질문만 던집니다. '이 Haskell 표현을 더 간결하게 만들 수 있나' 같은 질문은 제안된 코드가 동작하는지, 더 짧은지로 바로 검증할 수 있습니다. 반면 '다음에 무엇을 배워야 하나' 같은 질문은 검증 불가능하므로 묻지 않습니다. 그는 이를 'LLM에는 반증 가능한(falsifiable) 질문을 선호한다'로 정리합니다.

Hacker News 반응

  • @Trusteando — 이 질문은 지금 LLM으로 배우는 사람에게도 물어보는 게 더 나을 수 있습니다. 30년 전에 배운 사람은 동전의 한 면만 보여줄 수 있으니, 오늘 처음부터 배우는 사람의 시각과 합치면 전체 그림이 더 잘 보입니다.
  • @sixtyj — 어려움은 기술이 너무 많다는 점입니다. 초보자에게는 원리를 가르쳐 줄 무언가가 필요하고, 단순하고 지루한 것이 더 낫습니다. 예컨대 JS 프레임워크를 헤매는 것보다 단순한 HTML5+CSS 조합이 낫습니다.
  • @lolakutty — HTML은 프로그래밍 언어가 아니며, 브라우저에서 돌아가는 JavaScript도 그다지 흥미롭지 않습니다.
  • @jaapz — 브라우저의 JavaScript는 필요한 모든 것이 이미 설치된 프로그램 안에 있어서 배우기에 훌륭한 도구입니다. 새로 배우려는 사람에게 그런 식의 진정성 논쟁을 하는 것은 이상합니다.
  • @sixtyj — 컴파일부터 하거나 Python 스크립트를 실행하는 것으로 시작하는 게 초보자에게는 너무 무겁습니다. 최근 유행하는 Python도 마찬가지입니다.

원문: ploeh blog / 번역·요약: Trawling