1. 합리적인 기대치 설정 (Set reasonable expectations)
LLM은 본질적으로 고급 자동완성 도구임을 인지해야 하며, 전적으로 의존할 경우 오류나 부정확한 결과가 발생할 수 있음.
자신의 코딩 능력을 보완하는 보조 도구로 활용하며, 과도한 기대를 버리고 실수를 검증하는 태도가 필요함.
2. 학습 데이터의 종료 시점을 고려 (Account for training cut-off dates)
모델이 학습한 데이터의 최신성이 제한될 수 있으므로, 최신 라이브러리나 기술 변화에 대해 주의해야 함.
안정성과 보편성이 입증된 라이브러리 사용을 우선시하고, 최신 기술이 필요한 경우 직접 예시를 제공하여 보완함.
3. 문맥의 중요성 (Context is king)
대화의 모든 히스토리(프롬프트와 응답)가 결과에 영향을 미치므로, 문맥 관리가 중요함.
복잡한 작업 시에는 기존 코드를 대화에 포함시켜 모델이 참고할 수 있도록 하고, 필요 시 새 대화로 초기화함.
4. 다양한 옵션 제시 요청 (Ask them for options)
초기 연구 단계에서 LLM에게 여러 구현 옵션과 예시를 요청하여 가능한 선택지를 탐색함.
“어떤 옵션이 있는가?” 등의 질문으로 기술적 가능성을 확인하고, 이후 선택된 옵션을 기반으로 구체화함.
5. 구체적인 지시 제시 (Tell them exactly what to do)
생산 코드 작성 시에는 상세하고 명확한 지시를 내려 원하는 기능을 정확히 구현하도록 유도함.
함수 시그니처, 사용해야 할 라이브러리, 예외 처리 등 구체적인 사항을 지시하여 LLM이 해당 요구사항에 맞게 코드를 작성하도록 함.
6. 작성된 코드는 반드시 테스트 (You have to test what it writes!)
LLM이 작성한 코드라도 실제 동작 여부를 반드시 확인해야 하며, 자동화된 테스트 및 수동 검증이 필요함.
작성된 코드에 대해 pytest 등 테스트 프레임워크를 활용하여 정상 작동 여부를 검증함.
7. 대화형 상호작용 유지 (Remember it’s a conversation)
LLM과의 상호작용은 단발성이 아닌 반복적 대화 과정을 통해 결과를 개선할 수 있음.
초기 결과가 미흡할 경우 추가 지시나 피드백을 통해 코드를 리팩토링하고 개선함.
8. 코드를 실행할 수 있는 도구 활용 (Use tools that can run the code for you)
실행 가능한 샌드박스 환경이나 통합 개발 도구를 활용하여 LLM이 작성한 코드를 실제로 실행해 볼 수 있음.
ChatGPT Code Interpreter, Claude Artifacts 등 안전한 실행 환경을 제공하는 도구를 사용하여 실시간 검증함.
9. ‘바이브 코딩’으로 학습 (Vibe-coding is a great way to learn)
반복적이고 자유로운 실험을 통해 LLM의 활용법을 익히고, 다양한 아이디어를 빠르게 구현해보는 방법임.
간단한 기능부터 시작해 반복적 시도와 개선을 통해 LLM의 한계를 파악하고 자신의 코딩 감각을 향상시킴.
10. Claude Code를 활용한 상세 예제 (A detailed example using Claude Code)
실제 프로젝트 예제를 통해 Claude Code가 어떻게 구체적인 요구사항을 반영하여 작업을 수행하는지 보여줌.
단계별 프롬프트와 피드백을 통해 Python 스크립트와 HTML 페이지 생성 등 복합 작업을 수행하는 과정을 참고함.
11. 인간의 개입 필요성 (Be ready for the human to take over)
LLM이 생성한 코드에도 오류나 부적합한 부분이 있을 수 있으므로, 최종 검토와 수정은 반드시 인간이 수행해야 함.
LLM이 놓치는 세부사항이나 미묘한 오류를 직접 점검하고 보완하여 완성도 높은 결과물을 만듦.
12. 개발 속도의 극대화 (The biggest advantage is speed of development)
LLM을 활용하면 프로토타입 제작과 반복적인 작업 속도를 획기적으로 향상시킬 수 있음.
초기 아이디어 검증이나 간단한 코드 작성에 LLM을 적극 활용하여 개발 시간을 단축함.
13. 기존 전문 지식의 증폭 (LLMs amplify existing expertise)
이미 숙련된 개발자라면 LLM을 활용하여 자신의 전문성을 더욱 강화하고 생산성을 높일 수 있음.
자신의 경험과 지식을 바탕으로 LLM에게 명확한 지시를 내려 보다 정교한 결과물을 도출함.
14. 추가 기능: 코드베이스 관련 질문 응답 (Bonus: answering questions about codebases)
LLM은 코드베이스에 대한 질문에 답변하거나 코드의 특정 부분을 설명하는 데에도 유용하게 활용될 수 있음.
코드의 구조나 특정 기능에 대해 질문하고, 관련 설명이나 문서를 생성하는 데 도움을 받을 수 있음.