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-real-video: 어떤 LLM이든 영상을 실제로 '볼 수' 있게 해주는 도구
YouTube URL이나 로컬 영상 파일에서 장면 변화 기반으로 핵심 프레임만 추출하고 음성 전사까지 해서 LLM에게 넘겨주는 오픈소스 도구. Claude는 영상 파일을 못 받고, ChatGPT는 자막만 읽고, Gemini는 고정 1fps 샘플링이라는 한계를 모두 우회한다.
ReContext: 재귀적 Evidence Replay로 LLM의 Long-Context 추론 개선
128K 토큰 컨텍스트에서 모델 내부 attention 신호로 핵심 증거만 추출해 재주입하면 추론 정확도가 24.6% 오른다.
LLM을 활용한 Single/Multi Truth Data Fusion
여러 소스의 충돌하는 데이터를 GPT-4o-mini 프롬프트로 병합하면 기존 비지도 방법보다 일관되게 F1 점수가 높다.
다국어 Reasoning Cascade는 더 많은 Context가 필요하다
번역 cascade 파이프라인에서 원본 질문을 마지막까지 유지하면 추가 학습 없이 다국어 성능이 크게 오른다.
Back-and-Forth를 줄여라: Structured Prompting 비교 연구
체크리스트 형식으로 프롬프트를 구조화하면 LLM 답변 품질도 높아지고 토큰도 적게 쓴다.
Training-Free Cultural Alignment: Persona 불일치를 활용한 LLM 문화적 정렬
재학습 없이 각 나라의 도덕적 가치관에 맞게 LLM 출력을 조정하는 추론 시점 기법 DISCA 제안
Claude Code에서 HTML을 출력 포맷으로 쓰는 이유: Markdown보다 나은 점들
Claude Code 팀이 Markdown 대신 HTML을 LLM 출력 포맷으로 선호하기 시작한 이유와 그 실용적 장점을 정리한 글로, AI와 함께 문서/스펙/대시보드를 만드는 워크플로우에 직접적인 영향을 준다.