저는 코드를 쓸 줄 몰라요. 여섯 달이 지나고 5,000번이 넘는 변경을 거친 지금도 여전히 못 써요. 제가 할 수 있었던 건 거의 매일 밤 자리에 앉아, 존재했으면 하는 세계를 제가 아는 한 가장 정확하게 설명하는 것뿐이었어요. 나머지는 Claude Code라는 AI 도구가 해냈고요. 그 세계는 이제 BeMatrx라고 불려요. 90개 도시, 선거, 돌아가는 경제, 12개 언어. 전부 합쳐 약 1,100달러와 제 저녁 시간 대부분이 들었어요. 지금부터 그 일이 어떻게 일어났는지 솔직한 버전으로 이야기할게요. 모든 게 무너졌던 그날 밤까지 포함해서요.
이 이야기를 하는 사람
제 이름은 세즈긴이에요. 안탈리아(튀르키예)에 살아요. 작년까지 터미널을 열어 본 적도, 컴퓨터 과학 수업을 들어 본 적도 없었고, "리포지토리"가 은행이랑 관련된 말인 줄 진심으로 믿었어요. 귀엽게 보이려고 하는 말이 아니에요. 이게 출발선이고, 출발선이 곧 이 글의 핵심이거든요. 아래에 나오는 모든 일은 제가 프로그래밍을 배우지 않은 채로 일어났으니까요.
다만 한 가지, 늘 잘했지만 한 번도 기술이라고 생각해 본 적 없는 게 있긴 했어요. 뭔가를 헷갈릴 여지가 없어질 때까지 설명하는 것. 어른의 일하는 삶이란 게 대부분 그렇잖아요. 완성이 어떤 모습인지 설명하고, 결과물이 돌아오면 부족한 지점을 짚고, 다시 내보내고. 그게 소프트웨어를 만드는 일의 대부분이기도 하다는 건 아무도 말해 주지 않았어요. 알고 보니 제게 없던 건 타이핑뿐이었죠.
떨쳐지지 않던 질문
아이디어는 도무지 내려놓을 수 없는 질문 하나로 찾아왔어요. 들인 시간이 뒤에 뭔가를 남긴다면, 앱은 어떤 느낌일까? 실제로 앞으로 나아가는 커리어. 둘 다 계속 나타나 주기 때문에 깊어지는 우정. 지구 반대편에 있는데 천천히 내 것이 되어 가는 도시. 밤에 화면을 닫으면서 그날 저녁의 결과물이 손에 남아 있었으면 했어요. 정말 그 이상으로 복잡한 이야기가 아니었어요.
팀도 없었고, 스타트업이라고 부를 만한 예산도 없었고, 그걸 직접 만들 방법은 더더욱 없었어요. 있었던 건 수상할 만큼 선명한 그림 하나, 그리고 어려운 부분은 사실 그 그림이라는, 점점 커져 가는 직감이었죠.
Claude Code를 만나다
친구가 Claude Code 이야기를 거의 잡담처럼 꺼냈어요. Anthropic의 코딩 에이전트인데, 사람들이 말을 걸면 뭔가를 만들어 준다고요. 과장이겠거니 했어요. "AI"가 들어간 문장은 대부분 그러니까요. 그러다 어느 날 밤 열어 봤어요. 디자이너에게 설명하듯 환영 화면 하나를 설명했더니, 눈앞에 나타나더라고요. 작동하는 채로요. 그러고는 자기가 뭘 했는지 평범한 문장으로 설명해 줬어요. 방금 마감한 방을 안내하는 시공 기사님처럼요.
여섯 달을 겪고도 여전히 놀라운 점이 두 가지 있어요. 첫째, 단 한 번도 저를 바보처럼 느끼게 만들지 않았어요. 데이터베이스가 뭔지 물었어요. 데이터가 물리적으로 어디에 사는지도 물었고요. 새벽 두 시에는 파일을 지우면 위험하냐고 물었어요. 매번 한숨 대신 곧은 답이 돌아왔죠. 둘째가 더 중요한데, 이 도구는 반박을 해요. 3주 뒤에 세계를 조용히 망가뜨렸을 뭔가를 요청했을 때, 그렇게 된다고 말해 줬어요. 제가 따라갈 수 있는 말로 이유까지 설명하면서요. 이보다 훨씬 적은 솔직함에 훨씬 많은 돈을 컨설턴트에게 내 본 사람으로서 하는 말이에요.
하룻밤은 실제로 이런 모습이었어요
루틴은 "코딩을 배운 다음 만든다"가 아니었어요. 설명하고, 보고, 고치고, 반복하는 거였죠. 부엌 식탁, 식어 가는 차, 실물에서 테스트하려고 그릇에 기대어 세워 둔 휴대폰. 초창기의 대화 하나를 거의 그대로 옮겨 볼게요.
나: 도시 지도를 열면 페이지가 로딩되는 느낌이 아니라 어딘가에 도착하는 느낌이었으면 해요. 뭔가 나타나기 전에 숨 한 번 쉴 틈을 주세요.
Claude Code: 만들어 낸 다음, 무엇이 왜 바뀌었는지 쉬운 말로 설명한다.
나: 가까워졌어요. 그런데 느린 연결에서는 그 멈춤이 먹통처럼 읽힐 거예요. 살아 있다는 신호를 바로 조금 보여 주고, 미루는 건 마지막 공개 장면만 미뤄 주세요.
몇 달 뒤에는 대화도 세계와 함께 자라 있었어요. 선거가 태어난 과정은 대략 이랬어요.
나: 도시가 시장을 뽑을 수 있으면 좋겠어요. 진짜 투표, 진짜 임기, 그리고 임기가 끝난 뒤에도 간직하는 진짜 직함으로요.
Claude Code: 작동 방식을 제안하고, 두 번 투표하는 뻔한 꼼수부터 막은 다음, 내가 답을 갖고 있지 않은 질문 세 개를 던진다. 떨어진 후보들은 어떻게 되는지, 아무도 출마하지 않으면 어떻게 되는지, 임기는 얼마나 길어야 하는지.
두 번째 대화를 다시 읽어 보세요. 도구가 제 제품에 대해 저보다 나은 제품 질문을 던지고 있었어요. 이런 일이 계속 반복되다 보니 어느 순간 놀라기를 그만두고 아예 기대하기 시작했어요. 아홉 시에 제가 뭘 들고 오든, 열 시의 대화는 그걸 더 날카롭게 다듬어 놨거든요.
그리고 아니요, 저는 코드를 읽지 않았어요. 단 한 번도, 정말로요. 결과를 읽고, 동작을 두고 입씨름하고, 다음으로 넘어갔어요. 사람들이 이 이야기에서 제일 못 믿는 부분이 이건데, 동시에 이 글에서 가장 참인 문장이기도 해요.
모든 게 무너진 밤
아직도 생각나는 밤이 있어요. 한 시간 전 제 휴대폰에서는 완벽하게 돌아가던 업데이트가 친구 휴대폰에서는 열리기를 거부했어요. 도시가 있어야 할 자리에 하얀 화면만 떠 있었죠. 스택 트레이스가 뭔지 몰랐어요. 이 문제를 뭐라고 불러야 하는지조차 몰랐고요. 그래서 제가 할 줄 아는 유일한 일을 했어요. 모든 게 여기에 달린 것처럼 증상을 설명하는 것. 뭘 눌렀는지. 뭘 기대했는지. 대신 뭘 봤는지. 어떤 휴대폰에서, 몇 시에, 그날 무엇이 바뀌었는지.
그걸로 충분했어요. 운이 좋아서가 아니에요. 증상을 정확하게 설명하는 건 진짜 기술이고, 평범한 일하는 삶에서 소프트웨어 만들기로 고스란히 옮겨 오는 기술이라서예요. 오븐이 왜 죽었는지 몰라도, 다이얼을 돌리면 정확히 무슨 일이 벌어지는지는 말할 수 있잖아요. 우리는 원인을 찾았고, 고쳤고, 저는 프로젝트의 남은 시간을 결정지은 규칙 하나를 얻어서 돌아왔어요. 기계 장치를 이해할 필요는 없다. 무엇이 잘못됐고 "고쳐진 상태"가 어떤 모습인지에 대해서만 집요하면 된다.
처음으로 진짜라고 느낀 순간
이걸 정말로 믿게 된 순간은 론칭도 이정표도 아니었어요. 훨씬 작은 거였죠. 한 번도 만난 적 없는 누군가가 앱을 열고, 가 본 적 없는 도시를 고르고, 거기 사는 낯선 사람에게 첫 메시지를 보냈어요. 그 장면을 실시간으로 지켜봤고, 발밑이 살짝 흔들리는 걸 느꼈어요. 이건 더 이상 제 앱이 아니었어요. 하나의 장소였고, 방금 누군가 이사를 들어온 거였죠.
얼마가 들었나
다들 숫자를 궁금해하니까 말씀드릴게요. 여섯 달 동안 약 1,100달러예요. 대략 절반이 Claude Code 자체에 들어갔는데, 솔직히 첫 주에 이미 비싸다는 느낌이 사라졌어요. 외주 개발팀의 딱 일주일 치 비용과 비교해 본 순간쯤에요. 나머지는 세계가 자라는 만큼 같이 자란 클라우드 호스팅과 데이터베이스, 엔지니어 마흔 명이 만들든 부엌 식탁의 고집 센 남자 혼자 만들든 모든 앱이 내야 하는 Apple과 Google 개발자 계정, 그리고 앱 만드는 데 "진짜" 얼마 드느냐고 물을 때 아무도 세지 않는 도메인, 이메일, 자잘한 것들 한 무더기였어요.
공짜는 아니에요. 아무것도 아닌 액수도 아니고요. 하지만 일 년 전의 저라면, 제가 만들고 싶은 건 도저히 감당할 수 없는 팀이 필요한 일이라고 아주 자신 있게 말했을 거예요.
커피 한잔 하면서라면
아마 결국 뭘 배웠느냐고 물으시겠죠. 슬라이드 발표처럼 말고, 테이블 건너편에서 답하듯 말해 볼게요.
제품에 대해 생각하는 데 코드를 읽을 필요는 없어요. 뭘 원하는지 정확히 알고 왜인지 말할 수 있으면 되는데, 그 능력은 애초에 컴퓨터 과학 학위 뒤에 잠겨 있던 적이 없어요. 정확함은 어휘를 이겨요. 매번요. 버그의 올바른 기술 용어가 필요했던 적은 한 번도 없었어요. 무슨 일이 일어났는지에 대한 올바른 설명만 있으면 됐죠. 추진력은 완벽을 이기고요. 조금 어긋난 채로 세상에 나간 작은 버전이, 존재하지 않는 흠 없는 버전보다 훨씬 많이 가르쳐 주니까요. 그리고 어려운 부분은 한 번도 도구가 아니었어요. 거절하는 일이었어요. 제가 거절한 기능 하나하나가, 남긴 기능들을 버튼 메뉴가 아니라 장소처럼 느껴지게 만들었거든요.
네 달째쯤, 제가 "해 보고 있는 것"이라는 말을 그만두고 "짓고 있는 세계"라고 말하기 시작했다는 걸 알아챘어요. 여섯 달은, 뭔가를 실험이라고 부르기를 멈추기에 딱 알맞은 시간이더라고요.
특정한 독자를 위해 하나만 더요. Anthropic의 누군가가 언젠가 이 글을 읽는다면, 여러분의 로그 어딘가에 새벽 두 시에 파일 하나를 지워도 위험하지 않은지 묻는 남자가 있어요. 그에게 다정하게 답해 주는 도구를 만들어 주셔서, 그리고 "코딩을 못해요"를 문장의 끝이 아니라 시작으로 만들어 주셔서 고마워요.
처음 오셨다면
BeMatrx는 피드가 아니라 살아 있는 세계예요. 무엇을 볼지 정하는 알고리즘은 없고, 그건 실수가 아니라 결정이었어요. 도시를 고르고, 커리어를 고르고, 나의 어떤 버전을 골라서, 진짜 사람들과 함께 선택한 삶을 살아요. 문은 천천히 열리는 중이고, 이걸 짓는 일이 실제로 어떤지에 대한 진실은 앞으로도 이 블로그에 계속 적어 나갈게요.