코드를 읽지 않는 시대, 엔지니어는 무엇을 읽어야 하는가
Blog

코드를 읽지 않는 시대, 엔지니어는 무엇을 읽어야 하는가

Tony Cho
2026.02.23
·Web·by 권준호
#Agent#AI#Development#Programming#Software Engineering

핵심 포인트

  • 1Anthropic 연구는 AI 사용 시 학습이 저해될 수 있음을 시사하나, 본문은 AI가 사용자의 역량을 증폭하는 "거울"과 같아 활용 방식에 따라 결과가 극명하게 달라짐을 강조한다.
  • 2엔지니어의 역할은 코드를 직접 읽고 쓰는 것에서 AI 에이전트에게 코드를 맡기고 "스펙" 정의, "하네스 엔지니어링", 아키텍처 분석 등 고차원적인 시스템 관리로 이동하고 있다.
  • 3이 변화 속에서도 시스템 전반에 대한 깊은 이해, 비판적 사고, 그리고 "복리 게임"을 위한 설계 능력은 변치 않는 엔지니어의 핵심 역량이며, AI 시대에 더욱 중요해진다.

이 논문은 AI 시대에 소프트웨어 엔지니어의 역할 변화, 특히 코드를 "읽는" 행위의 중요성에 대해 심도 있게 탐구한다. AI가 코드를 대신 작성하는 능력이 증가함에 따라 엔지니어의 핵심 역량이 무엇으로 이동해야 하는지, 그리고 이 변화 속에서 변하지 않는 본질적 가치는 무엇인지를 논의한다.

1. Anthropic 연구와 AI 활용 패턴 분석
논문은 Anthropic의 연구 결과를 인용하며 시작한다. 이 연구에 따르면 AI 지원을 받아 코딩 과제를 완료한 개발자들은 AI 없이 작업한 개발자들보다 퀴즈 점수가 17% 낮았다. 이는 AI가 과제 완료를 빠르게 돕지만, 새로운 라이브러리의 개념적 이해는 오히려 저해할 수 있음을 시사한다. 저자는 이 연구의 맥락(35분이라는 짧은 과제 시간, 구형 모델 사용 등)을 짚으면서도, 이 연구의 본질은 AI 사용 방식에 따라 학습 결과가 극명하게 갈린다는 점에 있다고 강조한다. 특히, AI에게 코딩을 전적으로 위임하는 방식은 가장 빠르게 과제를 완료했지만 학습 효과는 가장 낮았으며, 개념만 묻고 코드는 직접 짜는 방식("개념적 탐구")이 가장 높은 학습 효과를 보였다. 이는 AI를 "인지적 오프로딩" 도구로 사용하는 것이 학습 감소로 이어진다는 결론을 도출한다.

2. 코드 읽기에서 "하네스 엔지니어링"으로의 전환
Ben Shoemaker의 "In Defense of Not Reading the Code" 글을 인용하며, 저자는 엔지니어의 업무 방식이 코드 한 줄 한 줄을 읽는 것에서 스펙, 테스트, 아키텍처를 읽는 방향으로 변화하고 있음을 주장한다. 이는 코드의 정확성을 자동화된 시스템("하네스", harness)으로 검증하고, 코드 생성은 AI 에이전트에게 맡기는 "하네스 엔지니어링" 접근 방식이다. 저자 자신과 OpenAI의 Codex 팀 또한 코드 자체보다 테스트 하네스, AGENTS.md(AI 에이전트용 컨텍스트 파일), 의존성 규칙, 린터, 테스트 인프라 등 주변 시스템("컨텍스트 레이어") 구축에 더 많은 투자를 하고 있음을 밝힌다. Evan Armstrong은 이러한 변화를 "코드의 상품화(commoditization)"로 설명한다. 즉, 코드 생성은 쉬워졌지만, 프로덕션 환경에서 코드를 "거버닝(governing)"하는 것—무엇이 존재해야 하고, 어떤 데이터에 연결되며, 누가 변경할 수 있는지 아는 것—은 여전히 어렵고 중요해졌다는 것이다. Steve Yegge는 이 변화를 "손 코딩의 시대는 끝났다"고 선언하며, AI 에이전트를 오케스트레이션(orchestration)하는 것이 새로운 엔지니어의 역할이 될 것이라고 예측한다.

3. "결승선 게임"과 "복리 게임" 관점
Kent Beck의 "결승선 게임(The Finish Line Game)"과 "복리 게임(The Compounding Game)" 개념을 도입하여, AI를 통한 빠른 기능 구현의 한계를 지적한다. "결승선 게임"은 특정 스펙을 달성하면 끝나는 일회성 과제에 적합하지만, 소프트웨어 개발의 본질은 "복리 게임"이다. 즉, 오늘 만든 코드가 내일의 자원이 되고, 오늘의 아키텍처 결정이 미래의 가능성을 열거나 닫는 지속적인 과정이라는 것이다. AI는 "결승선 게임"에서는 뛰어난 성능을 보일 수 있지만, 단순히 스펙을 충족하는 코드만으로는 시스템이 장기적으로 복리 성장하는 데 필요한 견고한 구조나 확장성을 보장하지 못할 수 있다. 저자는 "더 나은 AGENTS.md 파일로는 복리 게임을 이길 수 없다"고 강조하며, 엔지니어의 역할은 단지 기능을 만드는 것이 아니라 시스템이 복리로 쌓이도록 설계하는 데 있음을 역설한다.

4. AI는 "거울"이다: 사용자 역량의 증폭
Jeremy Utley 교수의 "AI는 거울이다. 게으르고 싶은 사람에게는 게으름을 도와줄 것이고, 더 예리해지고 싶은 사람에게는 날카로움을 도와줄 것이다"라는 말을 인용하며, AI의 결과물은 사용하는 사람의 역량과 태도를 반영한다는 핵심 주장을 펼친다. 사용자가 TDD, DDD, 아키텍처 원칙 등을 잘 알고 명확하게 지시하면 AI는 고품질의 구조화된 코드를 생성하지만, 단순히 "이 기능 만들어줘"라고 던지면 구조가 부실한 코드를 만든다는 저자의 경험을 공유한다. 이는 Anthropic 연구의 "인지적 오프로딩" 패턴과도 일맥상통한다. AI는 사용자가 가진 강점을 증폭시키지만, 가지고 있지 않은 것을 만들어주지는 않는다. UC Berkeley 연구에 따르면, 비개발자가 AI로 코딩할 수 있게 되면서 엔지니어들은 오히려 동료의 AI 코드를 리뷰하고 수정하는 데 더 많은 시간을 할애하게 되었는데, 이는 AI가 누군가의 능력 부족을 메워주는 것처럼 보이지만 결국 그 부족함이 다른 형태로 드러나는 "거울" 현상으로 해석될 수 있다.

5. "거울"의 한계와 드라큘라 이펙트
AI가 거울이라면, 거울에 비출 지식과 경험이 있어야 한다. 사용자가 특정 영역에 대한 지식이 없으면 AI에게 적절한 지시를 내리거나 결과물을 평가할 수 없으며, 이는 "사각지대"로 남게 된다. 오히려 AI가 빠르게 결과물을 내놓기 때문에, 잘못된 방향으로 더 빠르게 나아갈 위험이 있다. 또한, Steve Yegge가 언급한 "드라큘라 이펙트(Dracula Effect)"처럼, AI와의 집중적인 작업은 엄청난 정신적 에너지를 소모시킨다. AI가 생산하는 동안 엔지니어는 끊임없이 판단하고, 검증하고, 방향을 제시해야 하므로 인지 부하가 커진다는 것이다. 이는 AI가 물리적 노동을 대체할지라도, 사고하는 역할은 여전히 엔지니어의 몫임을 시사한다.

6. AI 활용 전략: 대화와 컨텍스트 엔지니어링
Jeremy Utley는 AI를 제대로 활용하기 위해 "정답을 요구하지 말고 대화하라"고 조언한다. 특히, AI가 사용자에게 질문하게 만들고, 음성 입력을 통해 사고의 제약을 줄이는 방식을 제안한다. 코딩에서는 "컨텍스트 엔지니어링"이 핵심이다. 즉, AI가 요청을 제대로 수행할 수 있도록 프로젝트의 아키텍처 결정 이유, 코딩 컨벤션, 도메인 용어 등 풍부한 맥락 정보를 명시적으로 제공해야 한다. AGENTS.md에 시스템의 미래 가능성과 확장 방향("퓨처스", futures)까지 담아 설계해야 복리 게임에서 승리할 수 있다. 궁극적으로 AI를 단순한 "도구"가 아닌 "팀원"으로 대하는 관점 전환이 중요하다. 팀원에게 일을 맡기듯이 AI에게도 필요한 정보를 질문하게 하고, 협업적인 방식으로 접근할 때 더 나은 결과를 얻을 수 있다.

7. 변하지 않는 본질: 코드를 읽는 능력과 비판적 사고
논문의 결론은 AI가 코드를 대신 쓰는 시대에도 "코드를 읽을 줄 아는 능력"은 여전히 중요하며, 오히려 그 가치가 더 높아졌다는 것이다. 안전 필수 시스템이나 핵심 아키텍처 결정에서는 여전히 인간의 코드 리뷰가 필수적이다. "마젠타의 아이들" 비유처럼, 자동화에 의존하더라도 문제가 발생했을 때 수동으로 개입할 수 있는 능력이 필요하다. AI가 만든 코드가 모든 테스트를 통과하더라도 어딘가 문제가 있을 때, 결국 코드를 직접 읽고 이해하며 디버깅할 수 있는 능력이 중요하다. 저자는 AI가 코드를 대신 써주기 때문에, 코드를 제대로 읽고 판단할 수 있는 능력이 엔지니어의 차별화 요소가 되었다고 주장한다. 비판적 사고, 논리적 사고, 시스템 전체를 바라보는 눈, 품질에 대한 감각 등은 AI 모델의 발전과 무관하게 변하지 않는 본질적 역량이며, 코드를 깊이 다루는 경험 속에서 함께 성장하는 것들이다.

결론적으로, 이 논문은 AI 시대의 엔지니어가 코드를 물리적으로 읽는 시간은 줄어들겠지만, 스펙, 아키텍처, 테스트 결과, 도메인 맥락 등 더 높은 추상화 레이어를 "읽고" 이해하는 능력, 그리고 AI의 한계를 이해하고 자신의 지식과 비판적 사고로 AI를 보완하며 오케스트레이션하는 능력이 중요해짐을 역설한다. AI는 우리의 모습을 충실하게 비추는 "거울"이므로, 거울에 비출 것이 있는 사람이 되는 것이 이 시대 엔지니어의 본질이라고 마무리한다.