[ Essay - Technology ] 바이브 코딩의 허와 실
지금 우리는 가히 AI 시대라는 패러다임의 전환에 시대에 살고 있다고 해도 과언이 아니다.
특히, IT 업계에서 대다수의 작업량을 차지하는 프로그래밍의 영역에서
생성 AI를 이용한 생산성 향상의 가능성이 보이면서
어느 분야보다 가장 빠르게 괄목적인 성과를 이루고 있는듯 하다.
고작 몇 년전에는 커서에 의해 프로그래밍을 AI에게 프로그래밍을 위임하는 것이
더 나을 수 있다는 것이 어느정도 증명되면서,
작년에는 Claude Code의 영향으로 인해 이러한 이슈가 좀 더 가속화되지 않았나 싶다.
이러한 굉장히 빠르게 이루어지고 있는 생성형 AI 솔루션의 발달은
개발자의 종말론을 더더욱 부각시키면서
업계 전반이 큰 변화를 겪고 있는 것으로 보인다.
특히 이러한 변화 속에서 “프로그래밍을 몰라도 생성형 AI만 있으면 제품을 만들 수 있다”는
주장도 자연스럽게 힘을 얻고 있다.
최근에는 Saas 솔루션은 종말할 것이라는 다소 파격적인 이야기도 들리는 것으로 보면
소프트웨어 업계가 큰 격변의 시기가 온것임에는 틀림 없어 보인다.
허(虛): 빠르게 만들 수 있다는 환상
이런 상황에서 가장 주목받는 주장들은 서론에서 언급했다시피
‘프로그래밍을 알지 못한다고 하더라도
생성형AI를 이용하면 빠르게 제품을 개발이 가능하다’라는 주장이고,
실제로 이는 어느 정도 타당성이 있어 보인다.
정말로 움직이는 결과물을 단 몇초 만에 보여주기 때문이다.
하지만, 이러한 ‘빠르게 제품 개발 가능하다’는 주장의 가장 큰 맹점이 있는데
개발자의 존재 이유가 단순한 제품이나 기능개발에 있지 않다는 점이다.
만약, AI를 통해 그럴듯 한 솔루션을 만들었다고 치자.
이것에 얼마만큼의 비지니스성과 지속가능성이 있을까?
더 나아가 당신이 이 솔루션을 이용하려고 하는 유저라면,
이 솔루션에 어떠한 가치를 내리고 얼마 만큼의 돈을 지불할 수 있을까?
당신이 금세 만들 수 있는 제품을 상대방이라고 못 만들 이유가 없지 않을까?
그러니깐, 앞서서 이런 것들을 생각하지 못 한 솔루션들은 상대적으로 높은 가치를 인정받기 어렵다.
만약 당신이 간단하게 기능을 구현했다면,
다른 사람들 또한 AI를 이용한다면 간단하게 구현할 수 있을텐데
그에 비용을 지불할 명확한 이유가 있을까?
누구나 할 수 있는 것들은 희소성이 없기 때문에 높은 가치를 받기 매우 어렵다.
결국 비즈니스적인 한계가 있다는 말이다.
결국 비즈니스적인 한계가 있다는 말이다.
비지니스성과 지속가능성을 고려하지 않은 단순한 ‘개발’ 자체는
장기적인 관점에서는 큰 의미를 갖기 어렵다.
모래성 처럼 무너지기 때문이다.
따라서, 빠르게 개발한 제품은 필연적으로 품질이 낮아질 가능성이 높다.
물론 여기서 품질은 코드 품질에 해당되고,
단순히 기능의 버그가 있느냐 없느냐의 일반적인 QA와는 또다른 이야기 이다.
이런 상황에서 단순하게 생성형 AI를 이용해 빠르게 제품을 개발하는 것에 무슨 의미가 있을까?
단순한 수준의 결과물은 생성형 AI 이전에도 구글링을 통해 가능했다.
물론 그렇다하더라도 바이브 코딩이 전혀 쓸모 없다는 것은 아니다.
그 가치와 가능성은 이미 어느 정도 입증되었다고 볼 수 있다.
특히 개인적으로는 자동화 부분과 비엔지니어와의 커뮤니케이션 도구로서 활용 가능하다는 점에서
개인적으로는 긍정적으로 평가하고 있는데
자동화 부분에서 '코드 리뷰'는 팀 내부에 코딩 스탠다드가 잘 정리되어 있는 팀이라면
이를 프롬프트화나 서브에이전트로 만들어서 일정 수준까지는 위임이 가능하며,
'테스트 코드'도 테스트 관점만 잘 정리해서 전달하면 일정 수준 이상의 품질을 보여준다.
비엔지니어와의 커뮤니케이션 도구로서는
생성형 AI에 사진만 전달해주면 기본적인 형태의 CSS를 생성해주는데
디자이너와는 디자인의 프로토타입을,
매니저나 디렉터들에게는 작업 진행도 확인시켜줄 수 있기 때문에
비엔지니어 팀원들과의 원활한 커뮤니케이션을 위한 보조 도구로 활용 가능하다.
따라서, 기존 단순 반복적이며
실제 유저에게 가치를 전달하기 힘든 부분을 가능한 자동화하여
개발자들이 유저 가치 전달에 집중할 수 있게 해주는
하나의 도구로서는 훌륭하다고 할 수 있다.
다만, 이것이 곧바로 현재 운용되고 있는
훌륭한 상용 서비스 수준의 제품을 개발 할 수 있다는 것을 의미하지는 않는다.
실(實): 개발자의 실제 역할
이에 따라 좋은 개발자의 기준 또한 변화하고 있다고 볼 수 있다.
'코드'를 빨리 작성하는 것은 이미 생성형 AI가 빠르기 때문에
현재 시점에서는 AI에게 위임하는 것이 합리적인 선택이 되는 경우가 많다.
그 대신 크게는 전체적인 디렉토리 구성과 같은 디자인 부터
작게는 컴포넌트/함수/클래스 등의 구성까지,
즉, 프로그램 아키텍처를 구성할 것인지에 대한 '선택'과
현재 존재하는 시스템/프로그램 구성 뿐만 아니라
운용비용, 가용할 수 있는 인원 등의
현실적인 제약 조건에 따른 어떤 트레이드오프를 감수 할 것인가에 대한
'판단'할 수 있는지가 중요한 시점이 되었다고 개인적으로 생각하고 있다.
이를 한 단어로 정리하면 ‘판단력’이라고 볼 수 있다.
이는 내가 블로그의 다른 글에서도 특정 직업이 사라지는 것이
아닌 일부 역할이 사라짐으로서 시프트가 일어난다 것과
판단력이 중요하다고 자주 언급하고 있는 부분이기도 하다.
위의 요소들은 코딩 자체보다 중요함에도 불구하고,
잘 고려되지 않았던 이유는
우선 순위상 유저가 기능을 사용할 수 있게 빨리 코드를 작성해서 제공해야 하기 때문이다.
이제 비지니스성에 이어서 지속가능성에 대한 이야기를 이어서 해보자.
사실, 지속가능성은 어떻게 엔지니어링 되어 있는지에 달려 있다.
그리고 지속가능성은 시스템 아키텍처에 달려 있고
이 아키텍처는 이 세상에서 가장 좋고, 빠른 기술이나 제품을 사용해서 구성하는 것이 아닌,
적절한 운용 코스트로 운영이 가능한지가 그 무엇보다 중요하다.
매출과 운용 코스트가 비슷하다면 비즈니스성을 의심해볼 필요가 있고,
높다면 제품이 지속가능할 수 없음은 너무나도 자명하다.
프로그래밍 영역에 가까울 수록 확장성이 중요시 된다.
확장성이 부족하면 부족할 수록, 부채가 계속해서 쌓이기 때문이다.
실제로 내가 현재 소속되어 있는 회사에서
실제 유저가 자주 사용하고 있는 페이지가 있는데
이 시점에 회사에서는 제대로된 프론트 앤드 개발자가 없다는
현실적인 제약에 의해 백엔드 개발자가 일부 프론트 업무를 담당하는 바람에
확장성을 고려한 디자인이 되어 있지 않아
결국 현재 시점에서는 기능 하나 추가하는데에 꽤나 많은 비용이 들어가고 있는 상황이다.
즉, 대규모 리펙토링이나 재개발이 필요한 시점에 들어선것 이다.
하지만, 일반적으로 회사는 매출에 직접적인 영향을 주지 않는
대규모 리팩토링이나 재개발 작업을 쉽게 결정하지 못하기 때문에
대부분의 부채가 쌓여 있는 솔루션들은 몇 가지 폭탄을 달고 운용할 수 밖에 없는 상황에 빠져버리고 만다.
특히, 현재 회사는 코어 제품이 어느정도 자리를 잡아,
새로운 솔루션을 만들고 검토하고 있는
현재 내가 소속되어 있는 회사라면 더더욱 우선순위에서 밀려
대규모 리펙토링 작업을 하기는 매우 힘들것이라 판단된다.
이 처럼 어느 지점이 되면 리펙토링 비용이 터무니 없이 증가되는 순간
결국 새로 만드는 것이 더 좋은 상황이 되어버린다.
이미 시중의 많은 솔루션들이 이와 유사한 상황에 직면해 있을 것이다.
많은 개발자들이 이런 제약적인 상황에서 기능 개발을 하고 있다.
이러한 많은 현실적인 상황을 고려해서 사실상 경험이 전무한 비엔지니어가
단순히 생성형 AI를 이용해 기능 개발을 할 수 있을까?
우리가 필요한 것은 아키텍처의 확장성과 지속 가능성(품질)이 좋은 기능이지
단순히 움직이는 거적떼기가 필요한 것이 아니다.
생성형 AI의 현실적 한계
생성형 AI는 프로그래밍의 영역을 대신해주고 있기 때문에
좀 더 프로그래밍의 이야기를 해보자.
위에서 언급한 일반적인 인식과 다르게
비즈니스성이 있고 지속가능한 제품을 생성형 AI로 개발하기 위해서는
역설적이게도 오히려 더 탄탄한 프로그래밍 지식이 필요하다.
좀 더 정확히 말하면, 이러한 지식을 기반으로 한 ‘직관’이 필요하다.
모든 프로그래밍 언어에 대한 지식을 습득하는건은 불가능하기 때문에
많은 경우 '직관'에 의한 판단이 이루어져야만 한다.
그리고 이를 위한 적정 수준의 프로그래밍 지식과 경험은 필요하다고 볼 수 있다.
'직관'이 없다면 코드의 타당성을 '판단'할 수 없기 때문에
생산성 향상을 기대하기 어렵고, 경우에 따라서는 오히려 하락할 수도 있다.
적어도 내 경험상 생성형 AI는
확장성을 고려해 스스로 추론하며 코드를 작성해주지는 않는다.
이용자가 끊임 없이 이를 지적해주어야하고,
현재 시스템에 맞게 일관성있게 작성해주는지, 이 코드가 현재 시스템에 적합한지,
확장성은 충분한지에 대해서는 이용자인 개발자가 판단 및 검토 해야하기 때문에
이용하는 개발자의 수준과 판단력에 따라 증가할 수 있는 생산성이 차이가 있고, 심지어 하락할 수도 있다.
결국 생성형 AI는 생각보다 모든 사람에게 동일한 가치를 제공하지 않는다고 볼 수 있다.
어느 분야던 간에 직관을 가지고 있지 않는다면 그만큼 리스크가 증가할 수 있다.
또한 기본적으로 데이터를 모델이 기억하는 것은 모델이 데이터를 학습할 때 뿐이며,
이용자가 질문한 데이터는 곧바로 리얼타임으로 모델에 반영되지 않는다.
기술의 특성상 유저가 입력한 데이터는 수학적 모델에 맞게 재가공되어야 하며,
데이터가 많아질수록 처리에 더 많은 시간이 필요하기 때문이다.
이는 데이터의 양에 따라 더 많은 연산 자원(대체적으로 GPU)과
전력이 필요함을 의미하며, 이는 운용 비용 증대를 야기 한다.
현재 실리콘벨리에서 펼처지는 전력 이슈는 괜히 나오는 이야기가 아닌 셈이다.
극적으로 성능을 향상 시킬 모델이 연구 될 것을 기다리는 것 보다
지금 보다도 더 많은 연산 자원과 이를 운용/냉각 할 전기를 구하는 것이
예측가능하고 산출 가능하며 더 빠르다고 생각한게 아닌가 싶다.
나는 AI 쪽 필드에서 일하고 있고 있지 않기 때문에 정확한 상황은 알 수 없으나,
아마 모델 튜닝으로만 으로는 AI쪽 필드에서 빠르게 도달할 것 이라고
강력하게 어필하고 있는 AGI 수준의 생성형 AI를 만드는 것은 아무래도 한계가 있다고
판단한게 아닐까 개인적으로는 생각하고 있다.
또한 기본적으로 세션 기반에 가깝기 때문에,
세션을 끊어내거나 벗어 날 경우, 모든 기억을 잃어버린다.
게다가 질문과 응답이 쌓이면 쌓일 수록
읽기/처리 속도가 매우 느려지기 때문에 여러 제약이 동시에 발생한다.
(세션 특성상 사용하고 있는 PC스펙에 따라 다를 수 있다)
그렇기 때문에 복잡한 작업이 필요한 경우,
조건과 그에 따른 내용이 적혀있는 프롬프트를 작성해야만하는 것이고,
작성해준 코드가 많아지면 많아 질 수록 요구대로 작성했는지 눈으로 확인해야만 한다.
당연하게도 대다수는 무리 없이 동작하는듯 보이나,
품질적인 측면에서 아쉬운 경우도 적지 않다.
이 경우 프롬프트에 구멍이 있거나, 정확한 명령을 내리지 않은 경우가 많다.
물론, 생성형 AI를 API로 제공하는 업체측에서
비용 문제로 일부 성능을 제약할 가능성 또한 충분히 있다.
가능한 많은 파라메터를 생성형 AI로 전달해야만,
정확성이 좋아지지만, 그만큼 계산 비용도 증가하기 때문이다.
이러한 인식하에서, 결과물이 정말로 스스로 생각한 결과물이 나왔는지,
문제가 없는지 판단할 수 있는 판단력이 필요하다.
당연하게도 이를 고려할 수 없는
충분한 경험과 이에 따른 사고를 할 수 없다면
비지니스성이 충분하고, 지속가능한 제품을 개발하는 것은 현실적으로 쉽지 않다.
이 판단력에 대한 필수 조건으로
당연하게도 프로그래밍과 실제 업무에서 나타날 수 있는
인시던트, 디자인 실패 등에 대한
많은 경험 없다면 좋은 판단을 내리기가 매우 힘들다.
이러한 상황에서 과연 ‘빠른 제품 개발’에
어느 정도 가치가 있는지에 대해서는 다시 한번 생각해볼 법 하다.
매우 안타깝게도 단순한 기능 제공으로
좋은 멀티플을 받아내는 시대는 아이폰이 등장한 10년전에 이미 끝이 났다.
개발자는 사라질까?
그렇기 때문에 현재 상황에서 바이브 코딩에 대한
일반적인 인식은 꽤나 고평가되어 있다고 볼 수 있다.
AGI가 스스로 추론하고 타당성을 증명할 수 있는 수준에 이르지 않는 한,
개발자는 사라지기보다는 기존 업무의 일부에서 벗어날 가능성이 크다.
분야나 업무에 따라 다를 수는 있겠으나
업계에서 일하고 있는 나의 동료들이라면
개발자의 업무가 '프로그래밍'으로 한정되지도 않고,
오히려 좋은 제품이나 기능을 개발하기 위해서는
가능한 프로그래밍에 시간을 줄이고
그 외에 것에 시간을 투자하는 것이 좋다는 것은 충분히 공감하고 있으리라 생각 한다.
따라서, 생산형 AI에 의해 향상된 생산성을 바탕으로 더 많은 일을 하거나,
이전에는 시간 제약으로 하지 못했던 중요한 업무에 더 많은 시간을 사용할 뿐이다.
과거 개발과 품질에 시간을 할당할 수 밖에 없었던 것이
생산성 향상을 통해 디자인과 유저 경험에도 시간을 사용할 수 있게 된 것 처럼 말이다.
물론 지금 미국에서 진행되고 있는 수 많은 데이터 센터의 건설을 통해,
무한에 가까운 AI 칩들과 전기를 쏟아붓는다면, 어쩌면 AGI에 도달 할수 있을지도 모르겠으나
개인적으로는 아직 현실성이 낮아 보이며,
여러 부분에서 불확실성이 크다.
AI 칩들을 만들 자원과 시간,
그리고 이를 가동하고 냉각할 전기는 어디서 끌어온다는 말인가?
이 경우 막대한 유지 비용이 들 것으로 예상되는데
비즈니스적으로 성립할 수 있을지는 의문이다.
그렇다면, 왜 현재 이런 종말론이 가십거리로 계속해서 이야기되어지는 것 일까?
불과 5년전으로 시간을 잠시 되돌려보면, 이에 대한 힌트를 얻을 수 있다.
코로나라는 큰 파도가 우리에게 어떤 것을 강제하게 했는지 말이다.
코로나라는 특수성에 의해, 대면 접촉이 불가능해지자,
빠르게 변화하기 힘든 사회적인/문화적인 저항에 의해
DX가 이루어지지 않은 부분이 순식간에 바뀌면서
솔루션을 개발하기 위해 개발자의 수요가 폭팔적으로 증가되고
개발자의 몸 값이 치솟아 오르게 되었다.
기존 개발자는 물론이고, 아직 업계에서 실무적인 경험이 없는 사람들에게도
파격적인 제안을 하던 시대이다.
이러한 상황에서 모두 다 '프로그래밍이 미래다'라고 말하며,
특히 한국에서 '코딩 교육' 열풍이 분 것이 고작 5년 전이다.
2000년대 초반과 다르게 사회가 변하는 속도가 말도 안되게 빨라졌다.
이러한 상황에서
미래를 단정적으로 예측하려는 시도에 대한 대가는
종종 이렇게 크게 되돌아온다.
미래는 예측할 수 없다.
현재라는 제약조건 하에서 '관측'해보는 것 뿐 이다.
개인적으로는 현재 AI에 관한 이슈와 가십 또한 지금 상황과 크게 다르지 않다고 생각 한다.
지나치게 비관적이거나,
혹은 지나치게 확신에 찬 낙관이 공존하는 상황이다.
현재 미국에서 이루어지고 있는 대량 해고와
신규 채용이 다소 소극적인 이유를 개발자 관점에서 보면,
첫 번째는 코로나 시절의 과도한 채용과 임금 상승에 대한 인원 조정이고,
두 번째는 생성형 AI로 인한 기존 인원들의 생산성 향상이다.
첫 번째 이유는 수요 예측 실패로 인한 과도한 채용과,
과도하게 상승한 인건비를 감당하기 어려워졌기 때문이다.
미국은 다른 국가들에 비해 채용과 해고가 비교적 유연하기 때문에
이 현상이 더 크게 보이는 측면도 있다.
두 번째 이유의 경우는 당연하게도
생성형 AI의 발전이 이렇게 빠르게 이루어지지라고 그 누구도 예상 하지 못했기 때문이다.
지금 시점에서 보면,
첫 번째, 수요 예측 실패로 인한 과도한 채용과 임금 상승에 대한 조정과
두 번째, 생성형 AI 사용으로 인한 기존 인원의 생산성 향상이라는
두 가지 요인이 동시에 작용하며 시너지를 발생시키고 있다고 볼 수 있다.
즉, 단순히 생성형 AI 때문에 개발자가 종말한다는 해석은
지나치게 비관적인 관점이라고 생각한다.
어느 정도 인력 규모가 다시 균형을 찾고,
더 높은 생산성이 요구되는 시점이 온다면
채용은 다시 시작될 것이다.
그 사이에 AGI가 개발되지 않는다면 말이다.
요지는 단순히 생성형 AI 하나로만 '개발자의 종말'이라는 결론을 내리기는 어렵다는 점이다.
판단은 각자의 몫으로 남기고 싶다.
결론
따라서 개발자들이 취해야 할 행동은 두 가지라고 생각한다.
개발자가 사라질지도 모른다는 공포에 머무르는 것이 아니라
새로운 생성형 AI라는 도구를 이용해
기존 반복 작업들을 어떻게 간단하게 처리할 것인가에 대한 생각을 하는 것과 동시에,
원래였다면 코딩보다 더 중요했지만, 비지니스 특성상 기능을 먼저 제공하는게 우선이 됨으로써
뒷전으로 미룰 수 밖에 없었던, 전체적인 아키텍처를 고려한 디자인과
현실적인 제약 속에서 어떻게 트레이드오프를 판단할 수 있는 능력을 계속해서 키워가는 일이다.
도구가 바뀌었다면 업무 방식 또한 변하는 것이 자연스럽다.
모두가 우려하는 것과는 다르게,
이는 단순한 변화가 아니라 개발자에게는 하나의 기회라고 볼 수 있다.
회사는 직원의 생산력을 증대시켜 더 많은 매출을 올리고 싶기 때문에
비용을 들여서라도 생성형 AI를 사용하게끔 유도하고 있기 때문이다.
기존 개발자들은 이를 기회로 삼아 회사의 리소스를 활용해
여러 가지 시도를 해보며, 어떻게 사용해야만 자신의 생산성을 증대시킬 수 있는지를
여러 방면에서 시행착오를 겪어볼 수 있는 기회이다.
즉, 사용하는 도구가 바뀌었을 뿐이며,
기존과 동일하게 문제해결능력을 증대하는 것에 집중하면 된다.
적어도 스스로 추론하는 AGI가 현실화되기 전까지는 말이다.
이러한 상황에서 수 많은 사람들에 의해 가십거리로 이야기 되어지고 있는
‘언젠가는 대체된다’는 말을 저 멀리 구석에 밀어 넣자.
그 '언제'가 정확히 언제인지 알 수 없는 이상
기존 커리어의 방향을 틀어버리는 것은 너무나도 리스크가 크다.
물론 어떤 선택을 하던 간에 이는 개인의 몫일 것 이다.
더 넓게 보자면, 생성형 AI는 우리에게 범용적으로 활용 가능하고
더 좋고 날카로운 도구가 생겼을 뿐이며,
어떤 상황에 따라 어떻게 다루어야만 하는 판단력이 가장 중요한 시점이 현재의 상황이다.
물론 위에서 말한 스스로 추론하고 타당한지를 증명할 수 있는 AGI가 등장하게 된다면
다시 한번 정의할 필요는 분명히 있다.
하지만, 그 언제인가가 알 수 없는 불확실한 상황에서
특정 직업이 종말한다는 지나치게 비관적인 관점이나
이제 곧 AGI가 개발되어, 인류가 더 이상 일을 할 필요가 없고
인류는 일정 수준의 돈을 받으며 유유자적하게 생활할 수 있을 것이라는 생각 역시
다소 과도한 낙관일 수 있다.
실리콘밸리의 CEO들과 일부 관련 개발자들이 대중 앞에서
이러한 이야기를 다소 과격하게 하는 것은,
그 내용의 사실 여부와는 별개로
자신들의 회사 가치를 높이고 더 많은 투자를 유치하기 위한
역할을 수행하고 있는 것에 가깝다고 볼 수 있다.
스스로의 인생을 어떻게 주사위 던지기에 맞길 수 있겠는가?
스스로의 인생은 스스로 구가했을 때야 비로소 삶의 가치가 있다고 생각하는
나에게 있어서는 둘다 썩내키지 않는다.
불확실한 미래에서 중요한 점은
타인이 내놓은 전망을 그대로 믿는 것이 아니라,
지나친 비관과 낙관을 모두 경계하며
내 스스로 방향을 정하고, 스스로를 믿고,
한 걸음씩 앞으로 나아가는 것이라고 생각한다.
게다가 마치 우리의 인생이 지금에 와서야 불확실해진 것처럼 이야기되곤 하지만,
사실 우리의 인생은 언제나 불확실했다.
개인적으로는 인류가 단순 노동에 벗어날 뿐이고,
중요하지만 시간상 할 수 없었던 높은 순위의 일들을 인간이 할 뿐이라고 생각하고 있다.
내일 세상이 멸망한다고 해도 나는 한그루의 나무를 심겠다는 말은
이러한 상황에서 우리가 무엇을 해야만 하는지를
가장 잘 나타내는 격언이 아닐까 나는 생각하고 있다.
