Claude Code의 진정한 힘은 코드 생성에 있지 않다
요약
GitHub Copilot과 Claude Code를 병행 사용하며 느낀 차이점을 분석합니다. Claude Code의 핵심은 단순 코드 생성이 아니라, 기술(skills)과 에이전트를 활용해 개발자가 설계자로서 시스템을 구축하게 만드는 구조적 협업에 있습니다.
핵심 포인트
- Copilot은 빠른 자동 완성 및 인라인 편집에 최적화됨
- Claude Code는 다중 파일 작업 시 뛰어난 문맥 인식 능력을 제공함
- Claude Code의 진정한 가치는 주변에 구축하는 시스템(skills, agents)에 있음
- Claude Code 사용 시 개발자는 단순 구현자에서 설계자(architect)로 역할이 변화함
AI 코딩 도구, 특히 GitHub Copilot에서 Claude Code CLI로 전환하며 겪은 제 경험에 대해 이야기해보고자 합니다.
이 글은 "Copilot vs Claude"의 격투 경기가 아닙니다. 저는 여전히 VS Code 내부에서 매일 Copilot을 사용하고 있습니다. Copilot은 본연의 기능에 매우 뛰어납니다.
하지만 지난 몇 달 동안, 제가 AI와 협업하는 방식에서 무언가 변화하고 있다는 것을 느꼈습니다.
저는 주로 다음과 같은 용도로 Copilot을 사용하기 시작했습니다:
- 자동 완성 (autocomplete)
- 인라인 질문 (inline questions)
- 포맷팅 도움 (formatting help)
- 빠른 로직 블록 검토 (quick logic block reviews)
이와 더불어, 제 뇌가 일시적으로 블루스크린이 뜰 때(생각이 막힐 때) 디버깅 (debugging), 리팩토링 (refactoring), 테스트 (tests), 그리고 개념 설명 (explaining concepts)을 위해 ChatGPT를 사용했습니다. 이 모든 방식은 잘 작동했습니다.
그러던 어느 날, 저희 회사가 Claude 구독을 시작했고, 상황이 꽤 빠르게 변하기 시작했습니다. 코드 생성 (code generation) 능력이 마법처럼 더 좋아졌기 때문이 아닙니다. Claude Code가 제가 컨텍스트 (context)를 생각하는 방식을 다르게 만들었기 때문입니다.
초기 단계
Claude Code에 완전히 매료되었던 첫 순간은 거대한 자율적 기능 구현 때문이 아니었습니다. 오히려 하나의 '기술 (skill)' 때문이었습니다. 저는 테스트 구조 전반에 걸쳐 여러 파일을 업데이트하면서도 포맷팅과 컨벤션 (conventions)을 일관되게 유지하는 재사용 가능한 기술을 설정해 두었습니다.
그 순간, 이것은 더 이상 "똑똑한 자동 완성"처럼 느껴지지 않고 협업하는 것처럼 느껴지기 시작했습니다. 솔직히 저에게 전환 과정이 그리 어렵지는 않았는데, 이미 다음과 같은 방식으로 AI에게 적절한 프롬프팅 (prompting)을 하는 데 익숙했기 때문입니다:
- 충분한 컨텍스트 (context) 제공
- 목표를 명확하게 정의
- 구현 전 변경 사항 논의
- 실행 전 계획 검토
더 어려운 부분은 Claude Code를 중심으로 모든 것을 구조화하는 방법을 배우는 것이었습니다. 왜냐하면 기술 (skills), 훅 (hooks), CLAUDE.md 파일, 그리고 에이전트 (agents)를 사용하기 시작하면 다음과 같은 사실을 매우 빠르게 깨닫게 되기 때문입니다:
Claude Code의 진정한 힘은 코드 생성 (code generation)에 있지 않다.
그것은 당신이 그 주변에 구축하는 시스템이다.
Copilot vs Claude Code
Copilot은 여전히 저에게 빠른 편집을 위해 빛을 발합니다. 만약 제가 로직 블록을 수동으로 작업하고 있고 무엇을 원하는지 정확히 알고 있다면, Copilot의 인라인 자동 완성 (inline autocomplete)은 빠르고 가볍습니다. 저는 여전히 그것을 끊임없이 사용합니다.
Claude Code는 특히 여러 파일에 걸쳐 작업할 때 더 문맥 인식 (context-aware) 능력이 뛰어나다는 점에서 다르게 느껴집니다.
Copilot을 사용할 때는 제가 더 면밀히 모니터링하는 경향이 있습니다. 반면 Claude Code를 사용할 때는 구현이 시작되기도 전에 계획을 세우는 데 더 많은 시간을 할애합니다. 그리고 이상하게도, 그 계획 단계는 저를 단순한 개발자라기보다 설계자 (architect)처럼 생각하게 만들었습니다.
이것은 솔직히 저에게 가장 큰 이점 중 하나였습니다.
나의 Claude 설정 (My Claude Setup)
이제 제가 작업하는 모든 프로젝트는 각자의 Claude 구조를 가지고 있습니다:
.claude/
| skills/
| agents/
...
이 설정은 Anthropic의 강의에서 큰 영감을 받았습니다. Claude Code를 제대로 사용하고 싶다면 이 강의들을 진심으로 추천합니다. 모두 무료로 제공됩니다.
제가 가장 유용하다고 느꼈던 것들은 다음과 같습니다:
- Claude Code 101
- Introduction to Claude Cowork
- Claude Code in Action
- Introduction to Agent skills
- Introduction to Subagents
프로젝트별 설정에서 제가 좋아하는 점은 각 코드베이스가 자신만의 문맥 (context)을 갖게 된다는 것입니다. React TypeScript 프론트엔드는 프론트엔드에 집중된 기술 (skills)을 갖게 됩니다. Go 백엔드는 백엔드에 집중된 기술을 갖게 됩니다. 그리고 각 CLAUDE.md 파일에는 다음과 같은 내용이 포함됩니다:
- 코딩 표준 (coding standards)
- 명명 규칙 (naming conventions)
- 아키텍처 규칙 (architecture rules)
- 프로젝트 개요 (project overviews)
- 따라야 할 패턴 (patterns to follow)
심지어 몇몇 간단한 규칙만으로도 일관성 측면에서 엄청난 차이를 만들어냅니다.
내가 가장 많이 사용하는 기술 (The skill I use the most)
제가 항상 사용하는 기술은 계획 기술 (planning skill)입니다.
워크플로우는 간단합니다:
- 기능(feature)이나 버그(bug)를 설명합니다.
- 기술(skill)이 코드베이스(codebase)를 스캔합니다.
- 기존에 존재하는 것과 변경이 필요할 수 있는 것을 식별합니다.
.claude/docs/내부에 계획 문서(planning document)를 생성합니다.
문서가 생성되면, 구현(implementation)이 시작되기 전에 제가 수동으로 검토하고 승인합니다.
승인 단계가 가장 중요한 이유는, 제가 아주 빠르게 배운 한 가지 사실 때문입니다:
AI에게 힘든 일을 혼자 다 하도록 내버려 두어서는 안 된다
훅(Hooks), 가드레일(Guardrails), 그리고 보안(Security)
많은 개발자가 AI 도구 사용 시 간과한다고 생각하는 또 다른 요소는 보안(security)입니다. 이 도구들은 허용하기만 하면 아주 많은 양의 정보를 읽을 수 있습니다.
저는 PreToolUse 매처(matcher)를 사용하여 Claude가 민감한 파일에 접근하는 것을 방지하기 위해 다음과 같은 작업에 훅(hooks)을 사용합니다:
- 읽기 (Read)
- 수정 (Edit)
- 쓰기 (Write)
- Grep (이 부분은 종종 간과됩니다)
단순화된 버전은 다음과 같은 형태입니다:
{
"matcher": "Read|Edit|Write|Grep",
"block": [
...
완벽하지는 않지만, 가드레일(guardrails)을 추가해 줍니다. 그리고 저는 가드레일이 AI 보조 개발(AI-assisted development)에서 가장 중요한 부분 중 하나여야 한다고 생각합니다. AI 도구는 믿을 수 없을 정도로 유능하지만, 동시에 매우 자신감이 넘치기 때문입니다. 때로는 아주 자신만만하게 틀리기도 합니다.
제가 들어본 가장 좋은 설명이자, 현재 제가 끊임없이 사용하는 표현은 이것입니다:
AI를 매우 자신감 넘치는 주니어 개발자(junior developer)처럼 대하라.
AI는 빠르고(Fast), 도움이 되며(Helpful), 때로는 천재적일 수도 있지만, 여전히 감독(oversight)이 필요합니다.
현재 나의 상태
현재 저는 Claude Code가 감독 없이 대규모 기능(large features)을 구현하는 것을 여전히 완전히 신뢰하지는 않습니다. 그리고 저는 그것이 건강한 사고방식이라고 생각합니다. 왜냐하면 AI는 때때로 패턴을 환각(hallucinate)하거나, 과잉 엔지니어링(over-engineer)을 하거나, 아키텍처(architecture) 측면에서 벽에 정면으로 부딪히는 상황을 아주 자신만만하게 만들어내기도 하기 때문입니다.
그럼에도 불구하고, 이 도구는 이미 제가 소프트웨어를 개발하는 방식을 바꾸어 놓았습니다. 저는 같은 문제를 반복해서 해결하는 대신, 계획을 세우고, 시스템에 대해 더 많이 고민하며, 재사용 가능한 워크플로우(workflows)를 만드는 데 더 많은 시간을 쓰고 있습니다.
제 목표는 코딩을 멈추는 것이 아니라, 더 잘 코딩하는 것입니다. AI는 개발자를 대체하기 위해 사용되는 것이 아니라, 개발자가 더 높은 수준에서 사고할 수 있도록 돕기 위해 사용되어야 합니다.
이번 포스트는 여기서 마치겠습니다.
다른 개발자분들은 Claude Code, Copilot, Cursor 또는 다른 AI 도구들을 워크플로 (workflow)에서 어떻게 활용하고 계시는지 정말 궁금합니다.
현재 여러분의 설정 (setup)은 어떤 모습인가요?
그리고 지금까지 어떤 AI가 여러분의 주력 코딩 코파일럿 (coding copilot)이 되었나요?
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기