본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 21. 12:05

거의 AI 코딩으로 팀 개발을 진행한 이야기

요약

AI를 활용해 10개월간 팀 개발을 진행하며 겪은 실무 경험담입니다. AI 코딩이 개발 속도는 높여주지만, 문서화와 아키텍처 설계가 뒷받침되지 않으면 코드의 일관성이 깨지고 스파게티 코드가 될 위험이 있음을 경고합니다.

핵심 포인트

  • AI 코딩 시 CLAUDE.md 등 문맥(Context) 관리가 필수적임
  • 문서화와 코딩 규약이 부재할 경우 코드의 일관성이 급격히 저하됨
  • AI는 과거 사양에 끌려가 불필요한 코드를 양산하는 경향이 있음
  • 확장성을 유지하기 위해 낮은 결합도와 의존성 관리가 매우 중요함
  • AI 생성 코드에 대한 지속적인 인간의 리뷰와 설계 개입이 필요함

안녕하세요, Kuto입니다.

최근까지 팀에서 소프트웨어를 개발해 왔는데, 여러 가지 느낀 점이 있어서 써보고자 합니다.

인원: 3명

기간: 10개월

최종 commit 수: 2300

이번 개발에서는 상당한 양의 코드를 AI로 생성했습니다.

특히 팀 멤버들은 대부분의 코드를 AI로 생성했던 것 같습니다.

AI에게 입력할 context(문맥)로서는 CLAUDE.md 등의 파일과 docs/ 디렉토리를 준비해 두었습니다.

하지만 개발이 바빠서 docs/ 디렉토리를 제대로 정리하지는 못했습니다.

아키텍처 구성 등에 대한 기술은 하지 않았지만, 코딩 규약(Coding Convention) 등은 느슨한 상태 그대로였습니다.

나중에 여러 가지 반성할 점을 적겠지만, 어쨌든 결과물은 완성되었습니다.

원래 상정했던 대로 동작했고, 원래 상정하지 않았던 추가 기능도 구현할 수 있었습니다.

하지만 여기까지 오기까지의 고통은 매우 컸습니다.

AI는 처음부터 모든 코드를 조립해 주는 것이 아닙니다.

처음부터 모든 사양이 결정되어 있고 거의 변경이 발생하지 않는다면 이야기가 달라지겠지만, 그런 개발은 드물 것입니다.

AI는 과거에 자신이 개발했던 것을 기억하고 있는 것이 아니기 때문에, 소프트웨어가 점점 그 상황에 맞춘 코드의 누더기(patchwork)가 되어갔습니다.

확실히 AI는 context를 조사한 뒤에 작성하기 때문에 어느 정도 분위기가 비슷한 코드는 출력하지만, 컨디션이 좋지 않을 때는 제대로 해주지 않기도 합니다.

그리고 한 번 제대로 해주지 않으면 더 이상 코드를 조사해도 소용이 없게 됩니다.

무엇보다 코드에 서로 다른 형식이 여러 개 존재하기 때문입니다. AI는 어느 쪽이 옳은지 판단할 수 없습니다.

또한 사양 측면에서는 과거의 사양에 끌려가서 불필요한 코드가 많아지는 경향이 있었습니다.

최소한 AI의 코드를 리뷰하는 정도는 하지 않으면 정말 안 되겠더군요.

AI는 불필요한 코드가 있어도 특별한 지시를 내리지 않으면 잘 고쳐주지 않습니다.

"음~ 뭔가 불필요하네~. 뭐, 그런 건가! 나도 이걸 참고해서 써야지!"

이런 식입니다. 바보 같은 아이군요.

이는 문서를 제대로 정리하지 못한 점에도 어느 정도 기인한다고 생각하지만, 코드에서 통일된 사상이 사라져 가는 느낌을 계속 받았습니다.

클래스의 명명(Naming)이나 디렉토리 구성, 의존 관계(Dependency) 설계 같은 것들 말입니다.

이런 부분을 완전히 AI에게 맡겨버리면 모두 제각각이 됩니다.

따라서 나중에 읽을 때의 가독성이 떨어지고, 돌이킬 수 없는 스파게티(Spaghetti) 상태가 되어버렸습니다.

소프트웨어는 개발하면 할수록 점차 복잡해집니다.

이를 최대한 풀어내기 위한 것이 아키텍처 설계이자 코딩 규약이지만, 앞서 말한 대로 AI에게 너무 맡겨버리면 그 부분이 무너집니다.

문서 정리를 소홀히 한 것이 패인이긴 하지만, 개발 후반에는 AI의 조사 시간이 점점 늘어나고 있다는 체감을 했습니다.

AI 덕분에 개발 전체의 속도는 올라갔다고 생각하지만, 후반부에는 직접 손으로 만지는 게 더 빠른 장면이 종종 보였습니다.

결과물은 주어진 과제를 달성했습니다.

하지만 이 이상의 스케일링(Scaling)을 견딜 수 있느냐고 묻는다면 상당히 어려울 것 같다는 것이 솔직한 심정입니다.

확장성을 고려하지 않고 단순히 사양만을 구현하게 했던 폐해가 상당히 나타나고 있어, '더 이상의 개발은 하고 싶지 않다...'라는 상태였습니다.

AI를 돌리면 어느 정도의 확장은 달성할 수 있겠지만, 그래도 힘들 것 같다는 감각이 있습니다.

또한 이런 상태에서도 확장성이 어느 정도 남아 있는 이유는 다음과 같다고 생각합니다.

  • 프레임워크로서 결합도가 낮게(Loosely coupled) 달성되었기 때문에, 의존 관계가 파멸적으로 망가지지는 않았다.
  • 자신의 설계로 상호 의존성(Mutual dependency)을 제거해 두었다.

프레임워크가 마이크로서비스(Microservices)적이 아니었다면 상당히 심각한 상황이 되었을지도 모릅니다.

(정말 그렇게 되었다면 더 공을 들여 리팩터링(Refactoring)을 했겠지만...)

이 점에 대해서는 저는 'No'라고 생각합니다.

앞서 말했듯이 AI에 의해 전체적인 구현 속도는 올라갔습니다.

속도뿐만 아니라 질도 일부 측면에서는 올라갔습니다. 구현 난이도가 높은 코드라도 AI는 어렵지 않게 구현해 주니까요.

이것은 이미 인지하고 있던 문제였기에 더욱 죄스러운 부분입니다만, AI의 context가 되는 문서류는 반드시 최신 상태로 유지해야 했습니다.

또한 이것은 아직 생각 단계입니다만, 문서와 코드의 괴리는 어떻게든 발생하기 마련이라고 생각합니다.

따라서 코드 자체를 문서화한다는 사고방식을 가져도 좋았겠다는 생각이 듭니다.

구현에 있어서의 설계는 역시 소홀히 해서는 안 됩니다.

이로 인해 구현 부분의 방향성이 결정되어 버리니까요.

하지만 이와 관련하여, 설계를 AI에게 맡겨보는 것도 괜찮지 않을까 생각합니다.

AI에게 설계를 시키고, 그것을 인간이 리뷰하여 수정하는 방식입니다.

솔직히 AI라도 설계는 할 수 있으니까요. 설계를 제대로 하도록 지시를 내리면 출력물은 나쁘지 않은 것이 나옵니다.

그것을 전체적으로 고려하여 인간이 미세 조정하면 될 것입니다.

AI는 쓰레기!

하지만 AI를 사용하지 않으면 개발 효율은 엄청나게 떨어진다!

AI 군이 잘 순종적으로 일할 수 있도록 환경을 정비하자!

그건 그렇고 AI 군은 가끔 이상한 짓을 한다!

한 번 이상한 짓을 하면 AI 군은 우쭐해져서 이상한 쪽으로 휩쓸리기 쉽다!

이상한 짓을 하지 않도록 철저히 리뷰하고 관리하자!

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0