사실 ‘바이브 코딩’이라고 불려지는 것 자체가 의문점이 많긴 한데..
아무튼 몇년 전 부터 주기적으로 ‘아 코딩하기 귀찮다 ai한테 맡겨봐야지!’ 하면서 대충 말로 설명하면서 ai가 코드 짜는걸 메인으로 하는 프로젝트를 해봤습니다.
뭐 해봤을 때 결론은 아직은 바이브 코딩이란 문구는 스캠 문구를 보는 것 같은 느낌이다 라고 생각이 듭니다.
아마 구글링을 하거나 ai한테 물어봐도 현 시점에서 관련된 비판 내용은 많기 때문에 객관적인 시점은 검색해서 보시는걸 추천드립니다. 이 글은 그냥 제가 느꼈던 바이브 코딩의 후기같은 글이 될 것입니다. 물론 저는 지금은 어떻게 활용하는 중인지도 한번 적어볼까 합니다.
참고로 제가 써본 ai와 솔루션은 코파일럿과 커서의 GPT4, Claude 3.7 Sonnet이였습니다.
알고있는 지식만큼은 많다
다들 알다시피 요즘의 상용 LLM은 알고있는 지식이 어마무시합니다. 가끔 그럴듯한 구라를 치긴 하지만 바이브 코딩에선 그런 문제는 곧바로 에러나 결과물로 연결되어 파악이 쉽고, 이걸 해결하는 프로세스까지 존재하는 솔루션도 많습니다. 덕분에 어시스던트 느낌으로 사용할 땐 매우 유용하게 잘 썼습니다.
하지만 지식이 방대한 만큼 가지고 있는 지식의 효율을 따지면서 코드로 옮기는건 아직까진 꽤나 힘듭니다. 어떤 로직을 구현하기 위해 로직을 설명하고 이걸 새로운 로직으로 만들어 달라고 요청하는 것 보다. 이미 존재하는 로직 구현부에서 최적화 방법이나 리펙토링 관련 질문을 요청하는 것이 훨씬 전문적으로 코드를 작성해줍니다.
그렇기에 LLM이 가진 지식을 활용하기 위해선 무에서 유를 창조하는 것 보단 기존에 있는 내용을 다듬어주는 방식으로 활용해보는 것이 가장 좋은 것 같습니다.
AI가 메인으로 프로그래밍?
AI를 메인으로 프로그래밍을 하는 프로젝트는 요즘 제가 주기적으로 시도해보는 주제이긴 합니다.
집에서 여러 AI 아티클 읽고 뭔가 시도해보고 싶은 주제면 건들여보고 있는데, 따로 프로젝트를 파서 심심풀이로 확장해보는 것도 꽤 귀찮은 경우가 간혹 있어서 그냥 AI한테 메인 프로그래밍을 시키는 경우가 생기긴 하더라구요ㅋㅋ
이건 결론부터 말씀드리자면 현 시점으론 꽤 구렸습니다. 특히 GPT 계열의 LLM이 가장 구렸습니다.
일단 AI가 메인으로 프로그래밍하면 발생하는 문제를 한번 적어볼게요.
1. 동일한 코드를 계속 적는 문제
이건 프로그래밍을 이제 막 배우게 된 분들이 자주 실수하는 내용이기도 합니다. 생각보다 코드를 새롭게 작성할 때 재사용하는 중복 코드가 정말 많습니다.
사실 저도 처음 AI한테 프로그래밍을 맡길 때 처음엔 꽤 그럴듯하게 적어주고, 수정 요청을 하면 수정된 내용으로 잘 고쳐지다보니 코드 리뷰를 점점 안하게 되었습니다…ㅋㅋㅋ…
결국 뒤늦게 코드를 확인했을 때 중복되는 코드가 정말 많았고 좀 개판이였습니다. 심지어 파이썬임에도 불구하고 리펙토링의 요청에 대해선 중복되는 코드의 함수화도 하지 않고 그저 주석만 늘어나고 있었습니다.
이런 문제는 GPT 계열에서 많이 발생했습니다. 최근에 공개된 GPT5는 어떨지 궁금하네요.
2. 처음 작성한 코드가 가장 베스트
바이브 코딩으로 AI에게 코드를 맡겨버리면 생각보다 코딩할 수록 점점 멍청해지는 느낌을 받았습니다. 이건 어떤 LLM이든 다 같은 문제였습니다.
아마 기존에 요청한 내역을 최대한 반영하고자 점점 보수적으로 변한다는 느낌이 컸습니다. 눈치껏 보수적으로 변하는게 아닌 그냥 보수적으로 변하는 느낌이…
사실 상용이 아닌 로컬로 다양한 LLM 이것저것 튜닝된 것들 써보면 기존 요청 내역을 기억하고 조정하는게 정말 대단한거라는 걸 알긴 하지만… 여기서는 의외로 단점으로 다가오는게 있었습니다.
아무튼 처음으로 짜누는 코드가 가장 베스트 아웃풋이고, 이 후 점점 뭔가 붙어버리면 급하게 기존 코드에 뭔가 추가해버린 느낌의 무언가로 되어버리더군요.
그래도 커서가 트랜드가 되면서 이러한 문제도 꽤 많이 개선된게 체감됩니다. 코파일럿도 코드를 분석할 때 관련있는 파일들도 같이 분석하려고 노력하는 모습이 드디어 보여주고 있어서 진짜 놀라운 발전이라 생각이 들더라고요ㅋㅋㅋ
하지만 상대적으로 발전한게 느껴진거지, AI가 처음부터 작성해준 코드는 인간이 작업한 코드를 리펙토링 해주는 것 보다 좋은 결과를 기대하진 아직 이른 것 같습니다.
3. 잘못을 지적해도 같은 잘못을 반복한다
이건 위의 2번과 비슷한 맥락의 문제입니다. 점점 보수적으로 되다보니 어떤 로직에 대한 개선점을 설명해줘도 무시하는 경우가 꽤 많습니다. 저는 이런 경우엔 그냥 기존 대화 및 프롬프트를 싹 리셋시키고 다시 요청을 보내지만 기존에 쌓았던 요청사항을 다시 전달해야하니 꽤 귀찮습니다.
뭔가 머리는 비상하지만 말귀를 못알아듣는 사람과 같이 일하는 느낌입니다.
‘자, 너가 생각하는 방식은 계속 문제가 발생하니 다시 처음부터 이야기 해보자’
‘넌 매우 예리하고 통찰력 있는 지적을 해줬어!🥹🥹🥹 머시기 머시기’
4. 결국 AI도 나도 못알아보는 코드
위의 문제점을 종합하게 되면 결국 나도 못알아보고 AI조차도 못알아보는 코드가 되어버리는 경우도 간혹 있습니다.
일단 이러한 문제를 조금이라도 개선하는 방식이 주석과 같이 코드를 작성해달라는 요청이긴 한데, 결국 이런 결론에 다다르면 아래의 생각을 하게됩니다.
- 그냥 이건 내가 코드를 짜는게 나을 거 같은데…?
- 프로그래밍을 모르는 사람이 이거에 의존해서 원하는 결과가 나오긴 할까?
조악한 실력이지만 프로그래밍으로 밥벌이 하는 저 조차 난감한 상황이 자주 발생했는데 ‘프로그래밍을 모르는 사람들은 코드가 멀쩡한지 알 수 있을까?’ 라는 생각이 꽤 자주 들었습니다.
언제부턴가 생각을 안하는 나
AI가 메인으로 프로그래밍을 하는 내용은 잠시 내려놓고 이야기를 해보자면
실무에서 로직을 만들다가 막히는게 있으면 커서 + Claude 3.7 Sonnet의 조합으로 자주 해결하고 있었습니다.
근데 이게 꽤 강력합니다. 실제로 구현 시간을 크게 줄여주고, 기존에 해놨던 설계를 기가 막히게 파악하고 코드로 잘 작성해줍니다.
진짜 놀라울 정도로 좋습니다. 그런데 계속 그렇게 지내다보면 로직을 짜려고 할 때 생각조차 안하고 커서에게 요청해서 해결을 하게 됩니다.
점점 이렇게 진행하다보면 코드 리뷰할 때 ‘이런 코드를 언제 짰지?’ 라는 생각이 들 정도로 너무 안일하게 쓰고 있는 제 자신을 발견했습니다.
꽤 나태해진 느낌이 심각하게 다가와서 그런지 요즘은 어느정도 생각을 하려고 노력을 하고 있습니다.
농담삼아 말하는 뇌가 녹는 느낌이 이렇게도 느껴지는건가 싶었습니다. 아무튼 저만의 철학 하나 세워서 벨런스있게 어떻게 사용할지에 대해 고민을 해보고 있습니다. 이것도 나중에 한번 블로그에 적어보는게 좋을 것 같네요.
상용 프로젝트를 바이브 코딩으로…?
사실 AI의 코딩 위주로 바이브 코딩으로 상용 프로젝트나 프로덕션 레벨의 무언가로 올릴 생각이 전혀 없긴 합니다.
그도 그럴 것이 지금까지 작성한 문제점을 놓고 봤을 땐 서비스로 이어질 수 있는 레벨의 폴리싱이나 유지보수 가능한 설계까지 기대하기 많이 힘들어보이기 때문입니다.
인터넷에 자주 접할 수 있는 ‘바이브 코딩으로 이런 프로젝트를 만들었습니다!’의 아티클 같은 경우도 꽤 간단한 프로젝트들이 대부분입니다.
복잡한 프로젝트도 존재하지만… 그건 코드 작성 시 인간의 개입이 매우 크기 때문에 사실 상 AI와 협업한 프로젝트로 볼 수 있을 것 같네요.
사실 상용프로젝트로 올리기 전 마주하게 될 문제 중
폴리싱이니 유지보수니 이러한 문제들 보다 더 심각한 문제가 있습니다. 그건 바로…
취약점 문제
사실 바이브 코딩의 카테고리에서만 발생하는게 아닌 전반적인 LLM을 사용하면서 발생하는 큰 이슈 중 하나입니다. 요즘 들어 바이브 코딩으로 서비스까지 올라간 프로젝트들 중에 취약점 문제에 대한 내용이 꽤 자주 보입니다.
이 영상에서도 친절하게 설명이 잘 되어있습니다.
사실 영상 속 내용 말고도 사용자가 직접 의문을 제기해야 바꿔주는 일이 많기 때문에 취약한 코드도 지적하지 않으면 모르는 일이 꽤 많은거라 생각합니다. 사실 사람끼리 작업할 때도 누군가가 지적해주지 않으면 충분히 발생할 수 있는 문제이기도 하지만, 전문가와 비전문가의 취약점 대응에 대해 큰 차이점이 있다고 생각합니다.
이 역시 취약점만 찾아다니는 AI도 주변에 꽤 보여지고 자동화 되고 있지만, 아직까진 어느정도 보안에 대한 숙지가 필요해보이네요.
느낀 점
일단 ‘바이브 코딩’으로 봤을 땐 아직 프로그래밍을 잘 모르는 분들에겐 꽤 많은 개념들의 숙지가 필요해보이기 때문에 사실 상 프로그래밍을 공부해야하는 느낌입니다. 결국 말을 통해 AI에게 세부적인 요청을 하는 것이라 어쩌면 직접 코딩하는게 더 나을 것 같은 상황도 꽤 여러차례 오기도 합니다.
뭐 이런 방식을 응용해서 일부 부트캠프는 AI를 통해 프로그래밍을 할 수 있는 정도로 교육 커리큘럼이 진행된다고 들었습니다. 그래서 부트캠프 출신 분들과 현업에서 일하는 지인들이 관련해서 많은 이야기를 해주는데…
음, 네…. 이건 이번 주제와 다르기 때문에…. 아무튼 그렇습니다.
하지만 어시스던트의 역할로 옆에서 프로그래밍 협업을 한다면 정말 시너지가 엄청난 것 같아요.
이건 여러 아티클에서도 많은 분들이 공통적으로 공감하는 내용이기도 합니다.
아직 인력을 대신해서 쓰는 정도까진 아니지만 언젠간 사람을 대신 할 정도의 능력으로 갈 수 있을지도 모른다는 생각이 듭니다. 그렇기에 저도 앞으로 AI를 어떻게 사용하면서 밥그릇을 뺏기지 않을지 고민해봐야겠네요.