AI 시대의 소스코드 품질
- 2025-08-19 (modified: 2026-05-26)
- 저자: AK
근미래에 AI가 모든 코딩을 대신한다고 하더라도 소스 코드의 품질은 여전히 중요하다고 생각한다. 단기적인 이유와 장기적인 이유가 있다.
단기적인 이유
- 아직은 AI가 인간을 모방하고 있는 상황이기 때문에 인간이 잘 다루는 코드를 AI도 잘 다룰 것이다. 따라서 코드 품질은 여전히 중요할 것. (Welcome to the Era of Experience의 구분에 따르면 아직은 “인간 데이터의 시대”이기 때문)
- 기존 프로젝트의 코드의 품질이 좋을수록 코딩 에이전트도 더 나은 코드를 만들어낼 가능성이 높다. 각종 에이전트의 시스템 프롬프트에 명시적으로 기존 코드의 스타일을 흉내내라는 지시가 담겨 있는 경우도 있고, 이러한 지시가 명시적으로 없더라도 컨텍스트에 올라온 기존 코드들의 품질이 생성되는 코드 품질의 다양한 측면에 크고 작은 영향을 줄 가능성이 매우 높다. 예를 들어 Improving frontend design through Skills에 따르면 디자인을 지시하면서 서체에 대한 지시를 포함시키자 서체 이외의 부분(예: 레이아웃)까지 개선되더라는 관찰이 있었다.
- 코드 품질이 낮아지면(긴 코드, 순환 참조, 높은 결합도 등) LLM의 컨텍스트에 올릴 토큰 수가 많아진다. LLM이 지원하는 컨텍스트 크기는 꾸준히 늘고 있지만 컨텍스트가 길어지면 LLM이 엉뚱한 짓을 하는 현상(context rot)이 벌어진다. (상대적으로 사소한 문제이지만, 토큰을 많이 쓰면 비용도 더 들고 시간도 더 걸린다)
- AI가 코드를 빠르게 생산하기 시작하면서 병목이 코딩에서 리뷰로 옮겨지고 있다. 이 병목을 해소하려면 AI가 더 큰 단위의 작업을 붙들고 오래 일하고 결과물이 인간이 검토하기 좋은 형태로 나와야 한다. 토큰과 시간(AI의 시간)을 더 쓰더라도 품질 좋은(따라서 검토하기 좋은) 코드가 만들어지도록 유도하는 게 좋다. 검토를 AI가 하게 되더라도 마찬가지.
장기적인 이유
장기적으로는 AI가 굳이 인간을 모방할 필요가 없으니 인간 기준의 “품질 좋은 코드”가 의미 없다고 생각할 수도 있다. 굳이 텍스트 기반의 “소스 코드”를 만들고 이걸 기계 코드로 바꾸는 과정이 불필요해질 수도 있다.
하지만 이런 상황이 된다고 하더라도 여전히 품질 좋은 코드는 중요할거라고 본다. 두 가지 이유가 있다.
- 첫째, 재귀적 분해와 조합, 모듈 간 격리 등의 특성은 인간의 이해가능성과 무관하게 그 자체로 좋은 속성이다. 이건 추측인데 인간의 마음이 재귀적 분해와 조합에 익숙하게끔 진화한 이유도 애초에 세상과 의미있는 상호작용을 하려면 그런 능력이 필요하기 때문일 것. 즉, 재귀적 분해와 조립은 인간 마음에 국한된 특성이 아니라고 생각한다. 다만 인간의 이해가능성과 호환되지 않는 모듈 간 위계, 모듈 간 인터페이스의 형태 등도 존재할 것. (참고: Understandable modularity)
- 둘째, 어차피 미래에도 인간이 (AI의 도움을 받아) 소프트웨어 감사를 하긴 해야할텐데(법적/윤리적 책임 관점에서) 이를 위해서는 인간이 이해가능한 코드가 여전히 필요하다. 다만 이런 맥락에서 “코드의 품질”이 무엇을 의미하는지에 대한 세세한 기준은 바뀔 수 있겠다. 예를 들면 “읽기가 얼마나 용이한가”가 “수정이 얼마나 용이한가”에 비해 (지금보다 훨씬 더) 중요해진다거나. 한편, 여기에서 말하는 “감사”란 “코드가 버그 없이 구현되었나”라는 측면보다는 “목표를 올바르게 세웠나”에 한없이 가까울테니(참고: Verification and validation) 코드 구석구석을 인간이 읽을 필요는 없을 것 같다. 코드에 버그가 없는지 여부는 프로그램 검증을 통해 현실적으로 유용한 범위 내에서 해결 가능하다. 정지 문제나 괴델의 불완전성 정리 같은 게 생각만큼 현실적인 장벽은 아니다.
품질을 어떻게 관리할까
참고
- AI 시대의 소프트웨어 공학
- The friction is your judgment by Armin Ronacher, Cristina Poncela Cubeiro
- “Your codebase is infrastructure for the agent. Design it that way.”