AI로 생성한 3개월 치 코드를 싹 다 지웠습니다. 배운 점 공유합니다.
핵심 요약
AI가 짠 코드를 이해하지 못한 채 개발하다가 결국 70%를 삭제하고 직접 다시 작성하며 얻은 교훈.
- 코드 소유권 상실 — AI가 생성한 코드를 이해하지 못해 유지보수가 불가능해짐.
- 과도한 엔지니어링 — AI가 불필요한 추상화와 복잡한 구조를 생성함.
- 생산성의 함정 — 빠른 결과물은 나오지만 코드에 대한 이해도가 떨어져 장기적으로 비효율적임.
- AI 활용 전략 — AI 코드를 초안으로 간주하고 직접 검토 및 단순화하는 과정이 필수적임.
AI의 도움을 거의 전적으로 받아 3개월 동안 사이드 프로젝트를 진행했습니다. ChatGPT, Claude, Copilot 등 모든 도구를 사용했죠. 빠르게 출시했고 생산적이라고 느꼈으며 모든 게 괜찮아 보였습니다.
그러다 코드베이스 대부분을 건드려야 하는 기능을 추가해야 했습니다. 그런데 할 수가 없더군요. 어려워서가 아니라, 제 프로젝트가 어떻게 돌아가는지 실제로 이해하지 못했기 때문입니다.
AI는 일관된 패턴으로 깔끔해 보이는 코드를 생성했지만, 그 패턴은 제 것이 아니었습니다. 기억을 더듬어 로직을 추적할 수도 없었고, 왜 함수가 그런 식으로 구조화되었는지 남에게 설명할 수도 없었습니다. 무언가를 수정하려고 할 때마다 마치 남의 코드를 보듯 처음부터 다시 읽어야 했습니다. 실제로 남의 코드였으니까요.
그래서 코드의 약 70%를 삭제하고 처음부터 다시 작성했습니다. 2주가 걸렸죠. 결과는 더 간단해졌고 코드 줄 수는 절반으로 줄었으며, 이제는 모든 부분을 제가 직접 이해하고 있습니다.
다시 작성하는 동안 깨달은 점들:
AI는 제가 필요하지 않은 추상화를 만들어냈습니다. 간단한 함수 호출로 충분한 곳에 래퍼 클래스를 씌우거나, 설정이 딱 하나뿐인데도 설정 시스템을 만들고, 직접 호출하면 될 것을 이벤트 시스템으로 처리하기도 했습니다.
AI는 자신이 훈련받은 대로 모든 것을 과도하게 엔지니어링했습니다. 전문적이고 완벽해 보이는 코드를 생성하죠. 하지만 50명의 기여자가 있는 프로젝트에 필요한 '전문적이고 완벽한' 코드와, 1인 사이드 프로젝트에 필요한 코드는 완전히 다릅니다.
제가 얻고 있다고 생각했던 생산성은 부분적으로 환상이었습니다. 결과물은 빠르게 뽑아냈지만 혼란은 더 빠르게 쌓이고 있었죠. 다시 작성하는 과정은 더 느렸지만, 결과적으로 저는 제 코드베이스를 온전히 소유하게 되었습니다.
AI 코딩 도구가 나쁘다는 건 아닙니다. 여전히 사용하고 있죠. 하지만 이제는 AI가 생성한 모든 것을 실제 코드가 되기 전에 이해하고 단순화해야 하는 '초안'으로 취급합니다. 프로젝트에 무엇이 들어있는지 이해하는 것을 멈추는 순간, 얻은 것보다 잃은 것이 더 많아지게 됩니다.


