6 분 소요


Andrej Karpathy의 Claude 코딩 경험이 말해주는 것: 에이전트 코딩 시대가 왔다

테슬라 AI 디렉터 출신, OpenAI 공동창업자, 그리고 AI 교육계의 전설적인 인물인 Andrej Karpathy가 최근 Claude를 활용한 코딩 경험을 공유했다. 2024년 11월에는 80%가 수동 코딩 + 자동완성이었는데, 12월에 들어서면서 이 비율이 완전히 뒤집어졌다. 80%가 에이전트 코딩이라는 얘기다. 이건 단순한 개인 취향 변화가 아니다. 소프트웨어 개발 패러다임의 전환점을 보여주는 신호다.

에이전트 코딩이란 무엇인가

에이전트 코딩은 기존의 자동완성(Copilot 스타일)과 근본적으로 다르다. 자동완성은 개발자가 타이핑하는 중간에 다음 코드를 예측해서 제안하는 방식이다. 반면 에이전트 코딩은 개발자가 고수준의 지시를 내리면, AI가 전체 작업을 자율적으로 수행한다.

# 자동완성 방식: 개발자가 주도권을 쥐고 한 줄씩 작성
def calculate_metrics(data):
    # 여기서 Copilot이 다음 줄을 제안
    results = []  # <-- AI 제안
    
# 에이전트 방식: 개발자가 의도를 설명
"""
사용자 행동 데이터를 받아서 DAU, MAU, 리텐션율을 계산하는 
함수를 만들어줘. 결과는 딕셔너리로 반환하고, 
엣지 케이스 처리도 포함해.
"""

에이전트는 이 지시를 받으면 코드베이스를 탐색하고, 기존 패턴을 분석하고, 테스트까지 작성한다. 개발자는 감독자(supervisor) 역할로 전환된다.

Karpathy가 말하는 워크플로우 변화

Karpathy의 경험에서 주목할 점은 변화의 속도다. 불과 한 달 만에 코딩 방식이 완전히 바뀌었다. 이건 Claude의 능력이 갑자기 향상되었기 때문이 아니다. 에이전트 코딩에 대한 신뢰가 쌓이면서 점점 더 큰 작업을 맡기게 되는 것이다.

# Claude Code CLI 사용 예시
claude "이 프로젝트의 테스트 커버리지를 분석하고 
       커버리지가 낮은 모듈에 테스트를 추가해줘"

# 에이전트가 수행하는 작업:
# 1. 프로젝트 구조 파악
# 2. 기존 테스트 패턴 분석  
# 3. 커버리지 측정
# 4. 부족한 부분 식별
# 5. 테스트 코드 생성
# 6. 실행해서 통과 확인

처음에는 “함수 하나 만들어줘” 수준이었다면, 신뢰가 쌓이면 “이 기능 전체를 구현해줘”가 된다. 이 신뢰 곡선(trust curve)이 에이전트 코딩 도입의 핵심이다.

실전에서의 에이전트 코딩 패턴

에이전트 코딩을 효과적으로 활용하려면 프롬프트 엔지니어링 수준이 달라야 한다. 좋은 에이전트 프롬프트는 구체적이면서도 맥락을 충분히 제공한다.

## 나쁜 프롬프트
"로그인 기능 만들어줘"

## 좋은 프롬프트
"우리 프로젝트의 기존 인증 시스템(src/auth/)을 확장해서 
OAuth 2.0 Google 로그인을 추가해줘.

요구사항:
- 기존 세션 관리 방식과 호환
- 에러 핸들링은 src/utils/errors.py 패턴 따르기
- 환경변수는 .env.example에 추가
- 테스트는 tests/auth/에 추가

참고: 현재 Flask + SQLAlchemy 사용 중"

핵심은 제약 조건을 명확히 하는 것이다. 에이전트에게 자유도를 주되, 프로젝트의 컨벤션 안에서 움직이게 해야 한다.

에이전트 코딩의 함정과 주의사항

Karpathy 같은 전문가도 에이전트 코딩을 80%만 사용한다는 점에 주목하자. 20%는 여전히 수동이다. 왜일까?

1. 검증의 필요성

에이전트가 생성한 코드는 반드시 리뷰해야 한다. AI는 자신감 있게 틀린 코드를 작성할 수 있다.

# 에이전트가 생성한 코드 (버그 포함)
def get_user_age(birth_date):
    today = datetime.now()
    age = today.year - birth_date.year
    return age  # 버그: 생일이 지났는지 확인 안 함

# 올바른 코드
def get_user_age(birth_date):
    today = datetime.now()
    age = today.year - birth_date.year
    if (today.month, today.day) < (birth_date.month, birth_date.day):
        age -= 1
    return age

2. 아키텍처 결정은 인간의 영역

에이전트는 “어떻게(how)”는 잘하지만 “무엇을(what)”과 “왜(why)”는 인간이 결정해야 한다. 마이크로서비스로 갈지, 모놀리스로 갈지를 AI에게 맡기면 안 된다.

3. 보안 민감 코드

인증, 암호화, 결제 처리 등 보안이 중요한 코드는 에이전트 결과물을 더 철저히 검토해야 한다.

내 생각: 시니어 개발자의 역할 변화

솔직히 말하면, 에이전트 코딩 시대에 “코드 작성”만 잘하는 개발자의 가치는 떨어질 수밖에 없다. 하지만 시스템 설계, 코드 리뷰, 요구사항 분석 능력의 가치는 오히려 올라간다.

Karpathy의 사례가 의미 있는 이유는 그가 AI 분야 최고 전문가이면서 동시에 실제로 코드를 작성하는 실무자라는 점이다. 이론적인 가능성이 아니라 실제 생산성 향상을 체험하고 있다는 뜻이다.

2025년에는 에이전트 코딩이 선택이 아닌 필수가 될 것이다. 지금 적응하지 않으면 뒤처진다. 하지만 적응한다고 해서 개발자가 불필요해지는 건 아니다. 오히려 더 고차원적인 문제를 풀 시간이 생긴다. 이건 위협이 아니라 기회다—물론, 변화에 적응하는 사람에게만.

What Andrej Karpathy’s Claude Coding Experience Tells Us: The Age of Agentic Coding Has Arrived

Andrej Karpathy—former Tesla AI Director, OpenAI co-founder, and legendary figure in AI education—recently shared his experience coding with Claude. In November 2024, his workflow was 80% manual coding + autocomplete, 20% agentic coding. By December, that ratio completely flipped. 80% agentic coding. This isn’t just a personal preference shift. It’s a signal of a paradigm change in software development.

What is Agentic Coding

Agentic coding is fundamentally different from traditional autocomplete (Copilot-style). Autocomplete predicts and suggests the next piece of code while the developer is typing. Agentic coding, on the other hand, takes high-level instructions from the developer and autonomously executes the entire task.

# Autocomplete approach: developer leads, writing line by line
def calculate_metrics(data):
    # Copilot suggests the next line here
    results = []  # <-- AI suggestion
    
# Agentic approach: developer describes intent
"""
Create a function that takes user behavior data and calculates 
DAU, MAU, and retention rate. Return results as a dictionary, 
and include edge case handling.
"""

The agent takes this instruction, explores the codebase, analyzes existing patterns, and even writes tests. The developer transitions to a supervisor role.

The Workflow Change Karpathy Describes

What’s notable about Karpathy’s experience is the speed of change. His coding approach completely transformed in just one month. This isn’t because Claude’s capabilities suddenly improved. It’s about trust building up over time, leading to delegation of increasingly larger tasks.

# Claude Code CLI usage example
claude "Analyze this project's test coverage and add tests 
       to modules with low coverage"

# Tasks the agent performs:
# 1. Understand project structure
# 2. Analyze existing test patterns  
# 3. Measure coverage
# 4. Identify gaps
# 5. Generate test code
# 6. Run and verify tests pass

Initially it might be “create one function for me,” but as trust builds, it becomes “implement this entire feature.” This trust curve is the key to agentic coding adoption.

Agentic Coding Patterns in Practice

Effective agentic coding requires a different level of prompt engineering. Good agent prompts are specific while providing sufficient context.

## Bad Prompt
"Create a login feature"

## Good Prompt
"Extend our existing authentication system (src/auth/) to add 
OAuth 2.0 Google login.

Requirements:
- Compatible with existing session management
- Error handling follows src/utils/errors.py patterns
- Add environment variables to .env.example
- Add tests to tests/auth/

Note: Currently using Flask + SQLAlchemy"

The key is making constraints explicit. Give the agent freedom, but keep it operating within project conventions.

Pitfalls and Caveats of Agentic Coding

Notice that even an expert like Karpathy uses agentic coding only 80% of the time. 20% is still manual. Why?

1. The Need for Verification

Code generated by agents must be reviewed. AI can write incorrect code with complete confidence.

# Agent-generated code (contains bug)
def get_user_age(birth_date):
    today = datetime.now()
    age = today.year - birth_date.year
    return age  # Bug: doesn't check if birthday has passed

# Correct code
def get_user_age(birth_date):
    today = datetime.now()
    age = today.year - birth_date.year
    if (today.month, today.day) < (birth_date.month, birth_date.day):
        age -= 1
    return age

2. Architectural Decisions Belong to Humans

Agents are good at “how” but “what” and “why” should be decided by humans. Don’t let AI decide whether to go microservices or monolith.

3. Security-Sensitive Code

Authentication, encryption, payment processing—code where security matters requires more thorough review of agent output.

My Take: The Changing Role of Senior Developers

Let’s be honest: in the age of agentic coding, the value of developers who can only “write code” will inevitably decline. But the value of system design, code review, and requirements analysis skills will actually increase.

What makes Karpathy’s case significant is that he’s both a top AI expert and a practitioner who actually writes code. This isn’t theoretical possibility—it’s real productivity gains being experienced.

By 2025, agentic coding will be a necessity, not an option. Fail to adapt now, and you’ll fall behind. But adapting doesn’t mean developers become unnecessary. Rather, it creates time to solve higher-order problems. This is an opportunity, not a threat—though only for those who adapt to change.

댓글남기기