3개월치 AI 생성 코드를 전부 삭제했다. 그리고 배운 것들.
I mass deleted 3 months of AI generated code last week. Here is what I learned.
TL;DR Highlight
AI로 작성된 코드베이스를 70% 삭제 후 2주 만에 재작성하니 절반 크기로 줄어들면서 완전한 이해 가능성을 확보했다.
Who Should Read
Claude, ChatGPT, Copilot 등 AI 코딩 도구를 실무 사이드 프로젝트에 적극 활용하고 있는 개발자. 특히 AI가 짜준 코드를 그대로 합치다 보니 전체 구조가 흐릿해진 경험이 있는 사람.
Core Mechanics
- AI는 단일 설정값에도 Configuration 클래스를 만들고, 직접 함수 호출이면 충분한 곳에 Event System을 끼워넣는 등 불필요한 추상화를 기본값으로 선택한다.
- 빠르게 output을 뽑는 것처럼 느껴졌지만 실제로는 '혼란이 생산성보다 더 빠르게 쌓이는' 상태였다. 체감 속도와 실제 복잡도 증가 속도가 달랐다.
- 기능을 추가하려고 코드베이스 전체를 건드려야 할 때, 내가 짠 게 아닌 패턴들이라 로직을 머릿속으로 추적하는 게 불가능했다.
- 전체의 70%를 삭제하고 2주 만에 재작성한 결과, 코드 라인 수가 절반으로 줄고 모든 부분을 직접 이해할 수 있게 됐다.
- AI 결과물을 '최종 코드'가 아니라 '이해하고 단순화해야 할 첫 번째 초안(first draft)'으로 다루는 방식으로 접근이 바뀌었다.
Evidence
- 3개월간 AI로 작성한 코드의 약 70%를 삭제 후, 2주 만에 재작성 완료.
- 재작성 후 코드 라인 수가 기존 대비 약 50% 수준으로 감소.
- ChatGPT, Claude, Copilot 세 가지 도구를 병행 사용한 실제 사이드 프로젝트 기반 경험.
How to Apply
- AI가 생성한 코드를 커밋 전에 반드시 '내가 이 로직을 말로 설명할 수 있는가?' 기준으로 검토한다. 설명 못 하면 이해한 게 아니니 직접 단순화한다.
- AI가 wrapper class, 설정 시스템, 이벤트 버스를 제안하면 '지금 당장 여러 곳에서 재사용되는가?'를 묻는다. 아니라면 직접 함수 호출이나 단순 변수로 대체한다.
- 새 기능 추가 전에 '기존 코드를 머릿속으로 추적할 수 있는가?' 테스트를 해본다. 안 된다면 기능 추가 전에 이해 가능한 수준으로 리팩터링을 먼저 한다.
Code Example
# AI가 만든 과도한 추상화 예시
class SingletonConfigManager:
_instance = None
def __init__(self):
self.config = {"debug": True} # 단 하나의 설정값
@classmethod
def get_instance(cls):
if not cls._instance:
cls._instance = cls()
return cls._instance
# 재작성 후 (이게 전부)
DEBUG = TrueTerminology
관련 논문
Claude Code에서 HTML을 출력 포맷으로 쓰는 이유: Markdown보다 나은 점들
Claude Code 팀이 Markdown 대신 HTML을 LLM 출력 포맷으로 선호하기 시작한 이유와 그 실용적 장점을 정리한 글로, AI와 함께 문서/스펙/대시보드를 만드는 워크플로우에 직접적인 영향을 준다.
언제 투표하고 언제 다시 쓸까: Disagreement 기반 Test-Time Scaling 전략 라우팅
모델 출력이 얼마나 일치하는지 보고 쉬운 문제엔 majority voting, 어려운 문제엔 문제 rewriting을 자동으로 선택해 정확도 3~7% 올리고 샘플링 비용도 줄이는 학습 불필요 프레임워크.
Less Is More: Android 앱에 On-Device Small Language Model 통합할 때 실제로 겪는 엔지니어링 문제들
Wordle 게임에 온디바이스 SLM(Gemma 4 E2B, Qwen3 0.6B)을 5일간 붙여보면서 발견한 5가지 실패 유형과 8가지 실용 해결책 정리
확장 가능한 Synthetic Data 생성을 위한 Dynamic Context Evolution
VTS + Semantic Memory + Adaptive Prompt 3가지 메커니즘으로 구성된 프레임워크는 LLM 대량 synthetic data 생성 시 배치 간 중복·반복 현상을 완전히 제거한다.
Karpathy 워크플로우에서 영감받아 사전 컴파일된 Wiki로 세션당 토큰 90%+ 절감
사전에 정리된 코드베이스 Wiki를 활용하면 Claude 세션당 토큰 사용량을 90% 이상 줄인다.
원시인 말투로 토큰 60% 절약하는 압축 프롬프트 기법
관사·접속사·조동사를 제거한 전보체 스타일은 LLM 응답 토큰을 60% 감소시킨다.