저자는 20년의 오픈 소스 경력과 다양한 프로그래밍 언어(Java, C++, Ruby 등) 경험을 바탕으로 LLM이 경력 전체에서 모든 것을 바꿀 수 있는 첫 기술적 변화라고 평합니다. 초기 GitHub Copilot 경험은 Ruby 언어에서 괜찮은 자동 완성 기능을 제공하며 타이핑 시간을 절약하고 API를 상기시켜 주는 등 긍정적이었습니다. 그러나 초기 Copilot과 ChatGPT 3는 환각(hallucination) 문제로 인해 철저한 검토가 필요했으며, ChatGPT는 Google보다 신뢰도가 낮았습니다.
ChatGPT 4 출시 이후, 저자는 LLM 도구에 깊이 몰입하여 유료 ChatGPT와 Cursor를 사용하고 Google 대신 ChatGPT를 기본 검색 도구로 활용하기 시작했습니다. 2025년에는 유료 LLM의 환각률이 극적으로 낮아지고 유용한 에이전트가 등장했으며, 인용 기능을 통해 ‘신뢰하되 검증’하는 것이 가능해졌습니다.
LLM 활용 철학
LLM이 생성한 코드나 글은 오픈 소스 프로젝트의 ‘첫 기여자’가 제출한 Pull Request와 유사하게 접근해야 합니다. 즉, 초기 출력물이 완벽할 수도, 완전히 틀릴 수도 있으므로, 철저한 검토, 토론, 린팅, 테스트를 통해 신뢰성을 평가해야 합니다. 오픈 소스 관리자들은 낯설거나 새로 기여된 대량의 코드를 신속하게 검토하는 기술을 연마했기에, 이는 LLM 출력물을 효과적으로 활용하는 데 필수적인 기술입니다.
최적화 전략
-
포기 시점 인지: 수동으로 직접 처리하는 것보다 LLM과의 반복적인 상호작용이 느리다면 포기합니다.
-
자동화된 가드레일: 린팅, 테스트 및 기타 자동화 도구를 적극 활용하여 견고한 가드레일을 구축합니다. LLM 에이전트에게 관련 명령이나 테스트를 실행하여 스스로 출력을 검증하도록 지시할 수도 있습니다.
LLM 활용 모드
저자는 자신의 워크플로우에서 몇 가지 LLM 활용 모드를 개발했습니다.
-
지속적 활용 (매시간): 코드 작성 시 에디터(Cursor)가 자동 완성 및 인라인 조회를 제공합니다.
-
정기적 활용 (매일): 막히는 문제에 대해 LLM에게 해결책이나 아이디어를 요청하여 복잡한 오류 메시지나 대규모 로그를 신속하게 분석합니다.
-
드문 활용 (매주): 초기 연구를 바탕으로 지루하고 사소한 대량의 코드를 생성한 후, 수동 편집 및 LLM 리팩토링을 통해 수정하고, 단위 테스트를 생성합니다. 이 과정에서 git commit을 자주 활용하여 변경 사항을 신중하게 검토합니다.
-
가장 드문 활용 (매월): 아직 작동 방식을 결정하지 않았을 때, LLM이 모든 코드를 생성하고, UI/CLI 출력에 따라 프롬프트를 반복적으로 변경합니다. 기능이 구현된 후에는 다음 날 철저한 코드 검토 및 편집을 수행합니다.