//
바이브 코딩 너머 개발자 생존법 · 애디 오스마니
AI가 코드를 생성하는 속도는 놀랍다. 프로토타입 수준의 결과물은 몇 분 만에 나온다. 하지만 여기서 멈추면 안 된다. 저자가 "70% 문제"라고 부르는 현상의 핵심은 이것이다. AI는 전체 작업의 약 70%까지 놀라운 속도로 도달하지만, 나머지 30%에서 급격히 느려지거나 아예 막힌다.
프레드 브룩스가 "은총알은 없다"에서 구분한 **본질적 복잡성(Essential Complexity)**과 **우발적 복잡성(Accidental Complexity)**의 프레임이 여기서도 유효하다. AI는 우발적 복잡성(보일러플레이트, 반복 패턴, 설정 코드)을 크게 줄여주지만, 본질적 복잡성(비즈니스 로직, 아키텍처 결정, 엣지케이스 처리)을 처리하는 것은 여전히 사람의 몫이다.
AI를 활용하는 개발자들은 크게 두 가지 패턴으로 나뉜다.
| 패턴 | 부트스트래퍼(Bootstrapper) | 이터레이터(Iterator) |
|---|---|---|
| 목적 | 초기 코드 생성, MVP 제작 | 일상 개발 워크플로 통합 |
| AI 활용 시점 | 프로젝트 시작 단계 | 개발 전 과정 |
| 핵심 가치 | 속도, 탐색 | 생산성, 일관성 |
| 위험 | 모래성 코드 | AI 의존성 |
부트스트래퍼는 AI를 활용해 빠르게 초기 코드를 만들어 내고 MVP까지 도달하는 데 집중한다. 해커톤, 사이드 프로젝트, 아이디어 검증에 적합한 방식이다.
이터레이터는 AI를 일상적인 개발 워크플로에 통합하여 지속적으로 활용한다. 코드 리뷰, 리팩터링, 테스트 작성, 문서화 등 개발의 모든 단계에서 AI와 협업한다.
저자는 AI가 생성한 코드의 위험한 특성을 두 가지 패턴으로 설명한다.
모래성 코드(Sandcastle Code) -- 겉보기에는 완성된 것 같지만 내부 구조가 취약한 코드다. 초기에는 잘 동작하지만, 요구사항이 변경되거나 규모가 커지면 무너진다. 테스트가 없고, 에러 처리가 피상적이며, 엣지케이스를 고려하지 않은 코드가 전형적이다.
제자리걸음 패턴(Two Steps Forward, Two Steps Back) -- AI에게 한 가지 문제를 수정해 달라고 요청하면 다른 부분이 망가지는 현상이다. AI가 전체 코드베이스의 맥락을 완전히 파악하지 못하기 때문에 발생한다. 수정 요청이 반복될수록 코드의 일관성이 떨어지고, 결국 처음부터 다시 작성하는 것이 더 빠른 지경에 이른다.
흥미로운 역설이 있다. AI 코딩 도구의 혜택을 가장 많이 받는 사람은 이미 해당 분야를 잘 아는 개발자다. AI가 생성한 코드의 품질을 판단하고, 미묘한 오류를 발견하고, 적절한 방향으로 수정 지시를 내릴 수 있기 때문이다.
반면 경험이 부족한 개발자는 AI가 만든 코드가 올바른지 판단할 기준이 없다. 코드가 "동작"한다는 것과 "올바르다"는 것의 차이를 구분하지 못하면, 모래성 위에 또 다른 모래성을 쌓게 된다.
이것이 바로 저자가 "AI가 개발자를 대체하는 것이 아니라, 좋은 개발자를 더 좋게 만든다"고 주장하는 근거다.
저자는 70% 문제를 극복하기 위한 세 가지 워크플로를 제안한다.
AI에게 초안을 작성하게 하고 개발자가 리뷰, 수정, 개선하는 방식이다. 가장 보편적이면서도 안전한 접근법이다. AI는 빈 에디터에서 시작하는 부담을 없애주고, 개발자는 자신의 전문성을 코드 품질 향상에 집중한다.
실시간으로 AI와 대화하며 함께 코드를 작성하는 방식이다. 개발자가 방향을 잡고, AI가 구현 세부사항을 처리하며, 개발자가 즉시 피드백을 준다. 반복적 정제와 동일한 원리이지만, 더 밀착된 협업이다.
개발자가 작성한 코드를 AI에게 리뷰하도록 맡기는 방식이다. 잠재적 버그, 보안 취약점, 성능 이슈, 코딩 컨벤션 위반 등을 AI가 점검한다. 사람이 놓치기 쉬운 패턴을 AI가 잘 잡아내므로, 보완적인 관계가 형성된다.
저자가 책 전체에서 반복적으로 강조하는 원칙이 이 장에서 처음 명시적으로 등장한다.
"이해하지 못하는 코드는 머지하지 않는다."
이 원칙은 단순해 보이지만 실천하기는 어렵다. AI가 빠르게 코드를 생성해 주면 검토 없이 받아들이고 싶은 유혹이 생긴다. 하지만 이해하지 못하는 코드를 머지하는 순간, 그 코드의 버그도, 보안 취약점도, 기술 부채도 모두 자신의 것이 된다.
AI가 생성한 코드가 예상보다 복잡하다면, AI에게 "이 코드를 한 줄씩 설명해 줘"라고 요청하라. 설명을 읽고도 이해가 되지 않는 부분이 있다면, 그 부분은 더 단순한 방식으로 재작성을 요청해야 한다.
70% 문제는 AI 코딩의 가장 현실적인 한계를 보여준다. AI는 빠르게 70%까지 도달하지만, 프로덕션 수준의 나머지 30%는 개발자의 역량에 달려 있다. 모래성 코드를 피하고, 제자리걸음에 빠지지 않으려면, "이해하지 못하는 코드는 머지하지 않는다"는 원칙을 지켜야 한다.