AI Docs

바이브 코더 vs 소프트웨어 엔지니어

Yusuf Aytas가 정리한, AI 시대에 흐려지기 쉬운 경계에 관한 글. 둘을 가르는 것은 도구가 아니라 책임이 어디서 시작되고 어디서 끝나는가입니다. 같은 사람이 발견(discovery) 단계에서는 바이브 코딩을, 전달(delivery) 단계에서는 엔지니어링 규율을 오갈 수 있어야 합니다.

차이는 도구가 아니다. 차이는 책임이 어디서 시작되고 어디서 끝나는가에 있다.

도구가 강력해지면 사람들은 그 도구에 정체성을 두르고, 결국 그 기술 전체가 도구 하나로 환원되어 버린다 — 과거 Java 중심 시대가 그랬던 것처럼.

잘못된 지표

AI의 성공을 “처음 동작하는 버전까지 걸린 시간”으로 재면 핵심을 놓칩니다. 진짜 지표는 “안전하게 머지되기까지 걸린 시간(time to safe merge)”입니다. 여기엔 코드 리뷰, 테스트 품질, 리스크 평가, 롤백 절차, 그리고 유지보수 비용이 모두 포함됩니다.

Time to First Version

데모가 돌아가기까지의 시간. 무언가를 보여줄 수 있다는 것만 증명할 뿐, 팀이 그것을 흡수했는지는 말해주지 않습니다. 데모는 잘못된 결승선입니다.

Time to Safe Merge

리뷰 · 테스트 · 리스크 · 롤백 · 유지보수까지 포함한 시간. AI가 코드 생성을 싸게 만들면서 안전한 머지를 더 비싸게만든다면, 팀은 생각만큼 이득을 본 게 아닙니다.

산출물은 진척이 아니다

생성된 코드는 확장적(expansive)이 아니라 제약적 (constrained)이어야 합니다. 크고 지저분한 변경은 일을 하류의 유지보수 팀으로 떠넘길 뿐입니다. AI가 만든 코드도 손으로 쓴 코드와 똑같은 기준을 충족해야 합니다.

좋은 변경은 좁고(narrow), 설명 가능하며 (explainable), 경계가 분명해 (bounded), 시스템 전체를 끌고 다니지 않고도 머지할 수 있어야 합니다.

AI는 책임을 질 수 없다

사람이 쓴 코드에는 보통 결정의 흔적(decision trail)이 남습니다. 반면 AI가 만든 코드에는 의도적 선택이 아니라 “완성(completion)”이 담겨 있습니다. 진짜 오너십은 리뷰 이전에 생성된 결과물을 내가 소유한 엔지니어링 결정으로 전환하는 데서 나옵니다.

오너십이 세 번째 차이다. 바이브 코더는 “모델이 생성했다”고 말할 수 있다. 소프트웨어 엔지니어는 “내가 소유한다(I own it)”고 말해야 한다. 책임은 모델에 머물 수 없다.

컨텍스트는 파일만이 아니다

모델은 코드를 읽지만 시스템을 총체적으로 이해하지는 못합니다. 엔지니어링 컨텍스트는 코드 바깥에 흩어져 있습니다 — 장애 이력, 마이그레이션 경험, 고객 행동, 운영의 고통, 팀 컨벤션, 보안 요구사항, 컴플라이언스 규칙. 그래서 숙련된 엔지니어일수록 AI에게 자유가 아니라 경계와 제약을 줄 때 가장 큰 가치를 얻습니다.

장애 · 마이그레이션 이력

고객 행동 · 운영의 고통

팀 컨벤션 · 보안 · 컴플라이언스

“프로덕션에는 제약이 필요하다(Production needs constraints).”

바이브 코딩의 자리: 발견 vs 전달

핵심은 AI를 금지하느냐가 아니라 어디에 배치하느냐 (placement)입니다. 틀려도 비용이 낮은 발견 단계에서는 바이브 코딩을, 결과가 고객 · 팀 · 비즈니스에 영향을 주는 전달 단계에서는 엔지니어링 규율을 쓰십시오.

Discovery · 발견

아이디어 탐색과 빠른 프로토타이핑. 지저분함이 허용되고, 틀렸을 때의 비용이 낮습니다. 바이브 코딩이 빛나는 영역.

Delivery · 전달

결과가 고객에게 닿는 영역. 틀렸을 때의 비용을 고객 · 팀 · 비즈니스가 떠안습니다. 엔지니어링 규율이 필요한 영역.

도제(Apprenticeship)의 문제

주니어 엔지니어는 AI를 쓰면 더 생산적으로 보이지만 실제로는 덜 배웁니다. 이는 엔지니어 성장의 핵심인 멘탈 모델 형성을 약화시키고, 팀을 단단하게 만드는 동료 학습(peer learning)을 가로막습니다.

코드 리뷰는 일종의 “기여자 포커(contributor poker)”로 작동해, 키워줄 만한 팀원을 가려냅니다. AI 제출물은 이 피드백 루프를 끊어버립니다. — “바이브 코딩은 더 빨리 배우게 해준다. 소프트웨어 엔지니어링은 그 배움의 대가를 평생 치르지 않게 해준다.”

진짜 차이 — 그리고 결론

바이브 코더는 아이디어 도출과 빠른 프로토타이핑에 강합니다. 소프트웨어 엔지니어는 리뷰 · 보안 · 테스트 · 운영 · 미래의 변경을 통해 시스템을 소유합니다. 진짜 실력은 어느 모드로 일해야 하는지 아는 것입니다.

금지도, 무비판적 수용도 아니다

같은 사람이 발견 단계에서는 바이브 코딩을 하고, 전달 단계에서는 엔지니어링으로 전환해야 합니다. 틀려도 비용이 낮은 곳에는 바이브 코딩을, 비용을 고객 · 팀 · 비즈니스가 떠안는 곳에는 엔지니어링 규율을 쓰십시오. 이 구분은 능력의 차이가 아니라 책임의 차이를 반영합니다.