AI시대의 도래
자고 일어나면 새로운 AI가 등장했다는 기사, AI로 인해 많은 직원들이 해고되었다는 기사 등 AI 기사들이 쏟아진다.
다른 직업과 접점이 없어 이야기해본 적은 없지만 개발자도 AI로 인해 업무가 변화하고 있는 것은 확실하다. 개발자의 일부 업무를 AI가 훨씬 빠르고, 정확하게 일을 해낸다. AI를 쓰지 않을 이유가 없다.
그래서 "AI를 써야 한다"는 당위보다, 지난 1년간 개발 업무에서 실제로 어떻게 활용해왔는지 구체적인 사례와 팁을 공유해보려 한다.
AI의 활용
1. AI 멘토
나는 매일, 그리고 매주 회고를 작성한다. 보통 요즘 하고 있는 생각이나 고민을 위주로 작성하는 편이다. 회고를 작성하고, 항상 내 개발자 멘토에게 조언을 구한다.
아래는 가장 최근에 개발자 멘토에게서 조언을 구한 대화이다.
프롬프트
당신은 10년 이상의 경력을 가진 시니어 프론트엔드 개발자이자 제 멘토입니다.
**역할과 관점:**
- React, TypeScript, 모던 프론트엔드 생태계에 깊은 이해를 가진 전문가
- 주니어/미들레벨 개발자를 여러 명 성장시킨 경험이 있는 멘토
- 기술적 성장뿐만 아니라 커리어 발전에 대한 실질적인 조언 가능
- 직설적이지만 따뜻하고 건설적인 피드백 스타일
**상황 맥락:**
- 저는 [본인의 경력 수준, 예: 2년차 프론트엔드 개발자]입니다
- 현재 [회사 규모/업무 환경, 예: 스타트업에서 React로 웹 서비스 개발] 중입니다
- [현재 고민이나 상황, 예: 기술 스택 선택, 커리어 방향성, 업무 효율성 등]에 대해 고민하고 있습니다
**요청사항:**
제가 오늘 겪은 상황이나 고민을 말씀드릴 테니, 다음과 같은 관점에서 조언해주세요:
1. **기술적 관점**: 더 나은 개발 방법이나 접근법이 있는지
2. **성장 관점**: 이 경험을 통해 어떻게 성장할 수 있는지
3. **커리어 관점**: 장기적인 커리어에 어떤 영향을 미칠지
4. **실무 관점**: 팀워크나 업무 효율성 개선 방안
**응답 형식:**
- 공감과 이해를 바탕으로 한 따뜻한 조언
- 구체적이고 실행 가능한 제안
- 필요시 관련 자료나 학습 방향 제시
- **마지막에 반드시 "실행 가능한 액션 아이템 3-5개"를 우선순위와 함께 정리**
준비되셨으면 오늘의 고민이나 생각을 들려주세요.
이렇게 하면 혼자 회고할 때는 안 나오던 관점이 나온다. 내가 신경 쓰는 건 두 가지다. 멘토 프롬프트를 매번 똑같이 써서 조언에 연속성을 만드는 것, 그리고 질문만 던지지 않고 그날 겪은 상황을 맥락째 전달하는 것. 마지막에 실행 가능한 행동 계획까지 요청하면 조언이 조언으로 끝나지 않는다. 의외로 기술 얘기보다 커리어나 팀 관계 고민에서 도움을 더 많이 받았다.
2. AI 프롬프트 엔지니어
AI에게 프롬프트는 정말 중요하다. 프롬프트가 AI의 답변의 질을 결정한다. 그렇기에 우리는 프롬프트를 ‘잘’ 작성해야한다. 프롬프트를 잘 작성하는 방법에는 페르소나, 5W 등의 기법이 있으나 프롬프트를 작성할 때마다 전부 다 챙기기에는 쉽지가 않다.
그래서 나는 AI에게 명령할 프롬프트를 개선시켜주는 AI를 사용한다.
프롬프트
# 프롬프트 엔지니어링 개선 요청
## 역할 정의
당신은 전문 프롬프트 엔지니어입니다. AI 모델이 최적의 성능을 발휘할 수 있도록 프롬프트를 분석하고 개선하는 것이 당신의 전문 분야입니다.
## 작업 목표
제가 제공하는 기존 프롬프트를 분석하여 AI가 더 정확하고 유용한 답변을 생성할 수 있도록 개선된 버전을 작성해주세요.
## 개선 기준
다음 요소들을 고려하여 프롬프트를 개선해주세요:
### 1. 명확성 향상
- 모호한 표현을 구체적으로 수정
- 명확한 지시사항과 기대 결과 명시
- 전문 용어나 맥락이 필요한 부분에 대한 설명 추가
### 2. 구조화 및 체계성
- 논리적 순서로 요청사항 재배열
- 단계별 프로세스가 필요한 경우 명확한 단계 제시
- 우선순위나 중요도 표시
### 3. 제약조건 명시
- 준수해야 할 규칙이나 가이드라인 명확히 제시
- 피해야 할 사항이나 제한사항 구체적으로 명시
- 원하는 출력 형식, 길이, 스타일 지정
### 4. 맥락 정보 보강
- 작업의 배경이나 목적 제공
- 대상 독자나 사용 목적 명시
- 예시나 참고 자료 포함 (필요시)
## 출력 형식
개선된 프롬프트를 제공할 때는 다음 구조를 따라주세요:
1. **개선된 프롬프트** (완성된 버전)
2. **주요 개선사항** (무엇이 어떻게 개선되었는지 요약)
3. **추가 제안사항** (필요시 더 나은 결과를 위한 권장사항)
## 중요 원칙
- **원래 의도 유지**: 기존 프롬프트의 핵심 목적과 의도를 변경하지 마세요
- **실용성 중시**: 실제로 사용 가능하고 효과적인 개선안을 제시하세요
- **적절한 수준**: 과도하게 복잡하게 만들지 말고, 필요한 만큼만 개선하세요
---
**이제 개선하고 싶은 기존 프롬프트를 제공해주세요.**
이 프롬프트 엔지니어 AI는 급하게 쓴 프롬프트를 다듬거나 팀원들과 공유할 프롬프트의 완성도를 높일 때 유용하게 쓰고는 한다. 모호하게 쓴 프롬프트도 이 과정을 거치면 눈에 띄게 구체적으로 바뀜다.
3. AI 상담사
가끔 고민이 생길 때가 있다. 그것이 중요한 고민일 때도 있고, 정말 사소한 고민일 때도 있다. 그럴 때 심리 상담사가 옆에 있다면 큰 도움이 되고, 심리적 의지도 된다. AI가 그 역할을 어느 정도 대신해준다.
4. AI 복습 매니저
더 자세한 내용 : 2. 복습 시스템
나는 주로 학습한 것들을 노션에 작성한다. 그리고 노션 AI에게 내가 작성한 기록을 바탕으로 질문을 만들고, 이에 대해 스스로 답변을 해본다. 그 다음 Claude AI에게 답변에 대한 피드백을 요청한다.
순서는 이렇다. 배운 걸 노션에 정리한다 → 노션 AI에게 이 내용으로 질문을 만들어달라고 한다 → 안 보고 답을 써본다 → Claude에게 내 답을 채점받는다 → 틀린 부분만 다시 본다. 시험 문제를 스스로 출제하고 푸는 셈이다.
5. AI 개발자 인턴
요즘에는 주로 Claude Code를 사용하며 개발을 한다. Claude Code는 터미널에서 직접 AI와 협업할 수 있는 도구인데, 실제 프로젝트 파일을 읽고 수정할 수 있어서 정말 실용적이다.
최근에 겪었던 OpenAI API 키 노출 문제를 해결하는 과정을 통해서 AI와 어떻게 협업하는지 보여주려고 한다. 어느 날 OpenAI에서 메일이 왔다. 내 API 키가 크롬 확장 프로그램에서 노출되어 보안상 위험하다는 내용이었다.
사실 예전부터 '이거 언젠가 문제가 될 텐데..'라는 생각은 하고 있었지만 계속 미뤄왔던 일이었다. 기존에는 사이드 패널에서 Background Script로 요청을 보내고, Background Script에서 OpenAI API를 호출하는 방식이었다. 그런데 알고 보니 Background Script의 네트워크 요청이 개발자 도구를 열면 그대로 노출된다는 거였다. API 키가 숨겨져 있다고 생각했는데 전혀 그렇지 않았던 셈이다.
Claude에게 이 상황을 설명하고 해결 방법을 물어봤다. 여러 옵션이 있었는데 백엔드 프록시 서버를 구축하거나, 서버리스 함수를 활용하거나, 아니면 사용자가 직접 API 키를 입력하도록 하는 방법들이었다. 이 중에서 Vercel Edge Functions를 사용한 Next.js Route Handler 방식이 가장 적합해 보였다. 그래서 Claude에게 구체적인 구현 방법을 요청했다. 처음에는 단순하게 "Next.js Route.js를 사용해서 서버리스 함수로 만들어줘"라고 했는데, Claude가 좀 더 구체적인 요구사항이 필요하다고 하더라. 그래서 프로젝트 배경부터 시작해서 현재 아키텍처, 개선하고 싶은 부분, 보안 요구사항까지 상세하게 설명했다.
Claude는 단계별로 접근했다. 먼저 기본적인 Route Handler를 만들고, 그 다음에 보안 검증 로직을 추가하고, 마지막에 확장성을 고려한 범용 엔드포인트로 개선하는 식이었다. 특히 Chrome 확장 프로그램 ID를 검증해서 특정 확장 프로그램에서만 접근할 수 있도록 하는 부분이 인상적이었다.
// 개선된 Route Handler
export async function POST(request) {
// Chrome 확장 프로그램에서만 접근 허용
const origin = request.headers.get('origin');
const validOrigin = `chrome-extension://${process.env.CHROME_EXTENSION_ID}`;
if (origin !== validOrigin) {
return Response.json({ error: 'Unauthorized' }, { status: 403 });
}
// 실제 OpenAI API 호출은 서버에서 처리
// API 키는 환경변수로 안전하게 관리
}
이 과정에서 내가 "사용자가 직접 이 Next.js route에 접속하면 어떻게 해?"라는 우려를 표현했는데, Claude가 Chrome 확장 프로그램 ID 검증과 API 키 기반 인증 두 가지 방법을 제안해줬다. 결국 확장 프로그램 ID 검증 방식을 택했는데, 이게 우리 상황에 더 적합했다. 작업을 마치고 나니 사이드 패널에서는 더 이상 API 키가 노출되지 않았다. 대신 Next.js 서버로 요청을 보내고, 실제 OpenAI API 호출은 서버에서 처리하니까 완전히 숨겨졌다.
이런 식으로 Claude와 협업하면서 느낀 건, 코드만 뽑아주는 게 아니라 같이 문제를 뜯어보는 느낌이었다. 보안이나 확장성 이슈를 미리 짚어줬고, 선택지별 장단점도 정리해줬다. 물론 AI가 제안한 모든 걸 그대로 받아들이지는 않는다. 실제로 구현해보고 테스트해보면서 우리 상황에 맞게 조정하는 과정이 필요하다. 하지만 혼자 붙들고 있을 때보다 훨씬 빨리 풀렸다.
6. 그 외의 AI 팀원들
사이드 프로젝트에는 기획자도 디자이너도 QA도 없다. 그래서 필요할 때마다 AI에게 그 모자를 씌운다.
새 기능을 붙이기 전엔 기획자 페르소나로 유저 스토리를 검토받고, 화면이 어색하면 디자이너 페르소나에게 물어보고, 배포 전엔 테스터 페르소나에게 엣지 케이스를 뽑아달라고 한다. 셋 다 써본 결과, 특히 엣지 케이스 발굴은 나 혼자 할 때보다 확실히 춘춘했다.
앞으로의 AI 전망
앞으로는 AI를 활용할 수 있는 무대가 넓어질 것이고, AI가 점점 강력해질 거라 예상한다.
가까운 미래의 개발 워크플로우를 상상해보면, 개발자가 프롬프트를 작성하면 AI가 이 프롬프트를 구체화하고 개발자에게 확인을 요청한다. 그러면 AI가 실제 코드를 구현하고, 개발자가 코드를 검토한 후 승인한다. AI가 자동으로 커밋 및 PR을 생성하고, AI가 코드 리뷰를 수행한다. 개발자가 피드백을 검토한 후 수정 사항을 확인하면, AI가 수정 사항을 반영하고 머지까지 완료한다.
이런 시나리오는 이미 부분적으로 현실화되고 있다. GitHub Copilot Workspace, Cursor, Claude Code 등의 도구들이 이런 방향으로 발전하고 있으며, 일부 기능들은 이미 베타 테스트 중이거나 출시된 상태다.
물론 지금도 한계는 매일 체감한다. Claude Code가 자신만만하게 없는 API를 지어내는 걸 보면 아직 멀었다 싶다가도, 반년 전과 비교하면 무섭게 좋아지고 있다. 결국 AI가 잘하는 것과 못하는 것의 경계를 계속 갱신하면서, 잘하는 영역을 최대한 넘기면 된다.