Justin Wowski는 AI 코딩을 시작하기 위한 실질적인 조언을 제공하며, 빠르게 진화하는 도구 생태계에서 특정 도구를 과도하게 고민하기보다는 빠르게 선택하여 경험을 쌓는 것이 중요하다고 말합니다. 그는 Chime에서 가장 널리 사용되는 도구로 VS Code의 포크인 Cursor를 언급하며, Shopify Ruby 확장 프로그램을 포함한 Rails 개발 환경 설정을 상세히 설명합니다. 또한, 로그 파일 확인 및 버전 관리자 구성과 같은 Cursor 문제 해결 팁을 제공합니다. 그는 Cursor 에이전트의 두 가지 주요 모드(논의를 위한 ‘ask’와 코드 작성/편집을 위한 ‘agent’)와 에이전트의 초점을 맞추는 슬래시 명령어 및 컨텍스트 관리의 중요성을 설명합니다. 이어서 그는 이러한 개념을 일반화하여, 모든 코딩 에이전트를 효과적으로 사용하기 위한 핵심 기술로 프롬프트 엔지니어링을 강조합니다. 그는 재사용 가능한 프롬프트 ‘주문서(spellbook)’를 구축하고, 스타일 가이드와 같은 영구적인 지침을 제공하기 위해 에이전트 규칙을 활용하는 것을 제안합니다. Wowski는 에이전트의 자율성에 기반한 다양한 코딩 워크플로우를 탐구합니다. 상용구 코드 작성을 위한 탭 완성, 디자인 논의 및 반복적인 리팩토링을 위한 페어 프로그래밍, 상세한 계획을 통한 개인 워크플로우 자동화, 그리고 간단하고 명확한 작업을 위한 ‘지니 모드’와 같이 에이전트의 독립성을 극대화하는 방법을 제시합니다. 그는 이러한 접근 방식들이 순차적인 단계가 아니라 작업의 복잡성과 성격에 따라 선택할 수 있는 옵션임을 강조합니다.
다음으로, Jake Grishaw는 Chime의 AI 코드 리뷰 봇인 Beacon 개발에서 얻은 교훈을 심층적으로 다룹니다. 그는 Beacon이 개발자들에게 의도를 명확히 설명하고 일반적인 함정을 교육하도록 유도함으로써 유지보수 담당자의 리뷰 부담을 덜어주는 것을 목표로 하며, 이는 덜 결정론적인 Rubocop과 유사하다고 설명합니다. Grishaw는 LLM이 다차원적으로 정보를 인코딩하며, 프롬프트 내의 특정 참조가 관련 아이디어를 활성화하여 컨텍스트적 지름길을 생성할 수 있음을 보여줍니다. 그는 과도한 컨텍스트가 요청의 명확성을 희석시킬 수 있으므로, LLM 상호작용의 범위를 좁고 명확하게 유지하는 것이 중요하다고 조언합니다. Beacon 개발 중 직면한 중요한 과제는 LLM이 Rails 8과 같은 최신 기술을 처리하지 못한다는 점이었습니다. 이는 LLM이 이전 버전에 대해 훈련되었기 때문입니다. 이 문제 해결을 위해 최신 문서를 LLM에 제공하는 RAG(Retrieval-Augmented Generation) 기술을 도입했습니다. Grishaw는 또한 과도한 엔지니어링을 경고하며, 복잡한 RAG나 미세 조정보다는 내장 검색 API와 같은 더 간단한 접근 방식이 일반적인 문제에 더 적합할 수 있다고 제안합니다. 그는 새로운 기술 혁신이 나타날 때마다 프로젝트를 조기에 포기하는 것을 경계하며, 일관된 노력과 반복의 중요성을 강조합니다. 마지막으로, 그는 벤더 종속성을 피하기 위해 새로운 AI 기술에 대한 자체 인터페이스를 작성할 것을 권장하며, 프롬프트 변경에 대한 LLM의 민감성 때문에 테스트가 매우 어렵다는 점을 지적합니다. 그는 과거 입력과 새 결과를 재생하고 비교하기 위한 신중한 데이터 저장 전략의 필요성을 역설합니다.