포스트

바이브 코딩으로 얻은 것 vs 잃은 것

바이브 코딩으로 얻은 것 vs 잃은 것

작년부터 본격적으로 바이브 코딩(또는 에이전틱 코딩)을 익힐 겸 이것저것 개발을 해보고 있다. 하면서 든 생각을 정리해 본다.

얻은 것

시작의 부담을 줄여줌

무엇보다 좋은 점은 시작에 드는 수고가 아주 낮아졌다는 것이다. 예전에는 내가 익숙한 기술 스택에서 하는 게 아니라면 뭔가를 만들기 위해 시작하는 게 쉽지 않았다. 기본적으로 공부하고 선택해야 할 것이 많았기 때문이다. 그 과정에서 여러 번 시행착오를 겪기도 한다. 튜토리얼을 따라 하고 문서를 살펴보며 검색도 해가며 간신히 한 걸음 한 걸음을 디딜 수 있었다. 바이브 코딩은 그 부담을 극적으로 낮춰줬다. 그냥 아이디어가 있으면 LLM에 물어보면 된다. 그럭저럭 돌아가는 뭔가를 바로 얻을 수 있다. 이건 확실히 좋은 점이다. 덕분에 그동안 쌓아놨던 구상만 해놨던 프로젝트 아이디어를 하나씩 만들어보고 있다. 상당히 많은 부분에서 도움받고 있다.

귀찮은 일을 줄여줌

개발을 하고 코드가 늘어날수록 귀찮은 일이 많이 생긴다. 서로 결합된 코드는 한쪽을 고치면 다른 쪽도 고쳐야 한다. 또 너저분해진 코드를 리팩토링도 해야 하고, 설계가 부족해서 전체적으로 수정을 해야 할 일도 생긴다. 흔한 케이스 중 하나는 print를 logging으로 바꾸는 것도 있다. 또 라이브러리를 다른 것으로 교체할 일도 생긴다. 이럴 때도 LLM은 큰 도움을 준다. 대부분 완전히 맡길 수 있는 수준이다.

글로 생각을 정리하기

LLM과 소통하기 위해 사용하는 글, 즉 프롬프트는 꽤 특수한 글이다. 자연어지만 사람들 사이의 자연어와는 좀 차이가 있다고 생각한다. 문장을 대충 쓰고 키워드만 맞게 넣으면 기대한 결과를 내주어서 좋을 때도 있지만 잘 안될 때는 LLM에 맞춰서 다듬느라 손이 더 들기도 한다.
나는 기본적으로 기록하고 정리하는 걸 좋아하는 편이다. 하지만 요새 프롬프트나 LLM이 참조할 마크다운 파일 등이 추가되며 그 어느 때보다도 많은 글을 쓰는 것 같다.
물론 글을 쓰는 과정도 LLM과 함께한다. 그들(그것들?)과 주고받으며 생각과 글을 정리하는 것은 꽤 재미있는 일이다.

속도로 인한 피로

빠를 때도, 느릴 때도 피곤하다. 프롬프트를 던지면 뭔가 잔뜩 쏟아놓아서 그걸 대충이라도 확인을 해보려고 할 때 피곤해진다. 피드백도 해줘야 하고.. 마치 엄청 활발한 강아지가 말을 하는 것 같다. 그냥 놀아주는 것이면 상관없겠지만 뭔가 결과를 만들어야 하는 상황이면 얘가 제대로 하고 있는지 봐줘야 한다. 그 속도에 지칠 때가 있다.
반대로 느려서 답답할 때도 많다. 특히 에이전트로 코딩을 하고 있을 때이다. 기다리며 지켜보고 있기도 애매하고 다른 걸 하자니 사고를 칠까 봐 신경이 쓰인다. 애매한 템포로 왔다 갔다 해야 하는 상황이 된다. 이것도 역시 좀 피곤해진다. 아예 맡겨놓고 밥이 됐는지 죽이 됐는지 확인하는 게 나을 것 같다. 아니면 내가 좀 더 이 기계를 잘 사용하거나.

여기까지가 얻은 것이라면 다음은 잃은 것, 잃어가는 것이다.

잃은 것

향상되는 느낌

요새는 강의 자료를 만들기 위해 집중적으로 에이전트를 이용해 코드를 만들고 있다. 생산성은 확실히 올라갔다고 느낀다. 하지만 반대로 나의 숙련도는 그다지 올라가지 않다고 느낀다. 예를 들어 지금 만들고 있는 RAG(검색 증강 생성)에서 핵심 API와 파이프라인이 뭔지 내 머리 속에 남아있지 않다. 강의 자료에 들어가 있고 내가 설명해야 하는 부분인데도 말이다.
개발에 있어서도 마찬가지다. 완성품은 있는데 그걸 만들어 가며 내가 기술적으로 나아진 부분이 있나? 라고 생각해 보면 딱히 없는 것 같다. 목적이 달라서 그런 것 같기도 하다. 만드는 것이 목적일 때는 과정 안에서 배우는 것을 중요하게 여기지 않기 때문이다.
이전에는 실수와 삽질, 그리고 그 경험을 기록하고 정리하는 게 배움의 핵심이었다. 그러면서 성장했다. 지금으로서는 그걸 잃어버린 것 같다. 사실 LLM이 쉽게 생산할 수 있는 것을 배우는 게 의미가 있는지도 모르겠다. 예전에는 분명 가치가 있었고 즐거움도 있었는데.
교육생 중에도 비슷한 고민을 하는 친구들을 종종 만날 수 있다. 이게 맞는 방식인지. 나도 답을 모르겠다. 어디에서 전문성을 찾을 수 있을까. 물론 LLM이라는 새로운 도구를 잘 다루는 것은 의미가 있다. 하지만 개발자가 그동안 다뤄왔던, 어쩌면 이제는 저수준이라고 말할 수 있는 지식을 배우는 게 어떤 의미가 있을까?
LLM이 소프트웨어, 하드웨어를 완전히 추상화할 수 있다면 저수준 지식의 필요성이 사라질 것이다. 과연 그렇게 될까? 어떻게 보면 결함 없는 기계를 만들 수 있다는 얘기 같기도 하다. 쉽지 않을 것이다. 현재의 결론은 “저수준 지식을 배우는 게 의미가 있다” 이다. 추상화의 레벨이 이전보다 올라갔다 정도이다.

디지털 사진과 정성

예전에 아날로그 사진(필름 사진)을 취미로 했었다. 고등학생 때부터 한 6-7년 무거운 카메라를 들고 참 많이도 돌아다녔다. 디지털 카메라가 등장한 뒤로 사진 찍는 것이 더 이상 즐겁지 않게 됐다. 필름 카메라가 주던 즐거움-긴장감, 기다림, 놀라움-이 사라졌기 때문이다. 필름 시절에는 셔터 한 번 누르는 데 신중을 다했다. 필름은 한정되어 있으니까. 비싼 자원이니까. 한 장의 사진에 정성을 들였다 라고 얘기할 수 있겠다. 이 한 장의 사진이 어떻게 나올지 상상하는 것도 재미있었다. 한 롤이 다 차고 필름을 현상하고, 인화하기까지의 기다림도 즐거웠다. 결과물이 나오면 실망할 때도 있지만 의외의 사진이 나올 때도 있었고 그건 놀라움과 즐거움을 주었다. 나온 사진을 보며 친구들과 얘기하는 즐거움도 컸고.
디지털 사진은 어떤가? 그 모든 것이 다르다. 신중함이 사라졌다. 한 장은 사진은 보통 버리는 게 되었다. 그냥 셔터를 마구 누르고 그중 한 장 건지는 게 보통이 되었다. 결과를 즉시 볼 수 있게 되었고 기다림과 기대감이 사라졌다. 그 감각을 더 이상 느낄 수 없게 된 것이 나에게는 핵심이었고 그 뒤로 진지하게 사진을 찍지 않게 됐다.
바이브 코딩도 비슷한 것 같다. 이전에 하던 고심과 고민, 변수명 하나 허투투 짓지 않기 위해 머리를 싸매고, 코드 한 줄 한 줄에 정성을 들이던 맛이 사라졌다. 방식의 변화는 감정의 변화를 불러왔다. 몇 시간 동안 나를 괴롭히던 버그가 해결됐을 때 느낄 수 있던 짜릿함을 사라졌다. 지금 생각해 보니 자동사냥 게임도 비슷한 것 같다.
어쩌면 이 모든 것이 이제 사라져가는 수동 코딩의 향수에 빠져 하는 푸념일지도 모르겠다. 요새 레트로 열풍에 필름 카메라가 부활했다는 얘기도 있는데 수동 코딩도 미래의 언젠가 레트로 열풍이 불지도..

PM과 집중력

PM(Project manager)을 하면서 잃어버린 것이 집중력이다. 일이 되도록 하는 게 PM의 역할이고 그러려면 사람과 자원에 신경을 써야 한다. 프로젝트를 망하게 할 수 있는 수많은 포인트가 있고 나는 그걸 피해 가기 위해 신경을 써야 한다. 그러다 보니 한 가지에 집중하는 능력이 상당히 떨어지게 됐다. 한동안 PM을 하다가 개발로 잠시 돌아왔을 때는 신경 쓸 게 줄어서 얼마나 즐거웠던지..
바이브 코딩은 PM이 되는 것과 비슷하다. 여러 에이전트를 팀원으로 데리고 있는. 끊임없이 입력과 출력을 주고받고 관찰하고 수정하고 기다리는 과정이 연속된다. 하나의 에이전트만 돌려도 집중이 흐트러진다. 앞의 속도 부분에서도 얘기했지만 너무 많은 것을 쏟아내기 일쑤라서 그렇다. 여러 에이전트를 동시에 활용한 적이 있는데 금세 정신이 혼미해져 그만두었다. 빈번한 컨텍스트 스위칭으로 머리에 부하가 많이 갔다. 어쩌면 이렇게 통제하려고 하는 게 바이브 코딩에서는 맞지 않는 방식일지도 모르겠다. 지금으로서는 이런저런 시도를 해보고, 다른 사람들은 어떻게 하는지 보고 배우는 게 좋을 것이다.
집중력은 상당히 얻기 힘든 역량이라고 한다. 그리고 성과가 좋은 사람은 뛰어난 집중력을 가지고 있다고도 한다. LLM이 대신해 줄 수 없는, 길고 집중적인 사고가 필요해지면 어떻게 될까? 안 그래도 스마트폰 때문에 집중력이 저하된 시대인데.. 살짝 걱정이 된다.

정리하고 보니 왠지 잃은 것 쪽이 더 무게감이 있어 보인다. 특히 과정을 중요하게 생각하는 내 성향에서는..


참고

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.