이 글의 핵심 개념을 보여주는 대표 이미지. AI를 활용해 반복적인 보일러플레이트 코드를 빠르고 안전하게 생성하는 기준

AI를 활용해 반복적인 보일러플레이트 코드를 빠르고 안전하게 생성하는 기준


오후 2시, 당신에게 15개의 CRUD 엔드포인트와 그에 맞는 단위 테스트를 전부 작성하라는 티켓이 떨어졌습니다. 개발자들이 가장 싫어하는, 뇌를 비우고 타이핑만 해야 하는 보일러플레이트 작업입니다. 당연히 당신은 AI 에디터를 켜서 "엔드포인트 다 만들어줘"라고 지시한 뒤, 생성된 코드를 복사해서 붙여넣고 실행 버튼을 누릅니다. 터미널에는 빨간색 에러 메시지가 5줄이나 쏟아집니다. 결국 당신은 AI가 지어낸 엉뚱한 변수명과 임포트 에러를 디버깅하느라 한 시간을 날렸습니다.

직접 코드를 짤 때보다 AI가 짠 코드를 수습하는 데 시간이 더 걸린다면 접근 방식이 틀린 것입니다. AI는 보일러플레이트를 찍어내는 데 압도적으로 빠르지만, 그 결과물은 '우리 프로젝트의 내부 규칙을 단 한 번도 읽어보지 않은 신입 개발자'의 코드처럼 다뤄야 합니다. 이 글에서는 반복 코드를 빠르고, 무엇보다 '안전하게' 프로젝트에 통합하기 위해 제가 실무에서 사용하는 검증 기준을 공유합니다.

1. '묻지마 복붙'이 함정인 진짜 이유

가장 흔히 겪는 가벼운 문제는 AI가 없는 메서드를 지어내거나 구버전 라이브러리를 쓰는 것입니다. 이런 건 IDE가 빨간 줄을 그어주니 금방 잡을 수 있습니다.

하지만 진짜 치명적인 문제는 보일러플레이트 코드가 새로운 기능의 '아키텍처 뼈대'가 된다는 점입니다. AI가 우리 프로젝트 기준에 맞지 않는 에러 처리 패턴을 만들어냈는데, 그걸 20개 파일에 생각 없이 복사해 넣는다고 상상해 보세요. 당신은 방금 나중에 걷어내기 매우 고통스러운 '구조적 기술 부채'를 스스로 주입한 꼴이 됩니다. 6개월 뒤 에러 로깅 포맷을 바꿔야 할 때, 그 20개의 엔드포인트를 일일이 뒤지며 피눈물을 흘리게 될 것입니다.

2. 패턴을 묻지 말고, 완벽한 패턴을 '주입'하라

개발자들이 가장 많이 하는 실수는 AI를 마치 시니어 아키텍트처럼 대하는 것입니다. "유저 컨트롤러 만들어줘"라고 툭 던지면, AI는 프레임워크, ORM, 에러 처리 방식을 스스로 상상해서 짜야만 합니다.

대신, 우리 코드베이스에서 이미 잘 돌아가고 있는 '모범 사례(Golden Template)'를 던져주어야 합니다. 기존에 잘 짜여진 `ProductController` 코드를 통째로 복사해서 AI에게 주고, "이 패턴, 네이밍 룰, 에러 처리 방식을 완벽히 똑같이 유지하면서 `UserController`를 만들어줘"라고 지시하세요. 이렇게 하면 AI가 무언가를 상상하고 지어낼 틈이 사라집니다. AI는 아키텍트가 아니라, 내 규칙에 완벽히 복종하는 엄청나게 빠른 타이피스트가 됩니다.

3. 커밋 전 반드시 거쳐야 할 3가지 검증 원칙

`git commit`을 누르기 전에, AI가 생성한 코드가 다음 세 가지 기준을 통과하는지 확인하세요.

  • 의존성 확인 (Dependency Check): 프로젝트 `package.json`에 없는 라이브러리를 임포트하지는 않았나요? (예: 팀에서는 네이티브 배열 메서드만 쓰기로 했는데 AI가 몰래 `lodash`를 불러온 경우)
  • 네이밍 규칙 확인 (Naming Convention Match): 우리 팀 고유의 표기법(변수는 `camelCase`, 클래스는 `PascalCase`)과 접미사 룰(`*Manager` 대신 반드시 `*Service`를 사용)을 정확히 따르고 있나요?
  • 에러 경계 확인 (Error Handling Boundary): 생성된 코드가 우리 프로젝트의 커스텀 글로벌 에러 미들웨어가 기대하는 규격대로 예외를 포맷팅해서 던지고 있나요?

4. 정적 타입(Type)을 절대적인 방패로 쓰기

TypeScript, Rust, Go 등 정적 타입 언어를 쓴다면 컴파일러를 100% 활용해야 합니다. 처음부터 AI에게 구현체까지 다 짜달라고 하지 마세요. 먼저 인터페이스나 타입 정의만 AI에게 부탁하거나 직접 작성해서 '확정' 짓습니다. 타입이 견고하게 고정되면, 그다음 AI에게 "이 타입을 완벽히 만족하는 구현체를 짜줘"라고 지시하세요. AI가 엉뚱한 필드를 넣거나 리턴 타입을 틀리면, 컴파일러가 즉시 에러를 뱉으며 AI의 환각을 차단해 줍니다.

5. 복붙해서 바로 쓰는 '안전한 코드 생성 프롬프트'

더 이상 AI 창에 대충 지시하지 마세요. 다음 템플릿을 사용해 일관성 있는 보일러플레이트를 생성하세요.

새로운 [엔티티 이름] 도메인을 위한 [컨트롤러/리포지토리 등]을 작성해야 합니다.

아래 첨부된 코드를 '절대적인 구조적 템플릿'으로 사용해 주세요.
1. 임포트 구조와 에러 처리 방식은 템플릿과 완전히 똑같이 유지할 것.
2. 도메인 로직만 [엔티티 이름]에 맞게 변경할 것.
3. 새로운 외부 라이브러리나 유틸리티 함수를 마음대로 추가하지 말 것.

[여기에 기준이 될 우리 프로젝트의 모범 코드(Golden Template) 붙여넣기]

무엇부터 시작할까

지금 작업 중인 프로젝트를 열고, 아키텍처 규칙이 가장 잘 지켜진 깔끔한 파일 하나를 찾으세요. 그 코드를 복사해서 메모장에 'Golden Template'이라는 이름으로 저장해 둡니다. 다음 번 AI에게 코드 생성을 맡길 때, 위 프롬프트와 함께 그 템플릿 코드를 던져주면 결과물의 퀄리티가 완전히 달라질 것입니다.