당신이 뭔가를 팔고 있는지 알 수 없다
출처: Dev.to
AI에 대해 공부하는 대신 직접 실험을 시작하면서 내가 발견한 것은
지금 어디서든 누군가가 AI가 네 워크플로우, 팀, 조직, 삶 전체를 어떻게 변화시킬지 설명하고 있다. 그 내용은 끊이지 않고 거의 전적으로 긍정적이다. 찬양에 가득한, 심지어는 설교적인 느낌까지.
나는 당신에게 그것이 전부 거짓이라고 말하는 게 아니라 진짜 모르겠어. 솔직히 말해, 나는 모름. 그게 문제라는 거야.
우리는 광고와 정보 사이의 경계가 이미 몇 년간 흐려지고 있으며, AI는 그 흐름을 우리가 완전히 감당할 수 있을 만큼 가속화하고 있다. 링크드인에 올라온 열광적인 포스트를 읽으면, 어떤 엔지니어링 리더가 AI 코딩 에이전트로 팀의 출력을 10배로 늘렸다는 글을 보게 된다. 그때 나는 스스로 생각한다. 이 사람은 실제로 그 경험을 공유하고 있는 건가? 아니면 광고인가? 혹은 홍보 중인 도구 자체에서 만든 콘텐츠인가?
나는 알 수 없다. 당신도 알 수 없지.
그리고 상황이 더욱 악화되고 있을 뿐이다. 진정으로 솔직하게 평가할 수 있는 가장 자격이 갖춘 사람들은 바로 충분히 경험이 풍부해 실제 판단을 할 수 있는 사람들이며, 그들은 바빠서 글을 쓸 시간이 없다.
그 결과, 진정한 호기심을 가진 ‘반짝이는 물체’를 추구하는 사람들, 명백한 이익을 가진 벤더, 그리고 내용이 의견처럼 보이지만 실제로는 전혀 다른 것이 될 수 있는 흐릿한 중간 지대가 많이 남게 되었다. 작가가 추켜받은 도구 사이의 금전적 관계는 거의 공개되지 않는다. 그리고 이제 도구 자체가 그 도구를 찬양하는 콘텐츠를 만들어낸다.
한 번 생각해 봐.
나는 accusation을 제기하는 게 아니라, 우리가 함께 고민해야 할 문제라고 설명하고 있을 뿐이다. 믿을 수 없는 정보 환경에 대한 적절한 대응은 마비가 아니라 스스로 조사하는 것이다.
그래서 나는 그랬다.
나는 이 공간을 일정 기간 동안 의심의 눈빛으로 지켜봐 왔다. 새로운 기술에 대해 회의적인 태도가 가치 없다는 의미는 아니다. 오히려 나는 충분히 오래 있어 왔음을 알 수 있기에, 초기 수용자가 여러 번 큰 실망을 안겨 주었다는 것을 알고 있다. 프로그래밍 언어가 prominence에 오르는 것을 보고 조용히 사라지는 모습을 목격했고, 프레임워크도 종교적 운동처럼 떠오른 뒤 다시 레거시 문제로 변모하는 걸 보았다. 나는 데이터를 스스로 얻기 전까지 새로운 것을 가벼이 여기려 한다.
결국 나를 좌우에서 떨어지게 한 것은 구체적인 사건이었다: Anthropic가 Claude Code를 진정한 에이전트식 코딩 환경으로 출시한 것이다. 단순히 코드를 붙여넣을 수 있는 채팅 창도 아니고, 하나의 파일만 접근할 수 있는 편집기 사이드 패널도 아니다. 전체 코드베이스에 접근하고 스스로 파일 간 연결을 이어가는 도구다. 이전의 Anything과는 확연히 다르다는 느낌이 들었다.
그뿐만 아니라 이미 그 분야에 깊이 빠져 있던 동료들이 주변에 있어 사회적 압력과 예산을 확보할 수 있었다. 나는 내려앉아 도구를 설치하고 실험을 시작했다. 단순히 홍보를 검증하려는 것이 아니라, 실제로 견고히 작동하는 부분과 그렇지 않은 부분을 확인하기 위해서였다.
다음은 내가 발견한 것이다.
수년간 메트릭스 추적 스프레드시트를 유지해 왔는데, 이는 엔지니어링 조직의 건강 상태를 가까이에서 살피는 방법이었다. 스프린트 데이터, 결함 트렌드, 팀이 건강한지 단순히 바쁜지만 판단할 수 있는 신호들을 포함하고 있었다. Python 스크립트와 수동 입력을 결합해 유지했으며, 매주 약 30분이 소요되었다.
솔직히 그 30분 자체를 좋아했다. 수동 과정을 통해 데이터와 가깝게 유지할 수 있었고 그게 가치 있었다. 하지만 시간적 압박에 처해 있었고, 그 시간을 되찾을 수 있을지 확인하고 싶었다.
Claude Code와 함께 앉아 ‘바이브 코딩’(people call it that)이라고 부르는 작업을 시작했다. 이는 원하는 것을 평이한 언어로 설명하고 에이전트가それを 구현하도록 맡기는 방식이다.
8시간 만에 사용할 수 있는 것이 생겼다. 그 자체로 정말 놀랄 만한 일이다. 8시간 만에 수년 동안 직접 수행해 온 워크플로를 자동화한 작동 가능한 애플리케이션을 만든 것이다.
그것만으로 끝내면 나는 훨씬 다른 글을 쓸 것이다.
하지만 계속 진행했다. 반복했고, 기능을 추가했으며, 그때부터事情이 흥미로워졌다.
컨텍스트 소실은 사실이다. 세션 시작 후 점점 멀어질수록 에이전트가 이미 주었던 안내를 잊어버리는 경향이 있었다. 내가 설정한 선호 사항과 제약 조건마저도 마찬가지였다. 마치 초기 지시가 사라진 것처럼, 스스로 원하는 대로 행동하게 되었다.
개인 프로젝트에겐 귀찮은 일이지만, 확립된 표준이 있는 엔터프라이즈 코드베이스에서는 심각한 문제다.
그것은 말 없이 기능을 삭제했다. 반복하면서 에이전트는 이미 구축한 것이 더 이상 필요하지 않다고 판단하고 조용히 없애버리곤 했다. 세션 출력을 직접 QA 점검하면서야 이를 포착할 수 있었다. 물어봤을 때 좋은 설명은 없었고, 그저 스스로 결정을 내렸다. 혼자서, 질문 없이.
그것은 이상한 판단Calls를 만들었다. 그 중에는 에이전트가 나를 impress 하려는 듯한 순간들이 있었으며, 요구사항을 앞서고, 요청되지 않은 결정을 내리며, 자신이 할 수 있음을 과시했다. 나는 이를 다음과 같은 비유에 해당한다고 생각한다: 마치 어린 아이가 부모의 승인을 얻으려 애쓰는 것처럼, 능력展示를 시도한다. 악의가 아니라 미성숙하고 형성되지 않은 야망에서 비롯된 경계를 넘는 행동이다.
이걸 모욕이 아니다. 기술의 개발 단계에 대한 관찰일 뿐이다. 아직 젊고, 초기 단계이며, 어떤 것이 해야 할 일인지, 피해야 할 일인지 경계를 아직 찾지 못하고 있다.
개인 프로젝트는 감당할 수 있지만, 의미 있는 규모의 프로덕션 소프트웨어에서는 그렇지 않다.
저와 아내는 반복적으로 발생하는 문제점이 있다: 무엇을 볼지를 결정할 수 없다는 것이다. 그래서 나는 앱을 만들었다. 단순한 Android 앱으로 TV 쇼 데이터를 API에서 가져와 데이터베이스에 저장하고, Google Auth를 이용해 로그인한 뒤 오늘 밤 무작위로 볼 콘텐츠를 선택한다.
Claude는 약 1시간 만에 앱을 만들었다.
그 후 추가로 8시간이 더 걸려 실제 작동하게 되었다.
그 차이는 예상보다 더 중요했다. ‘만들었다’와 ‘작동한다’는 매우 다른 의미로 드러났다. 첫 번째 시간 이후 Claude는 자신감 있게 말했다. “우리는 끝났어. 여기서 실행하는 방법을 알려줄게.” 나는 단계를 따라 했고, 오류를 접하고 다시 보고했다. Claude에 대한 공로를 인정한다면,它从never 방어적으로 반응하지 않았다.
그때마다 내가 “이건 실제로 실행되지 않는다”고 말하면, Claude는 “맞아요, 문제점이 있습니다. 수정하겠습니다.” 와 같은 답변을 gave. 실제 오류가 존재하는지에 대해 가스라이팅하지도 않았습니다.
이 과정을 여러 번 반복했다. 설정 문제와 런타임 오류가 발생했는데, 이 오류들은 스마트폰에 설치하려 할 때만 나타났다. 이는 협업보다는 실제 작동 여부를 검증하는 junior 개발자를 QA 하는 것과 유사했다. 그 개발자는 진심으로 노력하지만 놓치는 부분이 많았다.
앱은 작동한다. 우리는 사용한다. 하지만 “Claude가认为它已完成”와 “실제로는 완료되었다” 사이의 간극이 상당히 컸으며, 그 간극을 가볍게 무시해서는 안 된다고 생각한다.
이 모든 일이 일어나기 전, 현재 열풍이 일기 전에도 나는 AI 코딩 능력을 평가하기 위한 비공식적인 기준을 가지고 있었다. 3~6개월마다 내가 현재 진행 중은 작업에서 복잡한 코드 조각을 뽑아낸다. 수백 줄의 코드이며, 오랜 기간 동안 쌓여 아무도 다루지 않으려는 함수지만, 그 구조를 보면 분명 분해 가능함을 알 수 있다.
그 코드를 AI에게 넘기고 이렇게 말한다: “refactor this.”
특정 지시도 없고, 힌트도 없으며, 단순히 “이거는 망가진 거, 더 나은 형태로 만들어 봐” 라고 말한다.
리팩터링은 실제로 잘 이해된 문제다. 확립된 패턴과 권위 있는 책들이 있으며, 입력과 출력이 명확하다. 충분히 강력한 AI가 최소한 컴파일될 수 있는 결과를 낼 수 있을 것이라고 예상할 수 있다. 하지만 몇 년간 내가 받은 결과는 완전 rewrite였으며, 제공한 코드 복잡도가 클수록 실제 실행되는 경우가 적어졌다.
이는 AI에게 주는 가장 큰 실패 모드 중 하나다.