Stanford University Fall 2025

CS146S: The Modern Software Developer

손으로 코드를 작성하지 마세요 — 모든 것은 AI로 해야 합니다. AI 시대의 소프트웨어 개발자가 되기 위한 Stanford의 화제의 수업.

Course Website: themodernsoftware.dev

왜 이 수업이 중요한가

2025년 가을, Stanford 대학에서 전례 없는 수업이 시작되었습니다.CS146S: The Modern Software Developer. 이 수업의 핵심 규칙은 단 하나입니다: "손으로 코드를 작성하지 마세요. 모든 것은 AI로 해야 합니다."

Mihail Eric 교수는 Stanford CS를 졸업한 지 15년 만에 모교로 돌아와 이 수업을 만들었습니다. 10개월간의 개발 끝에 탄생한 이 커리큘럼은 AI가 소프트웨어 개발의 모든 단계를 어떻게 변화시키고 있는지를 다루는 최초의 포괄적인 대학 과정입니다.

"코딩 에이전트가 코드를 작성하는 방식을 바꾸고 있습니다. 이제 우리는 더 이상 한 줄 한 줄 코드를 타이핑하는 것이 아니라, AI와 대화하며 소프트웨어를 만들어갑니다."

— Mihail Eric, Stanford CS146S 교수

수업 대기자 명단에 200명 이상이 등록했고, 수업이 시작되자마자 "올해 가장 유용한 CS 수업"이라는 평가가 쏟아졌습니다. Cursor, Claude Code, Warp 같은 도구들이 개발자의 일상을 바꾸고 있는 지금, 이 수업은 단순한 도구 사용법이 아닌 새로운 개발 패러다임을 가르칩니다.

이 페이지는 CS146S의 핵심 내용을 정리한 것입니다. 공식 강의 자료와 과제는 모두 무료로 공개되어 있어, 누구나 따라가며 학습할 수 있습니다. AI 시대의 소프트웨어 개발자로 거듭나고 싶다면, 이 수업의 철학과 방법론을 깊이 이해하는 것이 출발점이 될 것입니다.

핵심 철학: Human-Agent Engineering

CS146S가 강조하는 가장 중요한 개념은 "Human-Agent Engineering"입니다. 이것은 "Vibe Coding"과는 근본적으로 다릅니다. Vibe Coding은 AI에게 대충 지시하고 결과물을 그대로 사용하는 방식입니다. 재미있고 빠르지만, 아직 프로덕션 수준의 소프트웨어를 만들 수는 없습니다.

Vibe Coding vs Human-Agent Engineering

Vibe Coding

  • AI에게 대충 지시
  • 결과물 그대로 사용
  • 에러 나면 AI에게 다시 요청
  • 코드 이해 없이 복붙
  • 프로덕션에 적합하지 않음

Human-Agent Engineering

  • 명확한 컨텍스트와 구조 제공
  • AI를 인턴처럼 관리
  • 결과물 검증 및 테스트
  • 코드 완전히 이해
  • 프로덕션 품질 달성

LLM은 당신만큼만 좋습니다

"AI가 내 코드베이스에서는 작동하지 않아요"라고 말하는 개발자들이 있습니다. 하지만 이 말은 곧 "처음 들어온 인간 개발자도 내 코드베이스에서 혼란스러워할 것이다"라는 뜻입니다.AI의 성능은 당신이 제공하는 컨텍스트의 품질에 비례합니다.

잘 구조화된 코드, 명확한 네이밍, 적절한 문서화가 있다면 AI는 놀라운 성능을 발휘합니다. 반대로 스파게티 코드와 불명확한 의존성이 있다면, AI도 인간만큼이나 고통받습니다.

새로운 노력 배분

AI 시대의 개발자는 코딩보다 계획과 테스트에 더 많은 시간을 씁니다.

40%
20%
40%
Planning (계획)
Coding (코딩)
Testing (테스트)

과거에는 코딩이 전체 작업의 60-70%를 차지했습니다. 하지만 AI가 코드 생성을 담당하면서, 개발자의 역할은 무엇을 만들지 계획하고, 만들어진 것이 제대로 작동하는지 검증하는 것으로 이동했습니다. 검증(Verification)이 실행(Execution)을 대체하고 있습니다.

Week 1

코딩 LLM의 이해

Introduction to Coding LLMs - 토큰화부터 프롬프팅까지

🧠 LLM은 어떻게 코드를 이해하는가?

LLM(Large Language Model)은 텍스트를 토큰(token) 단위로 처리합니다. 토큰은 단어, 서브워드, 또는 개별 문자가 될 수 있습니다. 예를 들어 "tokenization"이라는 단어는 "token", "ization" 두 개의 토큰으로 분리될 수 있습니다.

이 토큰화 방식 때문에 인간에게 쉬운 작업이 LLM에게는 어려울 수 있습니다. "strawberry"에 'r'이 몇 개 있는지 묻거나, 단어를 거꾸로 철자하는 것이 대표적인 예입니다. 토큰 경계가 문자 경계와 일치하지 않기 때문입니다.

"LLM은 문자(character)가 아닌 토큰(token) 수준에서 사고합니다. 이 차이를 이해하는 것이 효과적인 프롬프팅의 첫 걸음입니다."

📊 컨텍스트 윈도우와 한계

모든 LLM에는 컨텍스트 윈도우라는 입력 제한이 있습니다. GPT-4는 128K 토큰, Claude 3는 200K 토큰까지 처리할 수 있습니다. 이는 약 50만 자 또는 책 한 권 분량에 해당합니다.

GPT-4 Turbo

128K 토큰 (~300 페이지)

Claude 3

200K 토큰 (~500 페이지)

Gemini 1.5

1M 토큰 (~2500 페이지)

하지만 컨텍스트가 크다고 항상 좋은 것은 아닙니다. "Lost in the Middle" 현상으로 인해 긴 컨텍스트 중간에 있는 정보는 잘 활용되지 않을 수 있습니다.

🎯 6가지 핵심 프롬프팅 기법

이 주에 배우는 6가지 프롬프팅 기법은 이후 모든 주차의 기반이 됩니다:

  • K-shot Prompting: 예시를 통해 원하는 출력 형식 학습
  • Chain-of-Thought: 단계별 추론으로 복잡한 문제 해결
  • Tool Calling: 외부 함수/API 호출 능력 부여
  • Self-Consistency: 여러 번 추론 후 다수결로 정답 선택
  • RAG: 외부 지식 검색 후 프롬프트에 포함
  • Reflexion: 자기 출력 평가 및 개선

💻 실습: Ollama 환경 설정

과제 수행을 위해 로컬 LLM 환경을 구축합니다:

# Ollama 설치 (macOS)
brew install ollama

# 모델 다운로드
ollama pull mistral-nemo  # 12B 파라미터
ollama pull llama3.1      # 8B 파라미터

# Python 연동
pip install ollama

# 간단한 테스트
import ollama
response = ollama.chat(
    model='mistral-nemo',
    messages=[{'role': 'user', 'content': 'Hello!'}]
)
print(response['message']['content'])

📝 Week 1 과제: 6가지 프롬프팅 기법 구현

GitHub 저장소에서 week1/ 디렉토리를 클론하고, 각 프롬프팅 기법을 Python으로 구현합니다. 모든 TODO 마커를 해결하고 제공된 테스트를 통과해야 합니다. 각 기법당 10점, 총 60점.

📚 필수 읽기:
• Wei et al. "Chain-of-Thought Prompting Elicits Reasoning in LLMs" (2022)
• Lewis et al. "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"
• Shinn et al. "Reflexion: Language Agents with Verbal Reinforcement Learning"
Week 2

코딩 에이전트의 해부학

The Anatomy of Coding Agents - AI가 코드를 쓰는 방법

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

Cursor, Claude Code, GitHub Copilot 같은 도구들은 단순한 자동완성을 넘어자율적으로 작업을 수행하는 에이전트입니다. 에이전트는 다음 능력을 갖춥니다:

  • 도구 사용: 파일 읽기/쓰기, 터미널 명령 실행, 웹 검색
  • 컨텍스트 관리: 프로젝트 구조 이해, 관련 파일 찾기
  • 멀티스텝 계획: 복잡한 작업을 단계별로 분해하여 실행
  • 자기 수정: 에러 발생 시 원인 분석 및 수정

🧩 에이전트 아키텍처

전형적인 코딩 에이전트는 다음 컴포넌트로 구성됩니다:

🧠 Planning Module

작업을 하위 작업으로 분해하고 실행 순서 결정

🔧 Tool Executor

파일 시스템, 터미널, API 등 외부 도구 실행

💾 Memory System

대화 기록, 작업 컨텍스트, 학습된 패턴 저장

🔄 Feedback Loop

실행 결과 평가 및 다음 행동 결정

🎨 Context Engineering의 핵심

Context Engineering은 에이전트에게 "무엇을 알려줄지" 결정하는 기술입니다. 10만 줄의 로그를 그대로 넣는 것은 계산 비용이 거의 들지 않지만, 중요한 추론 컨텍스트를 오염시킵니다.

"나쁜 컨텍스트는 싸지만 유독합니다. 가격은 입력 토큰 기반이지만, 품질은 관련성 기반입니다."

좋은 Context Engineering의 원칙:

  • 관련성 우선: 현재 작업에 직접 관련된 정보만 포함
  • 구조화: 파일 경로, 함수 시그니처 등 명확한 구분
  • 최신성: 변경된 파일은 최신 버전으로 업데이트
  • 계층화: 요약 → 상세의 계층적 정보 제공

💻 간단한 코딩 에이전트 구현

이 주에는 직접 간단한 코딩 에이전트를 구축합니다:

class CodingAgent:
    def __init__(self, llm):
        self.llm = llm
        self.tools = {
            'read_file': self.read_file,
            'write_file': self.write_file,
            'run_command': self.run_command,
            'search_code': self.search_code
        }
        self.memory = []

    def execute(self, task: str):
        # 1. 작업 분석 및 계획 수립
        plan = self.llm.plan(task, self.get_context())

        # 2. 각 단계 실행
        for step in plan.steps:
            tool_name, args = self.llm.select_tool(step)
            result = self.tools[tool_name](**args)
            self.memory.append((step, result))

            # 3. 결과 평가 및 조정
            if not self.evaluate(result):
                self.adjust_plan(plan, step, result)

        return self.summarize()

🔍 Claude Code 아키텍처 분석

Anthropic의 Claude Code는 다음과 같은 특징적인 아키텍처를 가집니다:

  • CLAUDE.md: 프로젝트별 컨텍스트 및 규칙 정의 파일
  • Multi-turn Memory: 대화 전체에 걸친 컨텍스트 유지
  • Tool Orchestration: 파일, 터미널, 검색 도구의 지능적 조합
  • Agentic Loop: 목표 달성까지 자율적으로 반복 실행
📚 필수 읽기:
• Anthropic Claude Code Architecture Documentation
• "Context Engineering for Coding Agents" - Best Practices Guide
• "Building Effective AI Agents" - Patterns and Anti-patterns
Week 3

AI IDE의 세계

The AI IDE - Cursor, Windsurf, 그리고 미래의 개발 환경

🖥️ AI IDE란 무엇인가?

AI IDE는 전통적인 코드 편집기에 LLM 기반 지능을 통합한 개발 환경입니다. 단순한 자동완성을 넘어, 대화형 코드 생성, 리팩토링, 디버깅, 문서화까지 지원합니다.

Cursor

VS Code 기반, GPT-4/Claude 연동, 인라인 채팅 및 편집

Windsurf

Codeium 제작, Cascade 에이전트, 자동 컨텍스트 수집

GitHub Copilot

VS Code 확장, 인라인 제안, Chat 기능

Zed + AI

Rust 기반 고성능 에디터, LLM 통합

⚡ Cursor 심층 분석

Cursor는 현재 가장 인기 있는 AI IDE입니다. 핵심 기능:

  • Cmd+K (인라인 편집): 선택한 코드를 자연어로 수정 요청
  • Cmd+L (채팅): 사이드바에서 대화형 코딩
  • Tab 자동완성: 맥락 인식 코드 제안
  • @mentions: @file, @folder, @codebase로 컨텍스트 지정
  • Composer: 다중 파일 동시 편집 에이전트
"좋은 AI IDE 사용자는 도구의 한계를 알고, 언제 직접 코드를 작성할지 판단할 수 있습니다."

📄 .cursorrules 파일 작성법

프로젝트 루트에 .cursorrules 파일을 만들면 AI의 행동을 커스터마이즈할 수 있습니다:

# .cursorrules 예시

## 프로젝트 컨텍스트
이 프로젝트는 Next.js 15 + TypeScript로 작성된 웹 애플리케이션입니다.
Firebase를 백엔드로 사용합니다.

## 코딩 규칙
- TypeScript 엄격 모드 사용
- 컴포넌트는 함수형으로만 작성
- 파일당 200줄 이하 유지
- CSS는 Tailwind 우선

## 금지 사항
- any 타입 사용 금지
- console.log는 디버깅 후 삭제
- 인라인 스타일 지양

## 선호 패턴
- 에러 처리: try-catch with specific error types
- 상태 관리: React Query for server state
- 테스트: Jest + React Testing Library

🌊 Windsurf와 Cascade 에이전트

Windsurf의 Cascade는 자동으로 관련 컨텍스트를 수집하는 에이전트입니다:

  • 프로젝트 구조 자동 인식
  • 의존성 그래프 분석으로 관련 파일 자동 포함
  • 터미널 명령어 자동 실행 및 결과 분석
  • Git 히스토리 참조로 변경 이력 이해

📝 Week 3 과제: AI IDE 환경 구성

Cursor 또는 Windsurf를 설치하고, 개인 프로젝트에 맞는 .cursorrules 파일을 작성합니다. 최소 10개의 프로젝트별 규칙을 정의하고, AI가 규칙을 준수하는지 테스트 결과와 함께 제출합니다.

Week 4

코딩 에이전트 패턴

Coding Agent Patterns - 프로덕션 레벨 AI 개발 워크플로우

🔄 AI-First 개발 워크플로우

프로덕션 피처를 2배 빠르게 배포하는 워크플로우는 5단계로 구성됩니다. 각 단계에서 AI를 전략적으로 활용하면 개발 속도와 품질을 동시에 높일 수 있습니다:

1️⃣ Research

기존 코드베이스 분석, 유사 기능 탐색, 의존성 파악

2️⃣ Plan

작업 분해, 파일 변경 계획, 테스트 전략 수립

3️⃣ Implement

AI와 함께 코드 작성, 점진적 구현

4️⃣ Test

유닛/통합 테스트 작성, 엣지 케이스 검증

5️⃣ Review

코드 리뷰, 보안 점검, 문서화

🎯 MCP (Model Context Protocol)

MCP는 Anthropic이 제안한 에이전트-도구 연결 표준입니다. 다양한 도구와 데이터 소스를 표준화된 방식으로 LLM에 연결합니다:

// MCP 서버 예시: GitHub 연동
{
  "name": "github",
  "description": "GitHub API 연동",
  "tools": [
    {
      "name": "create_issue",
      "description": "새 이슈 생성",
      "parameters": {
        "repo": "string",
        "title": "string",
        "body": "string"
      }
    },
    {
      "name": "list_prs",
      "description": "PR 목록 조회",
      "parameters": {
        "repo": "string",
        "state": "open|closed|all"
      }
    }
  ]
}

MCP를 사용하면 Slack, GitHub, Notion, 데이터베이스 등 다양한 서비스를 AI 에이전트에 쉽게 연결할 수 있습니다.

⚠️ AI 에러 잡아내기: 리뷰 프로세스

AI가 생성한 코드에서 주의해야 할 문제들:

  • 할루시네이션: 존재하지 않는 API/함수 호출. 항상 import 확인
  • Slop (저품질 출력): 과도한 주석, 불필요한 추상화, 장황한 코드
  • 보안 취약점: SQL 인젝션, XSS, 하드코딩된 시크릿
  • 성능 문제: N+1 쿼리, 메모리 누수, 불필요한 재렌더링
  • 컨텍스트 무시: 기존 패턴과 다른 스타일로 코드 생성
"AI를 신뢰하되 검증하라. 100% AI 생성 코드는 존재하지 않습니다 — 항상 인간의 검토가 필요합니다."

🔧 CI/CD에 AI 통합하기

자동화된 파이프라인에 AI 검증 단계를 추가합니다:

# .github/workflows/ai-review.yml
name: AI Code Review

on: [pull_request]

jobs:
  ai-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: AI Security Scan
        run: |
          npx semgrep --config=auto .

      - name: AI Code Quality Check
        uses: coderabbit-ai/ai-pr-reviewer@latest
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}

      - name: Detect AI-Generated Code Issues
        run: |
          # 할루시네이션 체크 스크립트
          ./scripts/check-imports.sh
📚 필수 읽기:
• "The State of AI Coding 2025" - 업계 현황 보고서
• Anthropic MCP Documentation
• "AI Code Review Best Practices" - GitHub Engineering Blog
Week 5

현대적 터미널

The Modern Terminal - Warp와 AI 기반 CLI 도구들

🖥️ 왜 터미널이 중요한가?

AI IDE가 아무리 발전해도 터미널은 개발자의 핵심 도구입니다. Git, Docker, kubectl, npm/yarn 등 대부분의 개발 도구는 CLI로 동작합니다. AI 터미널은 자연어로 복잡한 명령어를 생성하고 설명해줍니다.

🚀 Warp: AI 기반 터미널

Warp는 Rust로 작성된 차세대 터미널입니다. Zach Lloyd(전 Google Docs 엔지니어링 디렉터)가 창업했습니다:

⚡ 블록 기반 출력

각 명령어 출력이 복사/공유 가능한 블록으로 구성

🤖 AI 명령어 생성

자연어 설명 → 명령어 자동 변환

📝 명령어 팔레트

자주 쓰는 명령어 저장 및 공유

🔄 실시간 협업

터미널 세션 공유 및 동시 편집

💡 AI 터미널 활용 예시

복잡한 명령어를 외울 필요 없이 자연어로 요청합니다:

# 자연어 입력
"지난 일주일간 수정된 JS 파일 중 100줄 이상인 것만 찾아줘"

# Warp AI 생성 명령어
find . -name "*.js" -mtime -7 -exec wc -l {} \; | \
  awk '$1 >= 100 {print $2}'

# 자연어 입력
"Docker 컨테이너 중 메모리 500MB 이상 쓰는 것만 보여줘"

# Warp AI 생성 명령어
docker stats --no-stream --format \
  "table {{.Name}}\t{{.MemUsage}}" | \
  awk -F'/' 'NR>1 && $1+0 > 500 {print}'

🛠️ 기타 AI CLI 도구들

  • GitHub Copilot CLI: gh copilot explain, gh copilot suggest
  • Fig: 자동완성 + AI 제안 (Warp에 인수됨)
  • ShellGPT: 터미널에서 직접 ChatGPT 사용
  • aider: CLI 기반 AI 코딩 어시스턴트
Guest Speaker: Zach Lloyd (Warp CEO)
"터미널은 개발자의 두 번째 집입니다. AI가 그 집을 더 편하게 만들어줍니다."

📝 Week 5 과제: Warp 활용 실습

Warp를 설치하고 AI 기능을 활용하여 5가지 복잡한 시스템 관리 작업을 수행합니다. 각 작업에서 자연어 입력, AI 생성 명령어, 실행 결과를 문서화하여 제출합니다.

Week 6

AI 테스팅과 보안

AI Testing and Security - SAST, Semgrep, 그리고 Prompt Injection

🔒 SAST (Static Application Security Testing)

SAST는 코드를 실행하지 않고 소스 코드를 분석하여 보안 취약점을 찾습니다. AI가 생성한 코드도 예외 없이 보안 검증이 필수입니다:

  • SQL Injection: 사용자 입력이 직접 쿼리에 포함되는 경우
  • XSS: 검증 없이 사용자 입력을 HTML에 렌더링
  • Path Traversal: ../를 이용한 파일 시스템 접근
  • Hardcoded Secrets: API 키, 비밀번호가 코드에 포함
  • Insecure Dependencies: 알려진 취약점이 있는 라이브러리

🔍 Semgrep 실전 사용법

Semgrep은 패턴 기반 코드 분석 도구입니다:

# 설치
pip install semgrep

# 자동 보안 스캔 (언어 자동 감지)
semgrep --config=auto .

# Python 특화 보안 규칙
semgrep --config=p/python .

# JavaScript/TypeScript 보안 규칙
semgrep --config=p/javascript .

# 특정 취약점 검색 (SQL Injection)
semgrep --config=p/sql-injection .

# CI용 SARIF 포맷 출력
semgrep --config=auto --sarif > results.sarif

⚠️ 에이전트 아키텍처의 새로운 공격 표면

AI 코딩 에이전트는 새로운 보안 위협을 만들어냅니다:

"Prompt Injection으로 의도가 하이재킹되고, 메모리가 오염되고, 계획 체인이 강제될 수 있습니다."
  • Direct Prompt Injection: 악의적 프롬프트로 에이전트 행동 변경
  • Indirect Prompt Injection: 외부 데이터에 숨겨진 명령어
  • Memory Poisoning: 대화 기록에 악성 컨텍스트 삽입
  • Tool Abuse: 에이전트의 도구를 악용한 시스템 접근

🛡️ 방어 전략

# 입력 검증 예시
def validate_user_input(input_text: str) -> str:
    # 1. 길이 제한
    if len(input_text) > 10000:
        raise ValueError("Input too long")

    # 2. 프롬프트 인젝션 패턴 탐지
    injection_patterns = [
        "ignore previous instructions",
        "system prompt:",
        "you are now",
    ]
    for pattern in injection_patterns:
        if pattern.lower() in input_text.lower():
            raise SecurityError(f"Potential injection: {pattern}")

    # 3. 특수 문자 이스케이프
    return html.escape(input_text)

📝 Week 6 과제: Semgrep 취약점 스캔 및 수정

week6/ 디렉토리의 FastAPI 백엔드와 JavaScript 프론트엔드를 Semgrep으로 스캔합니다. 최소 3개의 보안 이슈를 문서화하고 수정합니다. 각 수정에 대해 파일 위치, 위험 설명, 코드 변경 내용을 상세히 기록합니다.

📚 필수 읽기:
• OWASP Top 10 for Agentic Applications (2025)
• "Prompt Injection and Security Risks of Agentic Coding Tools"
• Semgrep Documentation - Writing Custom Rules
Week 7

현대적 소프트웨어 지원

Modern Software Support - AI 기반 문서화와 지원 시스템

📚 AI 시대의 문서화

소프트웨어를 출시한 후에는 사용자 지원이 필요합니다. AI를 활용하면 문서 작성, 업데이트, 검색을 자동화할 수 있습니다:

코드→문서 자동 생성

함수 시그니처와 주석에서 API 문서 자동 생성

변경 이력 추적

Git 커밋에서 CHANGELOG 자동 작성

다국어 번역

영어 문서를 다국어로 자동 번역

예제 코드 생성

API 사용 예제 자동 생성

🤖 AGENTS.md: AI를 위한 문서

이제 개발자는 인간뿐 아니라 기계(AI 에이전트)를 위한 문서도 작성해야 합니다. AGENTS.md는 프로젝트 루트에 위치하며, AI 코딩 에이전트에게 명확한 지침을 제공합니다:

# AGENTS.md 예시

## 프로젝트 개요
이 프로젝트는 실시간 채팅 애플리케이션입니다.

## 아키텍처
- Frontend: React 18 + TypeScript
- Backend: Node.js + Express
- Database: PostgreSQL
- 실시간: Socket.io

## 디렉토리 구조
```
/src
  /components  # React 컴포넌트
  /hooks       # 커스텀 훅
  /services    # API 클라이언트
  /types       # TypeScript 타입
/server
  /routes      # Express 라우트
  /models      # DB 모델
  /middleware  # 미들웨어
```

## 코딩 규칙
- 모든 함수에 JSDoc 주석 필수
- 테스트 커버리지 80% 이상 유지
- 컴포넌트는 100줄 이하로 유지

## 금지 사항
- console.log 직접 사용 (logger 모듈 사용)
- any 타입 사용 금지
- 인라인 SQL 쿼리 금지

💬 AI 지원 챗봇 구축

RAG 기반 지원 챗봇을 구축하여 사용자 질문에 자동 응답합니다:

  • 문서 인덱싱: 공식 문서, FAQ, 이슈 트래커를 벡터 DB에 저장
  • 질문 분류: 기술 문의, 버그 리포트, 기능 요청 자동 분류
  • 응답 생성: 관련 문서를 검색하여 맥락에 맞는 답변 생성
  • 에스컬레이션: 복잡한 문의는 담당자에게 자동 전달
"좋은 문서는 지원 티켓의 50%를 줄입니다. AI 챗봇은 나머지 30%를 자동 처리합니다."
📚 필수 읽기:
• GitHub의 AGENTS.md 표준 제안
• "Writing Documentation for AI Agents" - Best Practices
• LangChain RAG Tutorial - Building Support Chatbots
Week 8

자동 UI/앱 빌딩

Automated UI and App Building - v0, Bolt, 그리고 Human-Agent Engineering

🎨 AI UI 생성 도구들

자연어 설명만으로 전체 UI를 생성할 수 있는 시대가 왔습니다:

v0 (Vercel)

React + Tailwind 컴포넌트를 자연어로 생성. shadcn/ui 기반

Bolt.new

풀스택 앱 스캐폴딩. 프론트엔드 + 백엔드 + DB 동시 생성

Lovable (GPT Engineer)

대화형 앱 개발. 수정 요청으로 점진적 개선

Replit Agent

클라우드 IDE 내 자율 에이전트. 배포까지 자동화

🔧 v0 실습: UI 생성부터 수정까지

// v0에 입력하는 프롬프트 예시
"대시보드 UI를 만들어줘.
왼쪽 사이드바에 메뉴, 상단에 검색바,
메인 영역에 4개의 통계 카드와 차트 1개.
다크모드 지원, 반응형으로."

// v0 생성 결과: React 컴포넌트
export function Dashboard() {
  return (
    <div className="flex h-screen bg-gray-900">
      <Sidebar />
      <main className="flex-1 p-6">
        <SearchBar />
        <div className="grid grid-cols-4 gap-4 mb-6">
          <StatCard title="Revenue" value="$45,231" />
          <StatCard title="Users" value="2,350" />
          ...
        </div>
        <Chart data={chartData} />
      </main>
    </div>
  )
}

⚠️ Human-Agent Engineering 원칙

생성된 코드를 그대로 사용하면 안 됩니다. Human-Agent Engineering원칙에 따라 반드시 검토하고 수정해야 합니다:

  • 접근성 (a11y): ARIA 레이블, 키보드 내비게이션, 색상 대비 확인
  • 성능: 불필요한 리렌더링, 이미지 최적화, 번들 사이즈 검토
  • 보안: XSS 취약점, 사용자 입력 검증, CSRF 보호
  • 유지보수성: 컴포넌트 분리, 타입 정의, 테스트 가능성
  • 일관성: 기존 코드베이스 스타일과의 조화
"AI는 첫 번째 초안을 만들고, 인간은 프로덕션 품질로 다듬습니다. 100% AI 코드는 없습니다 — 항상 인간의 판단이 필요합니다."

📋 생성 코드 체크리스트

  • □ 하드코딩된 값이 있는가? → 환경변수/설정으로 이동
  • □ 에러 처리가 누락되었는가? → try-catch 추가
  • □ 로딩/에러 상태가 있는가? → UX 개선
  • □ 타입이 정확한가? → TypeScript strict 검증
  • □ 테스트가 필요한가? → 유닛 테스트 작성

📝 Week 8 과제: AI로 UI 프로토타입 제작

v0 또는 Bolt를 사용하여 지정된 요구사항의 UI를 생성합니다. 생성된 코드를 Human-Agent Engineering 원칙에 따라 검토하고, 접근성, 성능, 보안 측면에서 최소 5가지 개선 사항을 적용하여 제출합니다.

Week 9

배포 후 에이전트 활용

Agents Post-Deployment - 프로덕션 AI와 MASAI 아키텍처

🚀 프로덕션에서의 AI 역할

코드가 프로덕션에 배포된 후에도 AI의 역할은 계속됩니다. 운영, 모니터링, 유지보수 전 과정에서 AI가 개발자를 지원합니다:

📊 에러 로그 분석

스택 트레이스 해석, 근본 원인 추정, 관련 코드 위치 제시

⚡ 성능 병목 식별

느린 쿼리, 메모리 누수, CPU 병목 자동 탐지

🔧 자동 버그 수정 제안

에러 패턴 분석 후 수정 코드 생성 및 PR 자동 생성

📈 이상 탐지

평소와 다른 트래픽 패턴, 에러율 급증 알림

🧠 MASAI: 멀티에이전트 시스템

MASAI (Modular Architecture for Software Engineering AI)는 Microsoft Research에서 개발한 멀티에이전트 시스템입니다. 복잡한 소프트웨어 엔지니어링 작업을 여러 전문 에이전트가 협력하여 해결합니다:

  • Planner: 문제를 분석하고 해결 계획 수립
  • Navigator: 코드베이스를 탐색하여 관련 파일 찾기
  • Code Editor: 실제 코드 수정 수행
  • Executor: 테스트 실행 및 결과 검증
  • Verifier: 수정이 문제를 해결했는지 확인
"MASAI는 SWE-Bench에서 28.3%의 해결률을 달성했습니다. 이는 단일 에이전트 대비 40% 향상된 수치입니다."

🔄 자동 버그 수정 파이프라인

# 자동 버그 수정 워크플로우 예시
class AutoBugFixer:
    def __init__(self, repo_path: str):
        self.repo = repo_path
        self.agents = {
            'analyzer': ErrorAnalyzer(),
            'locator': CodeLocator(),
            'fixer': CodeFixer(),
            'tester': TestRunner()
        }

    async def fix_bug(self, error_log: str):
        # 1. 에러 분석
        analysis = await self.agents['analyzer'].analyze(error_log)

        # 2. 관련 코드 위치 파악
        locations = await self.agents['locator'].find(
            analysis.error_type,
            analysis.stack_trace
        )

        # 3. 수정 코드 생성
        fix = await self.agents['fixer'].generate_fix(
            locations,
            analysis.root_cause
        )

        # 4. 테스트 실행
        result = await self.agents['tester'].run_tests(fix)

        if result.passed:
            return self.create_pr(fix)
        else:
            return self.fix_bug(result.new_errors)  # 재귀적 수정

📚 HyperAgent와 에이전트 오케스트레이션

HyperAgent는 여러 AI 에이전트를 조율하는 메타 에이전트입니다. 각 에이전트의 강점을 활용하고 약점을 보완합니다:

  • 작업 복잡도에 따라 적절한 에이전트 선택
  • 에이전트 간 컨텍스트 공유 및 핸드오프
  • 실패 시 다른 에이전트로 폴백
  • 결과 품질 모니터링 및 피드백 루프
📚 필수 읽기:
• "MASAI: Modular Architecture for Software Engineering AI" - Microsoft Research
• HyperAgent: Multi-Agent Systems for Software Engineering
• SWE-Bench: Benchmarking LLMs for Software Engineering Tasks
Week 10

AI 소프트웨어 엔지니어링의 미래

What's Next - Devin, 자율 에이전트, 그리고 개발자의 역할 변화

🤖 Devin: 최초의 AI 소프트웨어 엔지니어

Devin (Cognition Labs)은 세계 최초의 완전 자율 AI 소프트웨어 엔지니어입니다. 코드 작성뿐 아니라 전체 개발 사이클을 자율적으로 수행합니다:

📋 계획 수립

요구사항 분석, 작업 분해, 타임라인 추정

💻 코드 작성

기능 구현, 테스트 작성, 문서화

🐛 디버깅

에러 분석, 근본 원인 파악, 수정 적용

🚀 배포

개발 환경 구동, CI/CD 설정, 프로덕션 배포

Devin은 SWE-Bench에서 13.86%의 이슈를 end-to-end로 해결했습니다. 이전 최고 기록(GPT-4 + scaffolding)의 1.96% 대비 7배 향상입니다.

🔮 AI 개발 도구의 진화 방향

  • Level 1 (현재): 자동완성, 코드 제안 (Copilot)
  • Level 2: 대화형 코딩, 멀티파일 편집 (Cursor, Claude Code)
  • Level 3: 자율 작업 수행, 한정된 범위 (Devin, Replit Agent)
  • Level 4 (미래): 전체 프로젝트 자율 개발
  • Level 5 (미래): AI가 AI 개발 도구를 개발
"소프트웨어 엔지니어의 역할이 '코드를 쓰는 사람'에서 'AI를 감독하고 방향을 제시하는 사람'으로 전환되고 있습니다."

👤 개발자의 새로운 역할

AI 시대에 개발자는 어떤 역량을 갖춰야 할까요?

🎯 문제 정의

무엇을 만들지 명확히 정의하는 능력. AI는 실행하지만 방향은 인간이 제시

🔍 품질 검증

AI 출력물을 평가하고 개선점을 식별하는 능력

🏗️ 아키텍처 설계

전체 시스템 구조를 설계하고 기술 결정을 내리는 능력

🤝 협업/커뮤니케이션

이해관계자와 소통하고 요구사항을 AI에게 전달하는 능력

🎤 Guest Speakers

  • Russell Kaplan (Cognition Labs) - Devin의 아키텍처와 미래 로드맵
  • Martin Casado (a16z) - AI 소프트웨어 엔지니어링 투자 관점과 시장 전망
"5년 후, 모든 소프트웨어 엔지니어는 AI 에이전트와 협업할 것입니다. AI를 도구로 활용하는 능력이 핵심 역량이 됩니다." — Martin Casado

📝 최종 프로젝트 발표

팀별로 AI 도구를 활용하여 개발한 프로젝트를 발표합니다. 전체 개발 과정에서 AI를 어떻게 활용했는지, 무엇이 잘 작동했고 무엇이 어려웠는지, 배운 점과 개선할 점을 공유합니다. 발표 15분 + Q&A 5분.

핵심 인사이트 & 참고 자료

Context Engineering의 핵심 원칙

Grep → Read 패턴

전체 파일을 읽고 컨텍스트 내에서 검색하지 마세요. 대신 Grep으로 위치를 찾고, Read로 필요한 부분만 추출하세요. Claude Code의 Read 도구는 offset과 limit 파라미터를 지원하여, 전체 파일을 로드하지 않고도 관련 섹션만 가져올 수 있습니다.

서브에이전트 아키텍처

복잡한 작업을 처리할 때, 메인 에이전트가 모든 것을 하게 하지 마세요. 전문화된 서브에이전트를 사용하면 91%의 노이즈 대신 76%의 유용한 신호를 담은 8배 더 깨끗한 컨텍스트를 얻을 수 있습니다.

필수 참고 논문

Chain-of-Thought Prompting Elicits Reasoning in LLMs

Wei et al., 2022 | Google Research

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

Lewis et al., 2020 | Facebook AI Research

Reflexion: Language Agents with Verbal Reinforcement Learning

Shinn et al., 2023 | arXiv:2303.11366

Structured Chain-of-Thought Prompting for Code Generation

Li et al., 2023 | ACM TOSEM

MASAI: Modular Architecture for Software Engineering AI

SWE-Bench Lite에서 28.3% 해결률 달성

공식 학습 자료

  • themodernsoftware.dev공식 코스 웹사이트 - 강의 슬라이드, 노트, 주차별 읽기 자료
  • GitHub: modern-software-dev-assignments공식 과제 저장소 - Python 3.12, Conda, Poetry 환경
  • The State of AI Coding 2025AI 코딩 현황 리포트 - 업계 트렌드와 도구 분석
  • Prompting Guide프롬프팅 기법 종합 가이드 - CoT, RAG, Reflexion 등