프롬프트 작성부터 코드 리뷰까지,
개발 워크플로 전반에 AI를 활용하는 방법!
개발자 맞춤형 생성형 AI 활용 가이드!
생성형 AI 시대, 개발자의 역할은 빠르게 진화하고 있습니다. 이 책은 다양한 생성형 AI 도구를 실무에 효과적으로 적용하는 방법을 제시하는 개발자 맞춤형 활용서입니다. 프롬프트 작성, 테스트 생성, 리팩터링 등 실제 개발 단계별로 AI를 통합하는 구체적인 전략을 소개하며, 챗GPT, 깃허브 코파일럿, 랭체인 등 다양한 도구와 기술 스택의 장단점을 비교 분석합니다. 단순한 기능 안내를 넘어, AI와 협업하는 사고방식, 코드에 대한 비판적 시각, 학습 도구로서의 AI 활용 등 개발자가 AI 시대에 갖춰야 할 본질적인 역량까지 깊이 있게 다룹니다. 개인과 조직이 함께 성장할 수 있는 방향도 제시합니다. 기술 변화 속에서도 주도적으로 일하고 싶은 개발자에게 꼭 필요한 안내서가 될 것입니다.
1장 생성형 AI, 엔지니어링의 상식을 뒤집다
1.1 변화는 ‘지금’ 일어나고 있다. 이제 무엇을 할 것인가?
1.2 생성형 AI에 대한 과도한 기대와 현실의 간극
1.3 프롬프트 엔지니어링 기술은 사실 그리 중요하지 않다
__1.3.1 용어의 의미를 정확히 이해하자
__1.3.2 안정성과 정확도를 추구하는 것이 프롬프트 엔지니어링의 핵심이다
__1.3.3 엔지니어링 작업의 대부분은 일회성이다
__1.3.4 프롬프트 엔지니어링 기술이 만능은 아니다
1.4 개발자의 일자리는 사라지지 않는다
__1.4.1 거짓을 간파하는 개발자가 되자
__1.4.2 AI에 적절한 작업을 할당하는 능력을 키우자
__1.4.3 토큰 수에 대한 감각적인 이해
__1.4.4 토큰 수를 조정하여 정확도 유지
__1.4.5 코드 리뷰의 프로가 되자
__1.4.6 적절한 속도의 코드 리뷰
__1.4.7 한 번에 적은 양의 코드 리뷰
__1.4.8 AI의 발전 속에서 시험 받는 개발자의 진정한 가치
1.5 AI는 뛰어난 개발자만을 위한 것이 아니다
__1.5.1 AI는 주니어 개발자의 학습을 돕는 강력한 도구
__1.5.2 AI를 통한 지식 습득
__1.5.3 AI와의 협업을 통한 빠른 시행착오
1.6 개발을 지원하는 AI 도구를 적절히 활용하자
__1.6.1 자동 완성형 – 실시간으로 소규모 코드를 제안
__1.6.2 대화형 – 문제 해결을 유연하게 지원
__1.6.3 에이전트형 – 복합적인 작업 처리를 지원
__1.6.4 상황에 맞게 도구를 적절히 활용하자
1.7 AI로 팀의 경쟁력을 높이자
__1.7.1 맞춤형 AI로 팀 차별화하기
__1.7.2 AI에 제공할 코드베이스는 준비되어 있는가?
__1.7.3 내재화를 통해 AI를 최대한 활용하기
__1.7.4 코드를 조직 차원에서 성장시키기
__1.7.5 비용 절감만을 목적으로 AI를 도입하고 있지 않은가
2장 프롬프트로 생성형 AI 제어하기
2.1 시스템 프롬프트와 사용자 프롬프트
__2.1.1 업무용 프롬프트의 재사용 여부 판단하기
__2.1.2 빠르고 간결한 일회성 프롬프트 생성하기
__2.1.3 재사용 프롬프트의 추상화 및 세분화하기
2.2 프롬프트의 구성 요소 – AI에 적절한 정보를 제공하기 위한 정보 전략
__2.2.1 정보 구조화의 세 요소
__2.2.2 글머리 기호를 사용한 조건 지정하기
__2.2.3 제약 조건을 단계적으로 도입하기
__2.2.4 프롬프트 수정하기
__2.2.5 약속을 어기는 AI에 대응하기
__2.2.6 전문성을 이끌어내는 역할 설정하기
__2.2.7 즉석으로 역할 설정하기
__2.2.8 퓨샷 프롬프팅
__2.2.9 제로샷 프롬프팅
2.3 상황에 따른 프롬프트 최적화 전략
__2.3.1 프롬프트의 품질과 분량의 균형
__2.3.2 최소한의 프롬프트
__2.3.3 효율성을 중시하는 언어 선택: 영어와 한국어의 적절한 활용
__2.3.4 모국어를 활용한 빠른 반복
__2.3.5 영어 프롬프트를 활용한 정교화
__2.3.6 문맥을 분리하기 위한 구분 기호
3장 프롬프트의 사례와 분석
3.1 React 컴포넌트 생성 프롬프트
__3.1.1 핵심 프롬프트는 단순하게: 롤플레이와 기본 지시
__3.1.2 정확도를 높이기: 요구 사항을 정확하게 만족하는 지시
__3.1.3 프롬프트 출력을 제어하기: 포맷 지시
__3.1.4 사용하는 기술 지정하기: 명확한 조건
__3.1.5 프로그램에서 활용을 고려하기: 출력 포맷에 관한 지시
__3.1.6 프롬프트 엔지니어링의 핵심
3.2 스크린샷으로 UI를 생성하는 프롬프트
__3.2.1 당신은 숙련된 개발자: 롤플레이
__3.2.2 한 줄도 빠짐없이 전부 작성해!: 문맥을 강조하는 지시
__3.2.3 외부에서 제공되는 기술: 명확한 조건
__3.2.4 완전한 코드만 반환: 출력 형식 지시
__3.2.5 목적에 맞는 구체적인 프롬프트 설계
3.3 SQL 쿼리 생성 프롬프트
__3.3.1 당신은 SQL 전문가: 롤플레이와 지시
__3.3.2 절대 하지 마세요: 강한 금지의 지시
__3.3.3 주의해 주세요: 지시에 우선순위를 부여
__3.3.4 출력 정리하기: 포맷 지정
__3.3.5 실행 전에 명령을 구체화하기: 콘텐츠 삽입
3.4 프롬프트에서 문맥 정보의 중요성
3.5 범용 에이전트의 프롬프트
__3.5.1 범용 에이전트의 프롬프트는 참고가 될까
__3.5.2 OpenHands의 프롬프트 디자인
__3.5.3 명확한 능력과 행동 범위: 역할 설정
__3.5.4 여러 개의 작업을 실행하기 위한 계획 설계: 전체 계획
__3.5.5 작업의 의존 관계를 정리: 작업 순서 정하기
__3.5.6 작업 실행에 일관성을 부여: 이력 관리
__3.5.7 에이전트의 행동을 지정: Action 정의
__3.5.8 AI의 사고와 행동의 균형: 흐름 제어
3.6 프롬프트 엔지니어링의 본질
__3.6.1 사용자 프롬프트는 정교하지 않아도 괜찮다
__3.6.2 프롬프트의 품질을 높이기 위한 힌트
4장 AI 도구에 적합한 프롬프트 전략
4.1 자동 완성형 AI 도구
__4.1.1 사용자에 의한 프롬프트 최소화
__4.1.2 점진적 구현 지원
__4.1.3 빠른 응답과 집중력 유지
__4.1.4 주석으로 지시 강화하기
__4.1.5 AI 도구에 대한 정보를 제공하고 관리하기
__4.1.6 코드 정의를 명시적으로 제공하기
__4.1.7 중요한 파일을 고정해 즉시 참조하게 하기
4.2 대화형 AI 도구
__4.2.1 문맥의 유연한 제어
__4.2.2 다양한 파일 형식 지원
__4.2.3 외부 정보에 접근
__4.2.4 이력의 축적과 재사용
__4.2.5 명확한 프롬프트
__4.2.6 프롬프트 품질에 대한 조기 평가
__4.2.7 AI 기반 프롬프트 생성
__4.2.8 AI를 사용한 자동 리팩터링
__4.2.9 AI의 가독성을 고려한 정보 설계
4.3 에이전트형 AI 도구
__4.3.1 AI 작업 적합성의 사전 평가와 세분화 수준의 조정
__4.3.2 에이전트에 대한 부분적인 의뢰
__4.3.3 필요한 도구 찾아보기
5장 AI와 협업하기 위한 코딩 테크닉
5.1 AI로 작업 단위 최적화하기
__5.1.1 관심사의 분리를 통한 코드 최적화
__5.1.2 AI의 효율을 고려한 파일 구성
__5.1.3 작은 코드 단위부터 점진적으로 작업
5.2 코드의 AI 가독성 향상
__5.2.1 AI와의 협업을 고려한 명명
__5.2.2 검색에 최적화된 명명 전략
__5.2.3 AI의 적절한 명명 제안
__5.2.4 일관된 변수명 부여
5.3 AI와 협업을 위한 코딩 스타일
__5.3.1 스타일 가이드를 명시적으로 제공
__5.3.2 스타일 가이드 커스터마이즈
5.4 부가 정보를 제공해 AI의 이해를 돕기
__5.4.1 표준화된 코드 안의 문서
__5.4.2 최소한의 주석 추가
__5.4.3 애너테이션을 활용한 의도 전달
5.5 AI가 가진 지식을 최대한 이끌어내기
__5.5.1 정보 요구 사항에 맞춘 도구 선택
__5.5.2 창의성을 이끌어내는 개방형 질문
__5.5.3 개수를 지정해 AI의 아이디어 발산 유도
__5.5.4 AI로부터 미지의 아이디어 추출
__5.5.5 아이디어 평가를 위한 체크리스트 생성
6장 AI의 잠재력을 이끌어내는 개발 방식
6.1 AI에 적합한 코드 아키텍처
__6.1.1 중첩을 줄여 AI 협업의 효율성 개선
__6.1.2 AI와 분리된 코드
__6.1.3 확장을 고려한 코드 설계
__6.1.4 체계적인 리팩터링 기법 적용
__6.1.5 소규모 오픈소스 재구현
6.2 AI를 활용한 코드 품질 향상
__6.2.1 AI를 활용한 단위 테스트 생성
__6.2.2 명확한 테스트 조건 25
__6.2.3 포괄적인 테스트 설계를 위한 의사 결정 테이블 활용
__6.2.4 상태 전이도를 기반으로 테스트 코드 생성
__6.2.5 필요 없는 테스트 제거
6.3 코드 리딩에서의 AI 활용
__6.3.1 자연어를 활용한 코드 로직 설명
__6.3.2 복잡한 로직의 시각적 표현 생성
6.4 코드 리뷰에서 AI 활용
__6.4.1 Big-O 표기법 기반 성능 개선
__6.4.2 BUD 프레임워크를 활용한 코드 최적화
__6.4.3 데이터 구조의 적절성 평가
__6.4.4 SOLID 기반의 코드 품질 향상
__6.4.5 Chain-of-Thought 프롬프팅
7장 생성형 AI의 역량을 최대한 이끌어내는 방법
7.1 AI 시대의 경쟁력을 높이는 개발 조직 전략
__7.1.1 오픈소스 문화를 조직에 정착시키기
__7.1.2 이너소스의 원칙
__7.1.3 이너소스의 운영
__7.1.4 조직 내 체계적인 코드 공유
__7.1.5 메인테이너의 명확한 역할
__7.1.6 사내 소프트웨어 카탈로그 구축
__7.1.7 경영진을 참여시켜 기술을 공유하는 전략
__7.1.8 안전한 코드 공유 체계 마련
7.2 AI 시대의 소프트웨어 개발 방식을 팀 차원에서 실천하기
__7.2.1 AI 몹 프로그래밍
__7.2.2 AI 페어 프로그래밍
__7.2.3 프롬프트 활용 사례 공유
__7.2.4 조직 내 AI 활용을 주도할 인재 육성
7.3 AI와 문서화
__7.3.1 AI 친화적인 정보 정리 방식
__7.3.2 구현 중심의 사양서 작성
7.4 AI 시대에 적합한 팀 기술 스택 최적화
__7.4.1 AI 시대에 적합한 기술 스택 선정
__7.4.2 정보의 이식성 향상
__7.4.3 AI로 생성한 코드의 보안 대책
7.5 생성형 AI 도입 효과의 평가
__7.5.1 개발자 경험
__7.5.2 Four Keys로 개발 프로세스 평가
__7.5.3 SPACE 프레임워크로 개발자 경험 평가
__7.5.4 개발 지원 AI 도구 도입 평가
__7.5.5 도구 도입의 가치를 가늠하기
8장 개발에서 AI를 활용하기 위한 팁
8.1 에디터와 터미널을 능숙하게 활용하기
__8.1.1 에디터에서 필요 없는 정보 제거
__8.1.2 자동으로 라이선스 확인 활용
__8.1.3 에디터 통합형 터미널 활용
__8.1.4 환각을 막기 위한 도움말 정보 활용
__8.1.5 변경 내용의 차이를 활용한 커밋 메시지 품질 향상
8.2 데이터를 자유롭게 다루기
__8.2.1 AI를 활용한 정규표현식 생성 지원
__8.2.2 다양한 날짜 포맷 인식
__8.2.3 POSIX CRON 형식의 생성
__8.2.4 특수한 데이터 포맷 변환
__8.2.5 AI를 활용한 비정형 데이터 분류
__8.2.6 데이터 전처리 효율화
8.3 빠른 웹 개발을 위한 AI 테크닉
__8.3.1 SEO 개선 제안
__8.3.2 접근성 평가
8.4 AI와 협업할 때 필수적인 도구 활용법
__8.4.1 diff 명령어를 활용한 변경 지점 파악
__8.4.2 프롬프트 라이브러리 구축과 활용
__8.4.3 AI 친화적인 마크다운으로 변환
__8.4.4 머메이드로 AI 가독성이 높은 도식 작성
__8.4.5 PlantUML을 활용한 복잡한 도식의 AI 가독화
9장 AI 시대를 선도하기 위해
9.1 AI를 활용해 더 많은 성과 완수하기
9.2 조직에서 기술과 지식을 공유하고 함께 성장하기
9.3 ‘호기심’은 개발자의 원동력
부록 A연습 가이드
ㆍ지은이 핫토리 유우키
ㆍ옮긴이 하승민
저작권 안내
연관 프로그램
독자의견 남기기