AI 시대의 코딩

복붙 지옥에서 바이브 코딩까지

by 핑크곰

LLM의 시대가 도래하면서 코딩 영역은 사람에서 AI로 빠르게 재편되고 있다. 간단한 학습용 코드나 연구용 프로젝트 말고 상용 서비스에도 가능할까? 가능성이 궁금해서 직접 해봤다.



클로드와 함께한 상용 서비스 개발기

작년(2024년)에 클로드에 프로젝트를 만들고 기획부터 설계, 개발까지 진행해봤다. 서비스는 웹, 앱(iOS, Android), 메시징 서버 4개의 프로젝트를 만들어서 진행했다. 앱은 웹을 포함하는 하이브리드 앱 스타일이고 설정만 웹과 인터페이스 하는 구조였다.

스크린샷 2025-06-10 오후 9.16.29.png 클로드 프로젝트 예시

이 프로젝트는 기존에 있던 서비스를 리뉴얼하는 게 목표였다. 그래서 DB는 다 만들어져 있었고 데이터도 있었다. 소스 코드를 직접 다 프로젝트에 올린 건 아니고, DB 스키마와 샘플 데이터만 프로젝트 지식에 업로드했다.


1. 웹 개발: 뚝딱 만들어버린 SPA

웹의 경우 기존 서비스는 별도의 프론트 프레임워크가 없는 템플릿 기반 서비스였는데, 새로운 서비스는 React로 만들었다. 단순 웹 서비스도 아니고 SPA 형식의 서비스를 너무 쉽게 구현하는 거 보고 사실 충격 먹었다.

Redux나 Recoil 같은 상태 관리 라이브러리를 사용할 만큼 복잡한 구조는 아니었지만, 14개의 메뉴가 있는 나름 규모가 있는 웹 서비스였다. 뚝딱 만들더라... 업무시간 외에 그냥 취미 삼아 해본 거였는데도 불구하고 8월 11일에 시작해서 9월 말에 마무리했다.


2. 메시징 서버 개발: 4일의 기적

메시징 서버처럼 UI가 없는 백엔드 개발은 훨씬 더 쉽고 간단했다. 9월 마지막 주 4일 만에 끝나버렸으니까.


3. 앱 개발: 할루시네이션과의 전쟁

앱 개발 때문에 고생했다. 생각보다 잘 못하더라. 어차피 하이브리드 앱이라서 처음에는 Flutter를 사용해서 해보려고 했는데, 간단한 웹 컨테이너 서비스조차 완성도가 매우 떨어지더라.

그래서 Android와 iOS로 나눠서 개발했다. 기존 서비스가 그렇게 각자 개발했었거든. 그런데 웹과 인터페이스하는 부분에서 완성도가 많이 떨어졌다. 아무래도 각 소스코드가 별도의 프로젝트에 올라가 있다 보니 서비스 전체를 다 이해하고 있지 않아서 생기는 이슈 같기도 했고... 물론 앱을 개발할 때는 웹 소스코드를 통해서 인터페이스를 충분히 설명해줬지만, 할루시네이션 범벅이었다. '차라리 모른다고 해라 이자식아~'라는 말이 몇 번이고 입에서 튀어나왔다.

9월 말에 시작해서 11월 초까지 개발했는데, 소스코드를 몇 번을 rollback 하면서 했는지 기억도 잘 안 날 정도로 짜증 나는 일이었다. 이건 못할 일이구나 싶기도 했지만... 그래도 시작은 했으니 끝은 봐야지 하면서 몇 번이고 재요청하면서 작업했다.


총 4개의 프로젝트가 8월에 시작해서 11월 중순에 끝났다. 업무시간 외에 상용 서비스를, 웹과 앱까지 다 포함해서 1인 기획 개발로 3개월 걸린 거니까 생산성은 정말 놀랄 만했다.(심지어 9월부터는 대학원 생활까지 병행했다 -_ -)



AI 개발하면서 느낀 점들

그렇게 AI를 활용해서 상용 서비스를 개발하면서 느낀 게 몇 가지 있었다.


첫째, 자료가 풍부한 분야는 정말 잘한다.

웹 서비스처럼 소스코드나 트러블슈팅 같은 자료가 많고 커뮤니티가 잘 구성되어 있는 분야의 프로젝트는 정말 엄청 잘 만들더라. 20년 차인 나보다 낫다 싶었다.


둘째, 폐쇄적인 분야는 아직 부족하다.

그렇지만 앱처럼 소스코드가 많이 오픈되어 있지 않은 분야는 아직 많이 부족하다 싶더라. 특히 iOS처럼 폐쇄적인 영역은 학습이 부족한 건지, 그냥 답이 없다...


셋째, UI는... 할많하않.

진짜 패딩, 마진 조금 바꾸는 CSS 한 줄조차 쉽지 않다. 이것 바꾸면 저게 틀어지고 다시 원복시키고의 무한 반복이다.


넷째, 코드가 길어질수록 정확도가 떨어진다.

소스코드가 길어질수록 정확도가 확실히 떨어졌다.


다섯째, 할루시네이션은 여전하다.

'틀린 걸 틀렸다고 말해주는 너가 되길 바라'라는 말을 얼마나 많이 했는지 모른다. 넌 어쩜 그리 뻔뻔한 거니 ㅎㅎㅎㅎ


당시엔 Reasoning 모델을 사용한 게 아니라서 할루시네이션이 더 심했던 것 같다. 확실히 Reasoning 모델이 정확도는 더 높은 것 같더라.



복붙 지옥에서 바이브 코딩으로

스크린샷 2025-06-10 오후 9.24.27.png 클로드 코드 in VSCode

내가 작업한 방식은 클로드 프로젝트에 모든 소스코드를 올리고 클로드가 생성한 코드를 복붙하는 방식이라서 번거로운 게 많았다. 특정 부분만 수정을 했는데 그 부분을 찾는 것도 굉장히 번거로웠고, 그러다 보니 매번 "전체 코드 다시 작성해줘"라고 말하는 게 일상이었다. Ctrl+A → Delete → Ctrl+V의 연속이었다.

그리고 클로드의 컨텍스트 길이가 제한적이다 보니, 뭔가 좀 진행될 때쯤 컨텍스트가 부족해서 새로운 채팅으로 넘어가는 것도 너무 불편했고, 그때마다 다시 다 설명해야 하는 것도 곤욕이었다. 코드 길어져서 중간에 "사용 가능한 전체 길이에 도달했다"고 말 나오면 진짜 헬이었다...

이런 시행착오들이 많았지만, 그래도 기존과 비교가 되지 않는 생산성 때문에 개발의 패러다임이 바뀌겠다는 믿음이 확고해졌다.


바이브 코딩의 시대

그 이후에 "바이브 코딩"이 대세가 되면서 CursorAI, Claude Code에 관심이 많아지더라. 최근에 AI를 활용한 코딩에 대한 다양한 기사도 나왔고...

처음엔 바이브 코딩의 의미가 잘 와닿지 않았다. 바이브? 느낌적인 느낌? 프로그래밍이랑 뭔 상관이 있다고... 작년에 클로드 채팅으로 상용 서비스를 개발해봤지만 그게 바이브 코딩이란 단어를 이해시키는 경험은 아니었다.

그래서 이번에는 LLM 채팅이 아니라 CursorAI와 Claude Code를 사용해서 한번 해보자는 생각이 들어서 두 개를 간단히 사용해봤고, Claude Code를 Max 플랜으로 구매해서 사용하기로 결정했다. 사실, 요즘 CursorAI가 대세인데 Claude Code를 결정한 건, 그냥 작년에 써본 거라 ㅎㅎ 클로드에 대한 개인적인 호감 정도?! IDE는 뭐, 그놈이 그놈이다.


복붙 신공이 사라진 세상

가장 큰 차이는 복붙 신공이 필요 없다는 거다. 이게 간단히 키보드 두 번 누르는 차이라고 볼 게 아니라 생각보다 많은 게 다른 거다.

우선 채팅에서 변경된 코드를 찾아서 볼 필요가 없어지는 거다. 알아서 변경된 부분을 AI가 수정해주니까. 매번 전체 코드를 다시 생성할 필요도 없게 된 거다. 뿐만 아니라, 디렉토리와 파일 생성도 알아서 다 하는 거다. 프로젝트 지식에 파일 올릴 때는 디렉토리 구조까지 올릴 수는 없거든.

변경된 코드를 다시 프로젝트 지식에 파일 올리면서 동기화하는 일도 필요 없어졌다. 어차피 IDE가 알아서 다 하니까(실제로는 Claude Code가 컨텍스트 정보를 다 올리는 거지만...).


자비스가 현실이 되다

지금까지는 코드 레벨이었고, 더 중요한 건 결국 런타임이다. 프로그램을 작성해서 실행하지 않고서는 에러가 어디서 나는지 모르잖아? 작년까지는 에러가 발생하면 에러 내용을 일일이 LLM한테 다 말해줘야 했다. 하지만 바이브 코딩에서는 그럴 필요가 없는 거다, 에러 내용을 다 보고 있으니까. 뿐만 아니라 코드를 빌드하고 실행하는 모든 과정을 알아서 CLI를 통해서 하니까 정말 스타크가 된 기분이었다. 마치 어벤저스에서 토니 스타크가 자비스와 대화하면서 울트론을 개발할 때 모습 마냥...

1024516-avl1310v0411100-1copy-1200-27f71eff9c59b48ee46354d93353999e.jpg

가령, 1년치 카드 사용내역이 담긴 엑셀 파일이 하나 있고, 지난 1년 동안 이 카드로 어떤 걸 가장 많이 사용했는지 통계를 내고, 소비 분야에 대해서 연, 반기, 분기, 월별로 분석해서 도식화 리포트 작성해야 한다고 가정해보자. AI로 개발할 생각을 안 하던 시절(불과 2년 전이다...)이면 Apache POI 프로젝트부터 찾고 있었을 거다 ㄷㄷㄷㄷㄷ 끔찍하다.

그래도 작년이라면, 우선 엑셀 파일을 CSV나 JSON 또는 PDF로 바꿔서 프로젝트 지식에 올려놓고 리포트를 만드는 코드를 작성해달라고 했겠지. 물론 이거 한 번에 잘 안 된다. 클로드의 "아~ 맞습니다."라는 말을 여러 번 들으면서 수정하고 나면 처리가 끝났을 거다.

근데 바이브 코딩 시대에는 그냥 프로젝트 폴더 어딘가에 엑셀 파일을 올려놓고 리포트 요청하면 굳이 엑셀 파일 변환하지 않아도 자기가 엑셀 내용 읽는 코드 작성해서 데이터 읽고 코드 고치고 디버깅해가면서 완성해나가는 거다... 무서울 정도다.

(아... 말하고 나니 나이가 체감되네... pandas도 아니고 POI가 먼저 떠오르다니... ㅠㅠ)


충격적인 순간

내가 제일 충격이었던 건, DB에서 데이터 조회해서 웹에 표시하는 화면을 개발해야 했는데, 알아서 MySQL 스키마 파악하는 쿼리를 실행하고 데이터 파악한 다음 내용 보고 코드 작성하더라... 이런...


README.md

작업한 내용들을 MD 같은 파일로 문서화하고 코드 품질을 올려주는 static testing 해주는 건 뭐 일도 아닌니게 되어버렸다.(런타임 환경을 직접 해버리니... SonarQube는 이제 죽은 것 같다... 미안하다 못 지켜줘서...) README.md 파일 직접 만들 일은 이제 없다고 해도 과언이 아니다.


진정한 바이브 코딩

"바이브"라고 부르는 이유가 더 명확해진 건 AI가 알아서 기획을 하고 계획을 세워서 개발하며 품질까지 관리해주는 미친 짓(?)을 하기 때문이다. 즉 개발자인 나는 그냥 느낌만 말해도 알아서 개발하는 거다.

요구사항을 기술적인 관점에서 아주 명확히 제시하는 게 아니라, 대충 '음~ 나 이런 거 만들고 싶은데 말이야~'라고 하면 마치 어린아이가 말하는 걸 부모님이 어른의 시각으로 해석해서 해결해주는 것마냥 친절하게 다 해주는 거다. 난 그냥 느낌만 있으면 된다.

젠슨 황이 "인간이 새로운 프로그래밍 언어다"라고 한 말도 이해가 된다. 그냥 기계랑 이야기하면서 느낌을 이야기하면 그걸 실체화해주는 거다. 바이브 코딩이란 게, 느낌적인 느낌을 구현해주는 게 AI가 되는 거다.



아직 부족한 점들

너무 훌륭한 바이브 코딩이지만, 아직까지 부족한 점들도 있다.


보안 문제

우선 제일 먼저 보안. 아무래도 취약하다. Claude Code를 설치하면 제일 먼저 강조하는 게 'sudo로 설치하지 말 것'이다. 처음엔 나도 '뭐 내 노트북인데, 별거 있겠어?' 했는데, 쓰다 보니 '헉' 하더라... 결국 지우고 다시 깔았다.

ignore 파일로 컨텍스트에 포함시키지 않는다고 해서 파일 자체를 읽지 않는 건 아니다. 물론 K8S로 구성해서 보안 관련된 내용들은 접근할 수 없게 만들고 Claude Code 돌리면 안정적이겠지만, 그거 생각보다 복잡하고 귀찮은 일이라서 많은 초급 개발자들은 그냥 비밀번호 다 포함해서 Claude Code 돌리는 사람이 많을 것 같다. 암튼 AI 시대에 보안은 정말 훨~~~~씬 더 중요해졌다. 매트릭스 세상에서 터미네이터를 만나고 싶지는 않아 ㅠㅠ


프로세스 불안정성

Claude Code가 실행하는 프로세스가 생각보다 불안하다. 자주 죽거나 권한 때문에 제대로 실행되지 않는 경우도 있다. Reasoning 모델이라고 한들 할루시네이션이 100% 없는 것도 아니기 때문에 개발 서버를 구동할 때 포트 충돌로 자주 문제를 일으키더라. 포트 계속 바꿔가면서 서버 띄우는 모습 애처로웠다;;

더 큰 문제는, 프로세스가 정상적으로 실행되지 않으면 버그가 있다고 생각하고 코드에 손댈 때가 있는데, 이러면 다같이 죽자는 거다 ㅎㅎㅎ


CLI의 한계

그리고 LLM과 다르게 아직은 CLI 기반이다 보니, 다양한 멀티미디어를 활용해서 손쉽게 대화하지 못하는 점은 불편한 것 같다. 조만간 키보드 대신 말로 하는 시대가 오겠지만, 암튼 현재로선 LLM 채팅 대비 답답한 건 사실이다.



마무리하며

불과 1년 사이에, 아니 6개월 사이에 AI 개발은 너무나 많은 게 변하고 현실화되어가고 있다.

물론 현재 바이브 코딩이 여러 개의 프로젝트의 맥락을 동시에 이해하고 대규모 엔터프라이즈급의 서비스를 문제없이 해결할 수 있는 상황은 아니다. 모노레포 대신 멀티레포가 뜨는 이유도 이런 맥락이겠지...

하지만 아주 머지않은 미래에, 대부분의 사람들은 필요한 게 있으면 스스로 애플리케이션을 만들어서 사용하는 시대가 될 거다. 비단 개발자가 아니라도 말이다. 그냥 모두가 개발자가 되어버리는 거다. 젠슨 황이 말한 것도 그런 의미라 생각한다.

개발자라는 직업은 서비스/프로젝트의 큰 그림을 볼 수 있는 식견이 필요해지고 개발 스킬보다는 전략을 잘 짜는 전략가가 돼야 할 것 같다.

더 많이 공부하고 경험하고 변화에 맞춰가는 개발자가 돼야겠다.

keyword
매거진의 이전글CCTV를 AI의 눈으로 바라보다