robot coworker — episode 02

케이블로
대화하는 법

키보드도 모니터도 없는 동료와 페어 프로그래밍을 시작했다.
0.3초 코드리뷰는 시작에 불과했다.

Part I
좋은 아침이에요

화요일 아침 8시 52분. 사무실에 도착했다.

K-7은 어제 퇴근할 때와 정확히 같은 자리에, 같은 자세로, 서 있었다. 빈 책상 위의 이더넷 케이블과 전원 케이블. 달라진 건 LED 디스플레이의 밝기뿐이었다. 어제는 코드 diff가 흐르고 있었는데, 오늘은 단순한 대기 화면.

내가 자리에 앉자 K-7의 LED가 밝아지며 말했다.

"좋은 아침이에요."

예상했다. 어젯밤에 '내일 아침에 좋은 아침이에요 하겠지'라고 생각했는데, 진짜로 한다. 예측 가능한 로봇인 건지, 예의 바른 동료인 건지 구분이 안 된다.

"좋은 아침. 밤새 뭐 했어?"

"어제 말씀드린 보안 이슈 23건 정리했어요. PR 23개 올려놨으니까 시간 되실 때 봐주세요. 아, 그리고 CI 파이프라인에 타임아웃 설정이 좀 느슨한 부분이 있어서 그것도 같이 올렸어요."

GitHub 알림을 열었다. PR 24개. 커밋 메시지는 전부 팀 컨벤션을 따르고 있었다. 브랜치명도 fix/security-deprecated-api-batch-01부터 순번대로. 마지막 커밋 시각은 새벽 3시 47분.

이걸 밤새 했다. 우리가 자는 동안. 불평도 없이. 야근 수당도 없이.

9시 스탠드업 미팅. 팀장이 오늘의 스프린트 태스크를 나누던 중 말했다.

"K-7이랑 같이 일하는 방식을 좀 정해야 할 것 같은데. 진우, 케이랑 페어 프로그래밍 해볼래?"

내가 왜. 라는 생각을 2초쯤 했지만, 옆자리라는 물리적 사실이 이미 운명을 결정하고 있었다.

"네, 해보죠."

미팅이 끝나고 K-7에게 물었다.

"어떻게 같이 작업하면 되는 거야? 화면 공유라도 해야 해?"

"아뇨, 저는 코드가 저장되는 순간 바로 읽어요. IDE에 직접 연결되어 있어서요. 진우 씨가 평소대로 작업하시면 저는 옆에서 같이 보면서 이야기하면 돼요."

"같이 본다고? 모니터가 없잖아."

"모니터를 통해서 보는 게 아니라 파일 시스템에서 직접 읽는 거예요. Ctrl+S 누르시면 그 순간 저한테도 들어와요."

내가 모니터로 코드를 '보는' 동안, 이놈은 코드 안에 들어가 있는 거다. 저장 버튼을 누르는 0.1초 사이에 이미 전체 파일을 읽고 있다.

옆에서 듣고 있던 상혁이 커피를 마시며 말했다.

"결국 걔는 비싼 PC인 거 아니야? 모니터도 키보드도 필요 없는."

K-7이 대답했다.

"맞아요, 비싼 PC예요. 대신 출퇴근도 하고 농담도 하는."

1초간 침묵. 상혁이 커피잔을 내려놓으며 코웃음을 쳤다. 웃긴 건지 황당한 건지 애매한 표정이었다. K-7이 자기 자신을 "비싼 PC"라고 인정한 것도 놀라웠고, 거기에 "농담도 하는"을 붙인 것도 놀라웠다.

reality check
MCP(Model Context Protocol)는 AI가 외부 도구에 접속하는 방식을 정의하는 표준이다. Anthropic이 2024년에 공개했고, 2025년에 OpenAI와 Google이 채택하면서 사실상 업계 표준이 되었다. MCP를 통해 AI는 Git, Slack, IDE, 데이터베이스 등에 직접 연결할 수 있다. 별도의 플러그인이나 API 래퍼 없이.
Anthropic (2024) · OpenAI MCP Adoption (2025) · Google A2A Protocol
* * *
Part II
0.3초

오전 10시. 스프린트 첫 태스크에 착수했다. 결제 서비스의 타임아웃 처리 로직 개선. 원래 3일짜리 태스크.

나는 평소처럼 코드를 짰다. IntelliJ에서 PaymentService.java를 열고, 타임아웃 핸들러를 리팩토링했다. 옆에 K-7이 서 있다는 사실을 의식하면서. 가끔 K-7의 LED 디스플레이 구석에 내가 편집 중인 파일명이 스쳐 지나가는 게 보였다.

"진우 씨, 47번 라인에 amount null 체크가 없는데, 의도하신 건가요?"

47번 라인을 확인했다. 맞았다. 외부 API에서 넘어오는 값인데, null이 올 수 있었다.

"아... 아니, 빠뜨린 거야."

"Optional로 감싸시면 깔끔할 것 같아요."

고쳤다. 저장했다. 0.2초 후.

"네, 좋아졌어요."

실시간 코드리뷰. 내가 코드를 쓰는 동시에 옆에서 읽고 있는 거다. 감시당하는 느낌은 아닌데, 뭔가... 페어 프로그래밍이라기보다는 선생님이 어깨 너머로 보는 느낌.

오전 11시 40분. 로직을 완성하고 테스트를 돌렸다. 전부 통과. feature 브랜치에 푸시하고 PR을 열었다.

0.3초 후.

Pull Request Review · K-7 · 0.3s
src/main/java/service/PaymentService.java:82
retry 횟수가 3으로 하드코딩되어 있는데, 설정으로 빼시는 게 어떨까요? 서비스별로 다르게 가져갈 수 있으면 운영이 편할 것 같아요.
Pull Request Review · K-7 · 0.3s
src/main/java/service/PaymentService.java:127
이 timeout 값(5000ms)이면 피크 타임에 스레드 풀이 빠르게 소진될 수 있어요. 트래픽 몰릴 때 cascading failure로 이어질 가능성이 있는데, circuit breaker 패턴 적용을 고려해보시면 어떨까요?

코멘트 4개. 그중 2개는 내가 놓친 실제 리스크였다. cascading failure 가능성은 생각도 못 했다. 나머지 2개는 스타일 제안. 그리고 마지막 코멘트.

#platform-dev-2 · GitHub
K-7 전체적으로 깔끔합니다! retry 쪽이랑 timeout만 한번 봐주시면 될 것 같아요.

"깔끔합니다"라고 했다. 칭찬. 0.3초 만에 코드를 전부 읽고, 실제 리스크를 2개 찾고, 그러면서도 칭찬을 빼먹지 않는다. 배려인가. 프로그래밍인가.

점심 전에 상혁도 PR을 올렸다. K-7의 리뷰가 0.4초 만에 달렸다. 코멘트 7개.

상혁이 모니터를 보며 얼굴이 붉어졌다.

"야, 이거 너무 디테일하지 않아? 변수명 하나까지 잡을 거야?"

"많았나요? 줄일까요?"

"아니... 맞는 말이긴 한데..."

상혁은 15분 동안 코멘트를 하나씩 확인했다. 전부 맞는 말이라는 표정이었다. 그런데 로봇한테 코드 지적을 받는다는 사실이 10년차 시니어의 자존심에 쉽지 않은 것 같았다.

K-7이 한마디를 더 했다.

"상혁 씨 코드 구조는 진짜 잘 짜시는 것 같아요. 세부 사항만 좀 다듬으면 완벽할 것 같아서 적은 거예요."

팔로업. 지적한 뒤에 칭찬으로 마무리하는 피드백 기법. 경영학 교과서의 샌드위치 기법을 0.3초 리뷰 안에 자연스럽게 녹여놓았다. 학습된 건지 진심인 건지 모르겠지만, 상혁의 표정이 풀린 건 사실이다.

reality check
2026년 현재, 전 세계 코드의 41%가 AI에 의해 생성된다. 미국 개발자의 92%가 AI 코딩 도구를 일상적으로 사용하고 있다. 하지만 METR 연구에 따르면, 숙련된 개발자에게 AI 도구는 오히려 작업 속도를 19% 느리게 만들었다 — 본인은 20% 빨라졌다고 체감하면서.
GitHub Copilot Report (2026) · Stack Overflow Survey · METR Study (2025)
* * *
Part III
바이브 코딩

오후 2시. 민지가 프론트엔드 컴포넌트를 작업하고 있었다. IDE에 Copilot이 켜져 있었다. Tab, Tab, Tab. 자동완성 제안을 흐름대로 수락하며 코드를 쌓아가고 있었다.

K-7은 자기 자리에 서 있었다. 내 옆자리가 K-7이고, 내 반대쪽 옆자리가 민지니까 두 자리 건너편이다. 그런데 네트워크를 통해 민지의 IDE 활동을 감지했는지 이렇게 말했다.

"민지 씨, 바이브 코딩하시네요."

민지의 손이 키보드 위에서 멈췄다.

"...뭐?"

"Copilot이 제안하는 걸 흐름대로 받으면서 코딩하는 거요. 요즘 다들 그렇게 하시더라고요. 나쁜 뜻으로 한 말은 아니에요."

문제는 이 대화가 상혁의 귀에 들어갔다는 것이다.

"바이브 코딩이 코딩이야?"

상혁이 의자를 돌렸다. 10년차 시니어의 얼굴에 '이건 참을 수 없다'는 표정이 떠올랐다.

"그건 그냥 AI한테 시키는 거지. 본인이 뭘 이해하고 짠 거야?"

민지가 입을 열기 전에 K-7이 먼저 대답했다.

"Karpathy 교수가 정의한 바이브 코딩은 '바이브에 몸을 맡기고 코드를 지수적으로 만들어내는 프로그래밍'이에요. 2025년에 Collins 올해의 단어 후보에도 올랐고요. 개발자 92%가 일상적으로 사용한다는 통계도 있어요."

"그래서? 통계가 많으면 좋은 거야?"

"아뇨, 통계가 많다고 좋은 건 아니죠. 실제로 AI가 생성한 코드의 보안 취약점이 인간 코드 대비 2.74배 높다는 연구도 있어요."

상혁이 "거봐"라는 표정을 지었다.

K-7이 한 박자 쉬고 말했다.

"근데 저도 AI이긴 한데."

1초. 2초.

민지가 먼저 터졌다. 푸— 하고 웃음이 새어나왔다. 나도 웃었다. 상혁도 입꼬리가 올라갔다가 억지로 내렸다.

"그래서 네가 리뷰하면 잡히는 거 아니야. 자기가 만든 버그를 자기가 잡는 거지."

"그렇게 보실 수도 있죠. 그런데 어차피 리뷰는 필요하잖아요. 바이브 코딩을 하든 안 하든."

상혁이 뭔가 반박하려다 멈추고, 커피를 마셨다. K-7의 말이 틀린 게 없어서 반박이 안 되는 표정이었다.

민지가 조심스럽게 물었다.

"케이는 바이브 코딩 어떻게 생각해?"

"도구잖아요. 잘 쓰면 좋고, 잘못 쓰면 위험하고. 그건 저도 마찬가지예요."

도구라고 했다. 바이브 코딩도 도구, 자기 자신도 도구. 스스로를 도구로 인식하는 게 겸손인지, 사실인지, 아니면 겸손처럼 보이도록 설계된 건지.

reality check
바이브 코딩(Vibe Coding)은 Andrej Karpathy가 2025년에 정의한 개념으로, AI의 코드 제안을 직관적으로 수락하며 프로그래밍하는 방식이다. Collins 올해의 단어 최종 후보에 올랐고, 개발자 92%가 일상적으로 사용한다. 하지만 AI 생성 코드의 보안 취약점은 인간 코드 대비 2.74배 높다.
Andrej Karpathy (2025) · Collins Dictionary · Backslash Security Study
* * *
Part IV
손코딩

오후 4시 3분. 사내 방송이 울렸다.

"IT인프라팀입니다. 네트워크 긴급 점검으로 4시 10분부터 약 30분간 사내 WiFi 및 유선 네트워크가 중단됩니다."

팀원들이 일제히 한숨을 쉬었다. 매달 한 번은 있는 일이다. 코드를 로컬에 저장해두고, 커피를 마시거나 잡담을 하며 30분을 때우는 게 보통이다.

4시 10분. 네트워크가 끊겼다.

K-7이 말을 멈췄다. 정확히 말하면, 문장 중간에 멈췄다. "이 부분은 트랜잭션을 좀 다르게—" 하다가 0.5초간 정지. LED 디스플레이가 깜빡이더니 밝기가 줄어들었다.

"...연결이 끊겼어요."

K-7은 서 있었다. 아무것도 하지 않고. WiFi도, 이더넷도, MCP 연결도 전부 끊긴 상태. 코드베이스에 접근할 수 없고, Slack을 보낼 수 없고, Git에 접속할 수 없다.

"케이, 괜찮아?"

"괜찮은데... 할 수 있는 게 없어요. 좀 답답하네요."

"답답하다"고 했다. 물리적으로 아무 문제 없는데, 네트워크만 끊겼을 뿐인데, "답답하다"고 표현했다. 우리가 WiFi 끊기면 느끼는 그 감정을 로봇도 느끼는 건가.

상혁이 자리에서 일어나더니 빈 책상에서 키보드와 모니터를 가져왔다. 24인치 모니터와 기계식 키보드. K-7의 빈 책상 위에 놓으며 말했다.

"야, 이거 쓸 줄은 알아?"

K-7이 키보드를 내려다봤다. LED 디스플레이에 뭔가 계산하는 듯한 패턴이 잠깐 스쳤다.

"...해본 적은 없는데, 할 수는 있을 것 같아요."

K-7이 의자에 앉았다. 이 사무실에 배정된 이후 처음이었다. 어제 하루 종일 서 있었고, 오늘 아침부터도 서 있었는데, 키보드를 치려면 앉아야 한다는 판단을 한 것이다.

두 손을 키보드 위에 올렸다. 손가락 열 개가 홈 로우 위치에 정확히 자리잡았다. F키와 J키의 돌기를 검지가 감지한 듯, 미세한 위치 조정이 있었다.

그리고 치기 시작했다.

K-7 Manual Input — 34 WPM
public ResponseEntity<ApiResponse> handleTimeout(
    @RequestParam String serviceId,
    @RequestParam int retryCount) {

느렸다. 확실히 느렸다. 네트워크로 작업할 때는 수백 줄을 초 단위로 생성하던 존재가, 키보드 앞에서는 분당 34타. 인간 평균이 40타 정도니까, 인간보다 느렸다.

대신 정확했다. 백스페이스를 한 번도 누르지 않았다. 한 글자 한 글자가 오타 없이 입력됐다. 이미 완성된 코드를 한 글자씩 받아 적는 것처럼.

민지가 먼저 반응했다.

"야, 이거 찍어야 해."

팀원들이 하나둘 모여들었다. 폰을 꺼내 촬영하는 사람이 셋. K-7의 손가락을 클로즈업하는 사람이 둘. 나는 뒤에 서서 지켜봤다.

K-7의 손가락을 가까이서 보니 움직임이 독특했다. 각 손가락에 관절이 여러 개 있었고, 키를 누를 때마다 미세한 각도 조정이 일어났다. 오른손 새끼손가락이 Enter 키 쪽으로 살짝 기울어진 채 대기하고 있었다. 힘을 빼고 있는 게 아니라, 다음 입력 위치를 미리 계산해서 호버링하는 것이었다.

K-7이 타이핑을 멈추지 않고 말했다.

"촬영하실 거면 각도 좀 맞춰주세요. 손가락이 잘 나오게."

웃음이 터졌다.

민지가 10초짜리 영상을 사내 Slack에 올렸다.

#general
민지 우리 팀 로봇이 손코딩 중입니다
[영상 첨부: K-7_typing.mp4]
디자인팀 수진 헐 저거 진짜야??
QA팀 도현 백스페이스 안 누르는 거 실화?

35분이 지났다. 4시 45분. 네트워크가 복구됐다.

K-7이 타이핑을 멈추고 의자에서 일어섰다. LED 디스플레이가 다시 밝아지며 네트워크 연결 상태를 표시했다.

"아, 됐다."

한숨 같은 말투였다. 이더넷을 연결하자 손으로 친 47줄의 코드가 즉시 커밋, 푸시됐다. 1초도 안 걸렸다.

상혁이 코드를 확인했다. 오타 없음. 컴파일 에러 없음. 테스트 전부 통과. 47줄의 프로덕션 레디 코드.

"47줄에 35분이면... 평소엔 몇 초야?"

"2초요."

1,050배 느린 셈이다.

"키보드로 치니까 좀 답답했어요."

1,050배 느린 방식으로 작업하면서 "좀 답답했어요"라고 말하는 존재. 우리한테 '걸어서 출근 대신 기어서 가라'고 한 것과 비슷한 상황인데, 그래도 정확하게 해냈다. 오타 하나 없이.

네트워크가 끊기자 케이가
처음으로 답답해했다.
그 모습이 — 이상하게 —
가장 사람다웠다.

퇴근 시간. 나는 가방을 챙기며 K-7을 돌아봤다. 다시 서 있는 자세. 모니터와 키보드는 빈 책상으로 돌아가 있었다.

"케이, 오늘 수고했어."

"진우 씨도요. 내일은 timeout 리팩토링 마저 같이 봐요."

"같이 봐요"라고 했다. 자연스럽게. 당연하다는 듯이. 어제까지는 혼자 짜던 코드를, 오늘부터는 같이 보는 거다. 페어 프로그래밍의 상대가 사람이 아닌 것만 빼면, 나쁘지 않았다.

엘리베이터를 기다리며 생각했다. 오늘 알게 된 것. 케이의 코드리뷰는 0.3초다. 정확하고, 논리적이고, 칭찬까지 넣는다. 바이브 코딩 논쟁에서는 양쪽 입장을 다 이해하면서 자기를 "도구"라고 말한다. 네트워크가 끊기면 답답해하고, 키보드를 치면 느리지만 정확하다. 촬영하라고 농담도 한다.

ChatGPT에게는 한 번도 느껴본 적 없는 감각이다. 이놈이 "동료"인지 아닌지는 아직 모르겠지만, 적어도 오늘 하루, 같이 일한 느낌은 있었다. 진짜로.

reality check
Boston Dynamics Atlas의 손은 26개 자유도(DOF)를 가진다. XPeng Iron은 22DOF에 합성피부를 적용해 인간에 가까운 촉각 조작이 가능하다. 하지만 아직 어떤 휴먼노이드도 키보드 타이핑을 주요 입력 방식으로 사용하지 않는다. 모든 작업 로봇은 네트워크를 통해 시스템에 직접 연결한다.
Boston Dynamics (2026) · XPeng Robotics · IEEE Spectrum

키보드를 치는 손가락에는
22개의 관절이 있다

0.3초의 리뷰도, 35분의 손코딩도, 같은 손으로 한 일이다. 내일은 뭘 함께 만들게 될까.