AI 코딩 에이전트 시대, 개발자가 반드시 알아야 할 필수 약어 사전 — TDD부터 YAGNI, 그리고 코드 품질을 끌어올리는 지시어까지
💡 TL;DR (3줄 요약)
- 지시어로서의 약어: Claude Code, Codex, Gemini CLI 같은 AI 에이전트 환경에서 낯선 영어 약어들은 단순한 상식이 아니라, 프롬프트나 규칙 파일에 박아 넣는 순간 AI가 산출하는 코드 품질을 직접 결정하는 ‘제어 지시어’ 역할을 수행합니다.
- 과잉 설계 억제: 중복을 방지하는 DRY, 단순함을 유지하는 KISS, 선제적 확장 설계를 막는 YAGNI를 명시하는 것만으로도 AI가 스스로 불필요한 파일이나 복잡한 추상화 레이어를 남용하는 현상을 극적으로 차단할 수 있습니다.
- 실전 워크플로우 템플릿: 매 세션 프롬프트를 낭비할 필요 없이 프로젝트 루트에
CLAUDE.md또는.cursorrules파일을 두고 개발 방법론과 보안, 성능 체크리스트를 구조화해 두면 에이전트가 이를 알아서 자동으로 상시 준수합니다.
1. 개발 방법론 — 프로세스를 정의하는 약어
AI 에이전트에게 작업 프로세스의 표준을 명시할 때 사용하는 필수 약어들입니다.
- TDD (Test-Driven Development, 테스트 주도 개발)
테스트를 먼저 작성하고, 그 테스트를 통과하는 최소한의 코드를 구현한 뒤, 리팩토링하는 사이클을 반복하는 개발 방법론입니다.Red(실패하는 테스트 작성) → Green(테스트 통과) → Refactor(코드 정리)의 3단계 루프가 핵심입니다. AI 에이전트에게 “TDD로 진행해줘”라고 지시하면 에이전트가 요구사항을 테스트 코드 형태로 먼저 명확히 정의하게 되므로, 모호한 구현이나 빠뜨린 케이스가 눈에 띄게 줄어듭니다. AI 코딩에서 체감 효과가 가장 큰 지시어 중 하나입니다. - BDD (Behavior-Driven Development, 행동 주도 개발)
TDD를 확장해 사용자 행동 시나리오 관점에서 테스트를 기술하는 방법론입니다.Given(주어진 상황) – When(어떤 행동을 하면) – Then(이런 결과가 나온다)형식으로 작성하며, 비개발자도 읽을 수 있는 자연어에 가까운 테스트가 특징입니다. 기획자와 협업하거나 요구사항 문서를 테스트로 변환할 때 유용합니다. - DDD (Domain-Driven Design, 도메인 주도 설계)
비즈니스 도메인(업무 영역)의 개념과 언어를 코드 구조에 그대로 반영하는 설계 철학입니다. 예를 들어 통신망 관리 시스템이라면 코드에도Alarm,NetworkElement,Path같은 도메인 용어가 클래스와 모듈 이름으로 등장해야 합니다. 도메인 전문가와 개발자가 같은 언어(유비쿼터스 언어)를 쓰게 만드는 것이 목표입니다. - CI/CD (Continuous Integration / Continuous Deployment)
지속적 통합/지속적 배포. 코드를 푸시할 때마다 자동으로 빌드·테스트(CI)하고, 통과하면 자동으로 배포(CD)까지 이어지는 파이프라인을 뜻합니다. GitHub Actions, GitLab CI, Jenkins가 대표 도구입니다. AI 에이전트에게 “GitHub Actions로 CI 파이프라인 구성해줘”라고 하면 테스트 자동화까지 한 번에 세팅할 수 있습니다. - MVP (Minimum Viable Product) / PoC (Proof of Concept)
MVP는 핵심 기능만 담은 최소 기능 제품, PoC는 “이게 기술적으로 되는가?”를 검증하는 개념 증명 단계입니다. AI 에이전트에게 “일단 PoC 수준으로 만들어줘”와 “프로덕션 수준으로 만들어줘”는 완전히 다른 결과물을 만들어내므로, 원하는 완성도 레벨을 이 용어로 명확히 지정하는 것이 좋습니다.
2. 코드 설계 원칙 — AI에게 “좋은 코드”의 기준을 알려주는 약어
AI 에이전트가 스스로 코드를 짤 때 불필요한 과잉 설계를 막고 정돈된 코드를 짜게 만드는 통제용 원칙들입니다.
- DRY (Don’t Repeat Yourself)
“같은 코드를 반복하지 마라.” 동일한 로직이 두 곳 이상에 존재하면 함수나 모듈로 추출하라는 원칙입니다. 중복 코드는 수정할 때 한 곳을 빠뜨리는 버그의 온상이 됩니다. AI 에이전트는 종종 비슷한 코드를 복붙하듯 생성하는 경향이 있어서,CLAUDE.md에 DRY 원칙을 명시해두면 유틸 함수로 추출하는 습관이 잡힙니다. - KISS (Keep It Simple, Stupid)
“단순하게 유지하라.” 복잡한 해법보다 단순한 해법이 거의 항상 낫다는 원칙입니다. AI는 가끔 필요 이상으로 화려한 디자인 패턴과 추상화 계층을 쌓아 올리는데, “KISS 원칙 지켜서 단순하게”라는 한 마디로 과잉 설계를 억제할 수 있습니다. - YAGNI (You Aren’t Gonna Need It)
“지금 필요 없는 기능은 만들지 마라.” ‘나중에 필요할지도 몰라’라며 미리 만들어두는 코드는 대부분 쓰이지 않고 유지보수 부담만 남깁니다. AI 에이전트는 요청하지 않은 옵션 파라미터, 설정 파일, 확장 포인트를 알아서 추가하는 버릇이 있어서 YAGNI는 특히 효과적인 억제 지시어입니다. - SOLID — 객체지향 설계 5원칙
SRP(단일 책임: 클래스는 하나의 책임만),OCP(개방-폐쇄: 확장에는 열려 있고 수정에는 닫혀 있게),LSP(리스코프 치환: 자식 클래스는 부모를 대체 가능해야),ISP(인터페이스 분리: 사용하지 않는 메서드에 의존하지 않게),DIP(의존성 역전: 구체가 아닌 추상에 의존)의 앞글자를 딴 약어입니다. C++/Java 같은 객체지향 레거시 코드를 리팩토링할 때 “SOLID 원칙 기준으로 문제점 분석해줘”라고 지시하면 구조적 리뷰를 받을 수 있습니다. - SoC (Separation of Concerns, 관심사 분리)
UI 로직, 비즈니스 로직, 데이터 접근 로직을 서로 섞지 말고 분리하라는 원칙입니다. MVC, 레이어드 아키텍처의 뿌리가 되는 개념으로, 하나의 파일에 DB 쿼리와 화면 렌더링이 섞여 있다면 SoC 위반입니다.
3. AI / LLM 용어 — 에이전트 시대의 필수 신조어
- LLM (Large Language Model) / RAG (Retrieval-Augmented Generation)
LLM은 GPT, Claude, Gemini 같은 대규모 언어 모델을 통칭합니다. RAG는 검색 증강 생성으로, 모델이 답변하기 전에 외부 지식(DB, 문서, 벡터 스토어)을 먼저 검색해 컨텍스트로 주입하는 아키텍처입니다. 자연어를 SQL로 변환하는 NL-to-SQL 시스템, 사내 문서 챗봇이 모두 RAG 구조 위에서 동작하며, 환각(Hallucination)을 줄이는 가장 실용적인 방법으로 꼽힙니다. - MCP (Model Context Protocol)
앤스로픽이 공개한 오픈 프로토콜로, LLM이 외부 도구·데이터 소스(파일시스템, DB, API, 브라우저 등)에 표준화된 방식으로 연결되도록 하는 규격입니다. “AI 에이전트계의 USB-C”라는 별명처럼, MCP 서버 하나만 만들어두면 Claude Desktop, Claude Code, 기타 호환 클라이언트 어디서든 재사용할 수 있습니다. - CoT (Chain of Thought, 사고 사슬)
모델이 최종 답을 내기 전에 중간 추론 단계를 단계별로 밟도록 하는 프롬프팅 기법이자, 최신 추론 모델(Reasoning Model)의 핵심 동작 원리입니다. “단계별로 생각한 뒤에 답해줘”라는 지시가 CoT를 유도하는 가장 단순한 형태입니다. - KV Cache / TTFT / TPS — 추론 성능 3형제
- KV Cache(Key-Value Cache): 트랜스포머가 이미 처리한 토큰의 어텐션 계산 결과를 저장해 재활용하는 메모리 구조로, 로컬 LLM의 메모리 사용량과 속도를 좌우합니다.
- TTFT(Time To First Token): 첫 토큰이 출력될 때까지 걸리는 지연 시간.
- TPS(Tokens Per Second): 초당 생성 토큰 수. Ollama, vLLM 같은 로컬 추론 환경을 튜닝할 때 반드시 보게 되는 핵심 지표들입니다.
- SFT / RLHF — 모델 훈련 용어
SFT(Supervised Fine-Tuning)는 정답 예시 데이터로 모델을 미세조정하는 단계이며, RLHF(Reinforcement Learning from Human Feedback)는 인간의 선호도 평가를 보상 신호로 삼아 강화학습하는 단계입니다. ChatGPT 이후 대부분의 상용 챗봇 모델들이 이 과정을 거쳐 정렬되었습니다.
4. 아키텍처 / 인프라 / 협업 약어 정리
| 약어 명칭 | 전체 용어 명칭 (Full Name) | 핵심 개념 및 에이전트 지시 활용법 |
|---|---|---|
| API | Application Programming Interface | 프로그램끼리 대화하는 규약. AI에게 “RESTful 규격에 맞춰 엔드포인트를 설계해줘” 등으로 명확히 지정해 쓸 수 있습니다. |
| CRUD | Create, Read, Update, Delete | 데이터 조작의 기본 4연산. “특정 엔티티에 대한 CRUD API 컨트롤러를 만들어줘”는 가장 흔한 지시 중 하나입니다. |
| ORM | Object-Relational Mapping | SQL 대신 객체 지향 언어로 DB를 다루는 기법(SQLAlchemy, Prisma 등). 편리하지만 N+1 쿼리 문제의 주범이 되기도 합니다. |
| IaC | Infrastructure as Code | 인프라 구성을 코드(Terraform, Ansible)로 관리하는 기법. 에이전트에게 “AWS 인프라 구성을 IaC 스크립트로 짜줘”라고 요청하면 재현이 쉬워집니다. |
| SSOT | Single Source of Truth | 단일 진실 공급원. 동일 데이터가 여러 곳에 복제되어 모순되는 것을 막기 위해 공식 원본을 하나로만 정하는 데이터 설계 원칙입니다. |
| PRD | Product Requirements Document | 제품 요구사항 문서. 에이전트에게 큰 작업을 맡길 때 PRD 작성을 먼저 시키면 구현물 개발 시 요구사항이 흔들리지 않습니다. |
| ADR | Architecture Decision Record | “왜 이 특정 기술이나 설계를 선택했는가”를 기록하는 문서입니다. 작성해두면 추후 유지보수 시 인간 개발자와 AI 모두에게 중요한 컨텍스트가 됩니다. |
| PR / LGTM | Pull Request / Looks Good To Me | 코드 병합 요청 및 리뷰 승인. AI 에이전트가 코드를 짜서 PR을 자동으로 올리고 사람이 최종 코드 검사 후 LGTM을 주는 방식이 정석화되고 있습니다. |
5. 코드 품질을 끌어올리는 실전 지시어

지금부터 나오는 용어들은 단순히 개념을 아는 것에서 그치지 않고, 프롬프트에 넣거나 규칙에 주입하는 순간 AI가 만드는 코드의 완성도를 격상시키는 실전 명령 키워드들입니다.
🧪 테스트 및 검증 계열
- Unit / Integration / E2E Test: 테스트의 3대 레벨입니다. Unit Test는 개별 함수 격리 검증, Integration Test는 모듈 간 연동(API+DB) 검증, E2E(End-to-End)는 사용자 실제 시나리오 전체를 검증합니다. “유닛 테스트 및 모킹을 포함해서 작성해줘”처럼 원하는 검증 수준을 정확히 전달하십시오.
- Edge Case (경계 조건): 빈 배열,
null,0, 음수값, 최대값 한계치, 다국어/이모지 등 정상 흐름의 경계에 걸쳐 있는 입력값입니다. AI는 해피 패스(정상 흐름)만 구현하고 끝내는 경향이 있으므로 “엣지 케이스 예외 처리를 확실하게 해줘”라는 지시가 프로덕션 환경의 크래시 버그를 차단하는 핵심 열쇠가 됩니다. - Regression (리그레션) / Test Coverage: 수정 사항이 기존 기능을 망가뜨리는 퇴보 현상을 의미합니다. “기존 테스트를 돌려 리그레션이 발생하지 않는지 검증해”는 필수 안전장치입니다. 커버리지는 테스트 검증 범위를 뜻하며, “테스트 커버리지 80% 이상 확보”와 같은 수치 정량화로 사용합니다.
- Mocking / Stub: 외부 의존성(DB, 외부 API)을 모사 객체로 대체하는 기법입니다. “실제 DB 조회를 지양하고 DB 계층은 Mocking해서 단위 테스트해줘”라고 지시할 수 있습니다.
🛡️ 에러 처리 및 견고성 계열
- Fail Fast: 비정상적인 값이나 잘못된 상태를 확인하면 조용히 리턴하지 말고 즉시 오류를 터뜨려 중단하라는 원칙입니다. 오류가 터지지 않고 깊은 모듈 속으로 비정상 값이 흘러 들어가 엉뚱한 곳에서 터지면 디버깅이 지옥이 됩니다. AI가 무분별하게
try-catch로 에러를 가려버리는 행위를 억제합니다. - Graceful Degradation (우아한 성능 저하): 일부 기능이 실패해도 전체 시스템이 다운되지 않고 축소된 성능으로나마 유기적으로 동작하게 만드는 설계 원칙입니다. 오류 시 전체 크래시 대신 로컬 캐시 데이터를 띄우거나 빈 UI를 띄우는 대응을 명령할 수 있습니다.
- Idempotency (멱등성): 동일 요청을 몇 번을 호출하더라도 결과 상태가 한 번 실행했을 때와 동일하게 유지되는 성질입니다. 중복 API 호출이나 배치 재실행 환경에서 데이터 무결성을 보장하기 위해 필수적으로 지시해야 합니다.
- Retry with Exponential Backoff: API 실패 시 재시도 대기 시간을 1초, 2초, 4초와 같이 지수적으로 늘려가며 요청하는 정교한 재시도 패턴입니다. 외부 LLM API처럼 API 요청량 제한(Rate Limit)이 빡빡한 서버를 연동할 때 필수적으로 적용해야 합니다.
📐 코드 구조 및 리팩토링 계열
- Refactor / Code Smell: 동작 기능은 그대로 보존하고 내부 코드 설계 가독성을 높이는 것이 리팩토링입니다. AI에게 이 작업을 시킬 때는 기능이 슬그머니 바뀌는 사고를 방지하기 위해 “기존 테스트를 통과하는 상태에서 리팩토링만 수행해줘”라고 범위를 단호하게 못 박아야 합니다. 코드 스멜은 버그는 아니지만 나쁜 징후가 보이는 패턴을 뜻합니다.
- Cyclomatic Complexity (순환 복잡도): 코드의 제어 흐름 분기(if, while, for 등)가 얼마나 얽혀 있는지 계량화한 지표입니다. 보통 하나의 함수당 10을 초과하면 함수를 쪼개라는 신호입니다. AI에게 “함수당 순환 복잡도를 10 이하로 제한해”라고 명확히 제약 조건을 둘 수 있습니다.
- Cohesion / Coupling (응집도 / 결합도): 높은 응집도(비슷한 로직이 뭉쳐 있음)와 낮은 결합도(모듈 간 의존성이 낮음)를 명령하여 스파게티 의존 관계를 방어합니다.
- Immutability (불변성) / Pure Function (순수 함수): 기존 데이터를 수정하지 않고 매번 새로운 값을 반환하게 하는 불변성과, 부수효과(Side Effect)가 전혀 없는 순수 함수 설계를 명시하면 복잡한 비동기/멀티스레드 환경의 버그 발생률을 제로에 가깝게 만들 수 있습니다.
💾 성능 및 데이터베이스 계열
- N+1 Problem: 루프 내부에서 데이터 조회를 반복 실행하여 1번의 쿼리로 끝날 일을 N+1번 실행해 DB 서버를 뻗게 만드는 흔한 안티패턴입니다. “ORM 조회 시 N+1 이슈가 없도록 Eager Loading이나 JOIN으로 묶어서 처리해줘”라고 정밀 진단 지시를 넣어야 합니다.
- Big-O (시간 복잡도): 알고리즘 연산 효율 상한선입니다. AI에게 성능 효율 상향을 직접 강제하기 위해 “시간 복잡도 O(n log n) 이하로 정렬 로직을 최적화해”라고 명시할 수 있습니다.
- Index Scan vs Full Table Scan: 인덱스를 타는지 테이블 전체를 긁는지의 구분입니다. “EXPLAIN 실행 결과를 확인하여 풀 테이블 스캔이 일어나지 않도록 필요한 인덱스를 제안하고 쿼리를 튜닝해줘”라고 지시해야 합니다.
- Connection Pooling / Lazy vs Eager Loading: 연결 비용을 재활용하는 커넥션 풀 적용 및 지연/즉시 로딩 옵션을 명시적으로 지시하여 전체 시스템 처리량을 획득합니다.
🔒 보안 및 안전 규격
- Sanitize / Validation: 입력값이 유효한 데이터 포맷인지 검사하는 Validation과, 위험한 문자나 HTML 태그를 중립화하는 Sanitize 정제 작업을 의미합니다. “모든 입력창 데이터는 sanitize를 거치게 설계해”로 주입합니다.
- SQL Injection / XSS: DB 질의 조작과 크로스 사이트 스크립팅 웹 취약점입니다. AI가 직접 쿼리를 생성하거나 프론트를 빌드할 때 매개변수 바인딩(Prepared Statement)과 문자열 이스케이프가 절대 누락되지 않도록 강제합니다.
- Least Privilege (최소 권한) / Secret Management: 각 API Key나 DB 커넥션 자격 증명은 필요한 최소 권한으로 격리(Least Privilege)하고, 절대 API 키를 날것으로 코드 상에 하드코딩하지 말고
.env환경변수로 격리(Secret Management)하도록 강제하는 것은 현대 AI 코딩 에이전트 환경에서 가장 누락하기 쉬운 필수 보안 수칙입니다.
🤖 AI 에이전트 전용 제어
- Plan Mode / Plan-then-Execute: 실제 파일 코드를 수정하기 전, 구현 로드맵과 계획을 먼저 주석으로 승인받는 안전 설계 단계입니다. 큰 리팩토링이나 신기능 추가 시 엉뚱한 코드로 변형되는 사고를 막는 데 유용합니다.
- Atomic Commit: 기능 추가와 리팩토링, 버그 수정을 하나의 커밋에 섞어 올리는 것이 아닌 개별 기능 단위로 논리적으로 잘게 쪼개어 커밋하도록 명령하는 팁입니다.
- Self-Review (자가 리뷰): “작성한 소스코드를 전송하기 전 스스로 자가 리뷰하여 버그나 개선점 3가지를 지목하고 수정해줘”라는 지시는 AI의 출력 완성도를 눈에 띄게 끌어올려 줍니다.
- Lint / Static Analysis / Type Safety: 타입스크립트 Strict 컴파일이나 파이썬 ruff/mypy 검사를 사전에 통과하게 만드는 기계적인 규칙 준수 보증 조항입니다.
6. 실전 템플릿: 내 프로젝트 CLAUDE.md 규칙에 박아두기
이 많은 약어 지시어를 매 대화마다 타이핑하는 것은 비효율적입니다. 아래의 마크다운 서식을 그대로 복사하여 프로젝트 루트 경로에 CLAUDE.md 또는 에이전트 설정 규칙 파일로 저장해 두십시오. 에이전트가 알아서 상시 준수하여 완벽한 상태를 유지하게 됩니다.
## 1. 프로세스 및 워크플로우
- Plan-then-Execute: 큰 규모의 작업은 구현 전 계획(Plan)을 먼저 수립하여 제시하고 승인을 득한 후 실행한다.
- TDD 준수: 가능한 단위 기능은 테스트(Unit Test)를 선제적으로 작성하고 통과하는 코드를 구현한다.
- Atomic Commit: 하나의 커밋 메시지에는 오직 하나의 논리적 변경(버그 수정 또는 리팩토링 등)만 담는다.
## 2. 코드 설계 원칙
- DRY, KISS, YAGNI 원칙을 엄격하게 지킨다. 나중에 필요할 것으로 예상되는 추가 기능이나 사용하지 않는 옵션은 구현을 금지한다.
- 함수당 순환 복잡도(Cyclomatic Complexity)는 10 이하를 무조건 준수하며 초과 시 반드시 모듈로 쪼갠다.
- 모든 Public 메서드 및 함수 인터페이스에는 엄격하게 타입 힌트(Type Safety)를 누락 없이 선언한다.
## 3. 예외 처리 및 견고성
- Fail Fast 원칙에 의거하여, 비정상적이거나 엣지 케이스(Edge Case)에 준하는 입력에 대해 즉각적인 에러를 명시적으로 던진다.
- 에러를 아무 조치 없이 삼키는 빈 catch/except 블록 선언을 절대 금지한다.
- 모든 외부 API 통신 및 LLM 요청 로직에는 Exponential Backoff가 적용된 재시도(Retry) 패턴을 포함한다.
## 4. 데이터베이스 및 성능 관리
- 루프 내 단발성 쿼리 작성을 지양하며, N+1 쿼리 문제가 없는지 JOIN 구문과 Eager Loading 설정을 교차 확인한다.
- 모든 복잡한 데이터 조회 로직은 Big-O 복잡도를 주석으로 표기하고 성능을 의식해 최적화한다.
## 5. 보안 수칙
- API Key, DB 비밀번호 등의 자격 증명(Secrets)은 절대로 코드 소스 내에 하드코딩하지 않고 환경변수(.env)로만 바인딩한다.
- 모든 DB 쿼리는 SQL Injection 방지를 위해 문자열 조립을 엄금하고 파라미터 바인딩을 의무적으로 사용한다.
- 사용자 외부 데이터 입력 구간에는 무조건 Validation 및 Sanitize 코드를 결합한다.
## 6. 품질 완료 조건
- 구현이 종료되면 에이전트는 작성된 코드를 스스로 검사하여 3개의 버그 유무를 진단하는 Self-Review 과정을 거쳐 리포트한다.
- 기존 코드의 퇴보를 방지하기 위해 전체 유닛 테스트를 기동하여 리그레션(Regression) 여부를 최종 검증한다.
💡 마치며: AI를 똑똑하게 쓰는 프롬프트 팁
이 약어들은 이제 개발자 간의 의사소통 수단을 넘어, AI 에이전트의 출력 품질을 정밀하게 제어하는 일종의 지배 언어로 변모했습니다.
동일한 개발 요청이더라도, 단순히 “회원 가입 컨트롤러 만들어줘”라고 말하는 것과 “TDD로 엣지 케이스 처리를 누락 없이 고려하고, Fail Fast 원칙과 멱등성을 지켜서 회원 가입 컨트롤러를 구현해줘”라고 상세 키워드를 섞어 명령하는 것의 산출물 퀄리티는 하늘과 땅 차이입니다.
오늘부터 당장 자주 사용하는 몇 가지 약어를 CLAUDE.md 규칙에 추가해 보십시오. AI가 뱉어내는 엉뚱하고 불안정한 버그 코드가 기적처럼 확연히 감소하는 것을 목격할 수 있을 것입니다!
