AI를 이용한 코딩에 대한 방법론과 어떻게 해야 하는 지에 대한 책
- AI를 이용한 코딩 방법
- 의도 중심 프로그래밍: 개발자는 이제 어떻게 보다 무엇에 집중해 더 높은 추상화로 작업 할 수 있다 → 설계와 감독에 집중해야 한다
- 바이브 코딩과 AI 보조 엔지니어링을 적절한 시점에 선택하여 사용하는 능력이 중요해진다
- 바이브 코딩
- AI가 개발 과정을 주도하며 사용자와 대화를 통해 코드를 작성하는 방식
- 프롬프트가 더 중요한 방식으로 빠른 구현을 우선 시 한다
- AI 보조 엔지니어링
- 개발자가 개발 과정을 주도하며 AI와 협업하여 최종 결정을 내려는 방식
- 계획이 더 중요한 방식으로 고품질의 코드 구현을 우선 시 한다
- AI가 여전히 어려움을 겪는 영역
- 매우 복잡하거나 새로운 문제를 해결하는 시스템
- 저 수준 최적화 및 시스템 프로그래밍
- 독특하거나 생소한(신규의) 프레임워크
- 의도와 요구사항 해석
- 창의적인 UI/UX 디자인
- 좋은 프롬프트 작성 방법
- 구체성과 명확성이 결과 품질에 중요하다
- 컨텍스트 프롬프트: 사용 언어, 환경, 결과 범위, 원하는 출력 형식, 모호한 참조 제거를 통해 최대한 많은 컨텍스트(정보)를 제공하라
- 한번에 완성하기 보다 피드백을 통해 반복적으로 작업하라
- 컨텍스트 윈도: 언어 모델이 단일 상호작용에서 처리할 수 있는 최대 텍스트 양
- 작업을 분할하고 우선 순위를 정해줘야 좋은 결과물이 생성된다
- AI 도입하기
- AI는 엣지 케이스, 유지보수, 견고한 아키텍처 구축에는 전문적인 인간의 도움이 아직 필요하다
- AI 초안 작성 → AI와 페어 프로그래밍 → AI의 사용한 검증 및 테스트 순서로 이루어져야 한다
- 작업 별로 새로운 세션으로 컨텍스트를 명료하게 유지해야 하고 긴밀한 피드백 루프를 유지하라
- 이해하지 못하는 코드를 머지하지 않아야 유지보수와 보안이 강화된다
- 효과적인 프롬프트는 공유하고 재사용하자
- 개발자는 어떻게 해야 하나
- 문제 도메인에 대해 깊이 이해하도록 지속적으로 투자해야 한다
- 아키텍처 로드맵, 툴의 평가, 코딩 가이드라인과 같은 정의 작업에 참여하라
- 요구사항 수집 및 분석, 기술 문서 작성, 프로젝트 계획과 같은 일이 더욱 중요해 진다
- 컴퓨터 과학 기초를 깊이 있게 공부하라
- 복잡한 버그를 다루는 역량을 항상 중요하다 → Why 를 항상 유지하라
- 테스트 할 항목은 직접 정의해야 한다
- 기능 범위 확장 과 시스템 통합에 더욱 집중하자
- 신뢰와 자율성 그 사이에서..
- AI 생성 코드는 보안에 취약한 코드를 만들어낼 가능성이 높아 반드시 리뷰를 거쳐야 한다
- 중요한 작업이나 잠재적이 실패 지점 주변에 로깅이 자세히 되는지 확인해야 한다
- 현재 AI는 최적화에서 약점이 있으므로 성능이 중요한 부분은 주의 깊게 살펴보자
- 패턴 구현에는 뛰어나지만 현재 컨텍스트에 어떤 패턴이 적절한지는 잘 결정하지 못한다
- 백그라운드 코딩 에이전트
- 지속적인 감독이나 대화없이 스스로 문제를 해결하는 AI 에이전트
- 계획, 실행, 검증, 보고라는 단계를 가지고 수행
- 계획: 실행 계획을 제시하여 요청을 올바르게 이해했는지 텍스트로 제공
- 실행: 계획에 따라 실제로 코드를 작성하고 수정
- 검증: 테스트 생성 및 디버깅. 코드 에러 확인 후 재 작업
- 보고: 결과 보고. PR 생성이나 사용자에게 알림
- 장점
- 명확한 성공 기준을 가진 잘 정의된 작업에 매우 강함
- 많은 소규모 작업의 병렬 실행에 매우 적합
- 약점
- 잘못된 결정(계획)이 전체 구현 아키텍처에 영향을 미칠 수 있음
- 대규모 환경 취약성: 규모가 커질수록 환경 구성이 달라져 통합 문제가 발생함
- 비동기 작업의 역설: 병렬로 실행되는 에이전트가 많을수록 통합이 더 복잡해짐
- 리뷰 병목의 심화
- 바이브 코딩의 결과물은 시작점으로 여겨져야 하며 사용자가 최종 결정을 해야 한다