스프린트 제로
금요일 밤 열한 시 사십칠 분, 판교 테크노밸리의 불이 층마다 제각각 꺼지고 있었다.
루멘스튜디오 팔 층은 아직 켜져 있었다. 라이브 운영 삼 주차. 핫픽스가 하나 더 필요하다고 오후 스탠드업에서 누군가 말했고, 그 말이 저녁을 잡아먹었다. 박진우는 서버 로그를 닫으며 안경을 벗었다. 코받침 자국이 남았다. 맞은편 모니터 너머로 최나래가 이어폰을 한 쪽만 끼고 클라이언트를 빌드하고 있었다. 빌드가 끝나면 초록 글자가 뜬다는 걸, 그는 그녀의 얼굴보다 먼저 알았다.
"막차야."
진우가 말했다.
"로컬에선 됐는데요."
나래가 대답했다. 회사에서는 존댓말. 둘만 알면 되는 농담이었다. 로컬에선 된다는 말은 이 사무실에서 가장 많이 죽은 문장이었다.
"프로덕션은 차 시간표야. 막차 놓치면 택시야."
"택시비 처리해 줘요, 서버 님."
"안 해."
나래가 저장을 누르고 노트북을 닫았다. 스티커가 잔뜩 붙은 뚜껑. 그중에 진우가 작년에 몰래 붙인 '이 인간은 커밋 메시지를 안 읽음' 스티커가 아직 있었다. 그녀는 그걸 알면서 안 떼었다.
지하 주차장에서 그의 차가 먼저 출발했다. 나래가 조수석에 앉으며 안전벨트를 채우지 않았다. 채우라는 말을 기다렸다. 진우는 시동을 건 채로 그녀를 봤다. 삼 초. 그녀가 입꼬리를 올렸다. 그는 벨트를 직접 끌어다 잠갔다. 버클이 찰칵 소리를 냈다. 그 소리가 나면 나래의 숨이 조금 짧아진다는 걸, 진우는 사 년째 데이터로 알고 있었다.
"오늘 규칙."
그가 운전하면서 말했다.
"오늘은 크런치였잖아. 크런치는 예외 조항."
"예외 조항은 네가 쓴 거야. 내가 승인한 적 없어."
"PR 무시당한 거네. 리뷰어 태도가 너무 고압적이에요."
진우는 웃지 않으려고 했다. 웃으면 그녀가 이긴 게 되니까. 백현동 아파트까지 십이 분이었다. 그 십이 분 동안 나래는 창밖을 보면서 무릎을 살짝 벌렸다. 회사 후드 아래로 아무것도 안 입은 허벅지가 보였다. 오늘 과제였다. 속옷 금지. 그녀가 오전에 슬랙 DM으로 '오늘 퀘스트 수락함'이라고 보낸 뒤, 오후 내내 의자에서 다리를 꼬는 방식을 바꿨었다. 진우는 그걸 회의 중에 봤다. 서버 이슈를 말하는 척하면서.
현관문이 닫히자 회사의 존댓말이 같이 닫혔다.
나래는 신발을 대충 벗고 거실로 들어갔다. 무릎을 꿇지 않았다. 현관 매트 왼쪽, 그가 지정한 자리. 그 자리는 비어 있었다. 진우는 열쇠를 그릇에 넣고 그녀를 봤다.
"나래야."
"응."
"자리."
"까먹었어."
"노션 페이지 열일곱 개 중에 일 번이 그거야. 현관. 무릎. 삼십 초."
"노션은 문서야. 문서는 안 읽어. 우리 회사 위키도 안 읽잖아, 너."
진우는 한숨을 쉬지 않았다. 한숨을 쉬면 그녀가 그것을 보상으로 가져갔다. 그는 외투를 걸고, 안경을 다시 쓰고, 소파 앞 테이블에서 노트북을 열었다. 노션이 아니라 스프레드시트였다. 시트 이름: `narae_points`. 열: 날짜, 규칙, 위반, 메모. 메모 칸에 그가 지난주에 적어 둔 문장이 있었다. '고의인지 확인 필요. 고의면 점수 두 배.'
나래가 그 화면을 뒤에서 봤다.
"야. 나 라이브 운영이냐."
"이벤트 로그야."
"이벤트 로그에 내 무릎이 들어가?"
"네 무릎이 이 집의 핵심 지표야."
그녀는 웃었다. 그리고 그 웃음이 끝나기 전에, 천천히, 현관으로 돌아가 무릎을 꿇었다. 후드가 허벅지 중간까지 내려왔다. 맨살. 정강이가 매트에 닿는 소리. 고개를 숙이지 않았다. 올려다봤다. 브랫의 기본기다. 복종하는 척하면서 눈을 안 내주는 것.
진우가 다가갔다. 손가락을 그녀의 턱 밑에 넣었다. 올렸다.
"삼십 초가 아니라 삼 분. 가산점."
"가산점이 아니라 패널티지."
"네가 정의해. 지금."
나래의 목구멍에서 작은 소리가 났다. 정의하라는 말이 이 집에서 명령보다 강했다. 그녀는 삼 초를 끌었다.
"……패널티. 근데 기분 좋은 쪽."
"커밋."
그가 그 단어를 안전 확인처럼 썼다. 커밋. 진행. 스테이징은 속도 줄임. 롤백은 전부 멈춤. 두 사람이 작년에 정한 말이었다. 게임 용어를 안전어로 쓰자고 나래가 먼저 제안했다. 진우는 그때 너무 좋아서 동의해 놓고, 나중에 커뮤니티에 올리지 않기로 했다. 너무 우리여서.
삼 분이 길었다. 나래의 무릎이 매트 위에서 살짝 밀렸다. 진우는 시계를 보지 않았다. 그냥 그녀를 봤다. 후드 깃 사이로 쇄골. 귀걸이 하나. 코딩할 때 머리카락을 귀에 넘기는 버릇이 남아, 지금 귀가 드러나 있었다. 그는 그 귀에 입을 맞추지 않았다. 아직.
"일어나."
나래가 일어났다. 다리가 저려 비틀거렸다. 진우가 허리를 잡아 소파 쪽으로 이끌었다. 소파 등받이에 배를 붙이게 했다. 후드를 올렸다. 엉덩이가 드러났다. 하얀 살. 지난주 손바닥 자국은 이미 없었다. 그녀는 자국이 없는 걸 아쉬워하는 인간이었다. 진우는 그 아쉬움을 알고도 매일 새 자국을 남기지 않았다. 남는 건 스케줄이 필요했다.
"몇 대."
나래가 물었다. 목소리에 기대가 묻어 있었다.
"네가 스프레드시트 보고 웃었으니까. 여덟."
"여덟은 소수 아니잖아. 홀수로 해. 홀수가 더 게임 같아."
"아홉."
"고마워."
첫 대가 붙었다. 진우의 손바닥은 넓었다. 소리가 거실에 짧고 높게 퍼졌다. 나래가 숨을 들이마셨다. 둘째. 셋째. 그는 같은 자리를 치지 않았다. 왼쪽, 오른쪽, 조금 아래. 시스템 디자이너처럼. 데미지 분포. 나래가 넷째에서 웃었다. 웃으면 안 되는 타이밍에 웃는 게 그녀의 기술이었다.
"뭐가 좋아."
"표. 너 나 엑셀로 관리하잖아. 존나 섹시해. 미안, 존나 한심하기도 하고."
다섯째가 더 무거웠다. 나래의 허리가 접혔다. 여섯. 일곱. 그녀는 소파 패브릭을 움켜쥐었다. 여덟에서 소리가 나왔다. 낮고 짧은 신음. 아홉은 기다렸다가, 그녀가 숨을 내쉰 다음에 붙였다. 타이밍. 그는 타이밍을 믿었다.
나래의 엉덩이가 붉었다. 진우가 손바닥을 그 위에 올려 열을 읽었다. 그녀는 그 손이 가만히 있는 걸 더 견디기 힘들어했다.
"손으로 확인해."
그가 말했다.
나래의 손이 뒤로 가서 자기 다리 사이를 만졌다. 젖어 있었다. 손가락이 들어가는 소리가 났다. 그녀가 이마를 소파에 댔다.
"보고."
"젖었어. 과제 전인데 젖었어. 불공평해. 너는 바지 입고 있잖아."
진우가 바지를 내렸다. 이미 단단했다. 나래가 고개를 돌려 봤다. 보는 눈이 솔직했다. 브랫은 입이 먼저고, 눈은 정직했다.
"무릎. 여기."
소파 앞 카펫. 나래가 다시 내려갔다. 이번엔 빨리. 입을 벌리기 전에 그를 올려다봤다.
"오늘 퀘스트 보상이야, 이거."
"아니. 기본 보상."
"기본이 이 사이즈면 밸런스 붕괴야."
"밸런스는 내가 봐."
그녀가 혀로 끝을 먼저 감쌌다. 침이 묻었다. 천천히, 깊이. 나래는 일을 대충 하는 척하면서 사실은 정확하게 하는 사람이었다. 클라이언트 버그를 고칠 때도 그랬고, 자지를 물 때도 그랬다. 이가 닿지 않게. 혀 밑으로 혈관을 누르며. 진우의 손이 그녀의 머리에 얹혔다. 밀어 넣지 않았다. 얹어 두기만. 그녀가 스스로 깊이 갔다. 코가 그의 배에 닿았다. 숨이 막히는 소리를 내고, 그 소리를 좋아해서 또 했다.
"봐. 잘하잖아."
진우가 말했다. 나래의 눈이 가늘어졌다. 칭찬이 들어가면 그녀는 일부러 서툴러졌다. 오늘은 서툴러지지 않았다. 크런치의 남은 예민함이 성욕으로 바뀐 날이었다. 진우가 허리를 앞으로 밀었다. 나래가 목을 열어 받았다. 침이 턱으로 흘렀다. 그녀가 손으로 자기 클리토리스를 문질렀다. 허락을 구하지 않았다.
"손 떼."
떼지 않았다. 진우가 그녀의 손목을 잡아 올렸다. 나래가 입으로만, 더 빠르게. 진우가 숨이 가빠지는 걸 느끼며 말했다.
"삼키지 마. 혀 위에."
나래가 눈을 가늘게 뜨고 그를 봤다. 그 눈이 반항인지 동의인지, 둘 다였다. 진우가 깊게 밀어 넣고 나왔다. 정액이 혀와 입술에 걸렸다. 나래가 삼키지 않고 입을 조금 벌린 채 보여 주었다. 하얗고, 끈적하고, 그녀가 혀를 움직이자 줄이 늘어났다.
"삼켜."
삼켰다. 그리고 입꼬리를 올렸다.
"로그에 적어. '나래, 삼킴. 재현 가능.'"
진우는 웃음을 참지 못했다. 그 웃음이 나래의 승리였다. 그는 알고 있었다. 알면서 웃었다.
나래를 소파에 눕히고 다리를 벌렸다. 후드만 남은 몸. 보지가 이미 열려 반질거렸다. 진우가 엄지로 클리토리스를 눌렀다. 나래의 허리가 떴다. 손가락 두 개를 넣었다. 쉽게 들어갔다. 안쪽이 뜨거웠다. 그는 그 열을 손가락 마디로 읽고, 굽혀서 앞쪽을 긁었다. 나래가 그의 손목을 잡았다.
"넣어도 돼."
"물어봐서 고마워."
"물어본 거 아니야. 통보야."
진우가 콘돔을 서랍에서 꺼냈다. 이 집의 서랍은 배터리와 콘돔과 HDMI 케이블이 같이 들어 있었다. 그는 씌우고, 나래의 무릎을 접고, 밀어 넣었다. 한 번에. 나래가 소리를 냈다. 짧고 높은. 진우가 허리를 움직였다. 소파가 살짝 밀렸다. 나래의 붉은 엉덩이가 쿠션에 쓸릴 때마다 그녀가 이를 갈았다.
"세게."
"스펙에 세게는 없어. 강도는 내가 정해."
"그럼 지금 강도 올려, 리드."
올렸다. 살이 부딪히는 소리. 나래의 가슴이 후드 안에서 흔들렸다. 진우가 후드를 벗겨 유두를 물었다. 나래가 그의 등을 긁었다. 짧은 손톱. 프로그래머의 손톱. 그래도 줄이 남았다. 진우가 엄지로 클리토리스를 문지르며 넣었다. 나래의 안이 조여 왔다.
"가도 돼."
"허가 기다린 거 아니야."
그래도 그 말 다음에 갔다. 몸이 먼저 정직했다. 나래가 그를 물듯이 조이고, 허리가 떨리고, 입에서 욕이 섞인 신음이 나왔다. 진우가 그 조임을 이기며 몇 번 더 치고, 따라갔다. 콘돔 안에서 맥이 쳤다. 둘 다 숨을 고를 때까지 빼지 않았다.
빼는 소리가 거실에 작았다. 진우가 콘돔을 묶어 휴지에 감았다. 나래는 소파에 누운 채 천장을 봤다. 무릎 안쪽이 붉었다.
"물."
진우가 물을 가져왔다. 나래가 반을 마시고 그에게 넘겼다. 남은 반. 사 년의 애프터케어는 그 정도면 됐다. 거창한 담요도, 대본도 없이. 물 한 잔과 손바닥의 열.
진우가 나래의 무릎을 손으로 문질렀다. 매트 자국이 남아 있었다.
"저려."
"삼 분이었으니까."
"다음엔 방석 사 와. 이 매트 최악이야. 유저 경험 쓰레기."
"이슈 등록해."
나래가 폰을 집어 진짜로 메모를 열었다. 제목: '현관 매트 UX 최악'. 진우가 그 진지함을 사랑했다. 사랑한다는 말은 지금 안 했다. 방금 넣은 직후에 하면 그녀가 웃어서 분위기를 깨니까. 조금 뒤에 할 말이었다.
나래가 메모를 닫고 그의 어깨에 기댔다. 땀이 식고 있었다.
"있잖아."
"응."
"그 시트. 진짜 별로야."
"정확하잖아."
"정확해서 별로야. 네가 나 기록하는 거, 내가 일부러 어기는 거, 그거 둘 다 좋은데. 노션이랑 엑셀로 하니까 마치 내가 라이브 게임의 불량 유저 같거든. 밴 당할 것 같아."
"밴은 안 해."
"알아. 그래서 더 어기지."
진우가 그녀의 머리카락을 넘겼다.
"그래서 제안이 있어?"
나래가 고개를 들었다. 눈이 반짝였다. 버그를 찾았을 때 그 눈이었다.
"앱 만들자."
"……앱."
"우리 게임 만들잖아. 퀘스트 로그처럼. 오늘의 과제, 완료 버튼, 실패하면 티켓 발급. 너 좋아할 만한 거. 스프린트 단위로 규칙 관리하고, 위반은 버그 트래커로. 우선순위 P0부터 P3. 애프터케어는 코드 리뷰."
진우는 그녀를 봤다. 웃고 있는지 확인해야 했다. 웃고 있었다. 그런데 진지했다.
"사이드 프로젝트로? 크런치 중에?"
"크런치 끝나면. 아니, 크런치 중에 몰래. 몰래가 더 좋잖아."
"보안은."
"로컬. 우리 폰 두 대만. 서버는 집에 있는 미니 PC. 외부 노출 제로. 내가 클라이언트, 네가 서버. 역할 그대로."
진우의 머릿속에서 이미 테이블이 그려지고 있었다. users, rules, quests, completions, punishments. 소프트 딜리트. 감사 로그. 그는 그 그림을 지우려 했다. 지워지지 않았다.
"이름."
나래가 물었다.
"아직 없잖아. 만들지도 않았는데."
"이름은 먼저야. 레포 파기 전에 이름."
나래가 천장을 보며 말했다.
"오더."
"명령."
"응. 근데 오더북, 그 느낌. 퀘스트 오더. 네가 발행하고 내가 수행. 수행 안 하면 버그."
"네가 버그를 발행하는 쪽에 가깝지."
"그래서 내가 클라이언트야. 클라이언트는 원래 서버를 안 믿거든."
진우가 그녀 이마에 입을 맞췄다. 땀 맛.
"스프린트 제로."
"응?"
"기획. 이번 주말. 스펙만. 코드는 다음 주."
나래가 그의 목을 팔로 감았다. 맨몸이 그의 티셔츠에 붙었다.
"스펙 미팅은 알몸으로 하는 거지."
"그건 스펙에 없어."
"내가 추가할게. PR 보내지 마. 메인에 바로 푸시."
진우는 그 문장을 금지해야 했다. 메인에 바로 푸시는 이 집에서도, 회사에서도, 원칙적으로 안 되는 일이었다. 그런데 나래의 입이 그의 턱에 닿아 있었고, 방금 그 입이 자기 정액을 삼켰고, 규칙은 엑셀보다 이 온기가 먼저라는 걸 그는 이미 알고 있었다.
알고 있으면서도, 다음 날 아침 그는 레포를 팠다.
이름: `order-app`.
README 첫 줄: '우리만 쓰는 규칙. 외부 공유 금지.'
나래는 아직 자고 있었다. 목덜미에 그의 이빨 자국이 희미했다. 진우는 커밋 메시지를 오래 고민하다가 이렇게 적었다.
`chore: init. sprint zero.`
커밋이 올라갔다. 빈 프로젝트. 아직 명령은 없었다. 명령이 없는 동안의 고요를, 진우는 좋아했다. 나래는 고요를 깨는 쪽이었다. 그 두 가지가 이 집을 굴렸다.
거실 테이블 위에 노트북이 열려 있고, 소파에는 후드가 걸쳐 있고, 현관 매트는 여전히 최악이었다.
진우는 방석 검색 창을 열었다. 그리고 그 옆에, 새 노션 페이지가 아니라 이슈 트래커의 첫 티켓을 만들었다.
`#1 현관 무릎, 매트 UX.`
담당자: 박진우.
우선순위: P3.
나래가 잠결에 그를 불렀다. 진우가 노트북을 닫고 침대로 갔다. 그녀가 그의 팔을 끌어당겼다.
"앱 이름 오더 맞아?"
"아직 확정 아니야."
"확정이야. 내가 정했어. 게임의 룰은 내가."
진우는 어둠 속에서 웃었다. 그 문장을 레포 설명에 넣지 않기로 했다. 넣으면 너무 정확해서, 나중에 그녀가 그걸 기능이라고 우길 게 뻔했다.
"내일 스펙 짠다."
"알몸으로."
"후드는 허용."
"후드는 치트야."
"치트 허용 서버야, 여긴."
나래가 코를 그의 어깨에 묻었다. 이미 다시 잠들어 있었다. 진우는 천장을 보다가 눈을 감았다.
빈 레포가 어딘가에서 기다리고 있었다. 규칙이 코드가 되면 더 정확해질 거라고, 그 밤의 그는 믿었다.
정확해지면 나래가 덜 어길 거라고는, 아직 생각하지 않았다.