코드를 쓰는 일은 이야기를 쓰는 것과 닮아 있다. 같은 문제를 보고 누군가는 우아하게 재귀를 감고, 누군가는 단단한 반복문으로 묵묵히 전진한다. 며칠 밤을 지새운 여든 줄의 서사는 어느 금요일 아침 세 줄의 명료한 독백으로 바뀌기도 한다. 각자의 방식으로 써 내려간 이야기들이 하나의 무대에 올라 막을 여는 것처럼, 저마다의 문법과 리듬을 담은 코드들은 하나의 프로그램으로 엮여 세상에 배포된다.
하지만 어느 순간 그 무대는 좁아지기 시작했다. 더 적은 리소스로 더 많은 성과를 내야 했고, 속도와 효율만이 환영받는 세상에서 ‘창의’라는 말은 서툰 변명이 되었다. 사람들의 기대에 떠밀려 좋은 평가를 위해 나를 면접의 잣대에 끼워 맞췄다. 인공지능의 무정한 계산이 더해진 정량적 기준은 차갑게 숨을 조여 왔고, 다른 사람의 시선 속에서만 증명되는 가능성에 목매어 냉혹한 판단 앞에서 버티는 법을 배웠다. 컴퓨터를 향한 애정은 남아 있었지만 그 이야기를 쓸 자격이 있는지에 대한 의심이 가슴 한 켠을 자욱하게 뒤덮었고, 연필 끝이 닿기도 전에 이미 닫혀버린 괄호처럼 마음 속에서 피어 오르던 이야기는 화면 위의 문장으로 이어지지 못한 채 흐려졌다. 한때 내게 소중했던 일은 어느새 애정과 동떨어진 것이 되었고, 화면 귀퉁이에 남아 있던 오래된 주석처럼 그 감정도 말없이 지워졌다.
나는 전산학을 여러 번 시작했고, 또 여러 번 그만두었다. 두 개로 갈라진 내 한쪽은 여전히 키보드를 두드리며 나아갔고 다른 쪽은 그 손을 쳐내며 그만두라고 속삭였다. 하루에도 수없이 충돌하는 그 두 목소리에 하루는 설레는 마음으로 화면을 열었지만 또 어떤 날은 손끝이 키보드에 닿는 것조차 버거웠다. 머릿속에서 반짝이던 별들은 별자리로 연결되기 전에 사라졌다. 그리고 나는 그 밤하늘을 지우듯 컴퓨터를 닫았다.
지난 12월에 한 네트워크 보안 서비스를 개발하는 스타트업에서 인턴십 기회를 얻었다. 겨우 2학년을 마친 나에게 ‘네트워크’라는 단어는 낯설고 어색했다. 기술 블로그에서 주워 온 낯선 용어들을 서툴게 입에 올리며 겉으로는 자신 있어 보이려 애썼지만, 무거운 마음 깊은 곳에서는 나에 대한 의심이 가득했다. 친구들이 부럽다며 웃어줄 때조차 불안과 긴장에 휘둘렸고, 따뜻한 기숙사 방과 익숙한 일상을 뒤로한 채 어렵게 맺은 친구들과 이제 막 정들기 시작한 학교를 잠시 접어두고 낯선 공간에서 다시 시작해야 한다는 사실이 한없이 막막했다.
가을학기가 막 끝난 그 다음 주, 나는 ‘플랫폼 개발팀 인턴’이라는 낯선 타이틀을 달았다. 그 이름은 내 이름 옆에서 마치 균형을 잃은 무게추처럼 한참을 흔들렸다. 처음 출근한 회사의 모니터 앞에서 설렘보다는 의심이 마음 깊숙이 스며들었다. ‘내가 여기 있어도 되는 걸까?’, ‘내가 쓴 코드가, 내가 내린 선택이 누군가에게 피해를 주지는 않을까?’ 스타트업이었기에 인턴 신분인 내게도 상상 이상의 권한이 주어졌고, 내 손끝에서 흘러나오는 모든 것이 프로그램에 직접적으로 영향을 준다는 무게는 내가 애써 붙들던 자신감마저 산산조각 냈다.
첫 2주간은 정해진 온보딩 과정을 따랐다. 환경 세팅 하나도 쉽지 않았고, 작은 오타 하나에 콘솔창은 붉은 비명을 질렸다. 정교하게 짜인 기존의 코드를 읽는 일은 누군가의 머릿속에서 태어난 별자리 하나하나를 조심스레 따라 그리는 일이었다. 그 별들, 즉 함수와 클래스들은 각자의 의미를 품고 그 자리에 있었고, 내가 읽은 물고기자리가 누군가에겐 사자였으며 누군가에겐 전갈이었을 것이다. 이 회사의 이야기를, 그 무대를 이해하고 싶었고, 그렇게 나는 엉뚱하고 어긋나더라도 나의 언어로 별들을 연결했다.
2주 차 개발팀 미팅에서 나는 회사 코드의 인프라 구조를 설명해야 했다. 말은 입을 떠났고, 심장은 그 뒤를 헐떡이며 따라갔다. 누군가의 질문과 이어진 설명을 절반도 이해하지 못했다는 사실 앞에서 나는 조용히 무너졌다. 매일 코드를 읽고 로그를 살피며 작은 수정을 거듭했지만, 처음 마주한 네트워크의 세게는 너무나 넓고 차가웠다. 나는 이 팀에 제대로 기여하지 못한다는 죄책감에 휘청거리며 나 없이도 잘 돌아갈 팀을 보며 존재감 없는 자리를 지켰다. 마치 연극이 끝나고 모두 떠난 무대에 혼자 남아, 텅 빈 객석을 향해 혼잣말을 읊조리는 사람처럼 말이다.
그럼에도 그 자리를 떠나고 싶다는 생각은 들지 않았다. 처음에는 사람들이 좋아서 그만두지 않았다. 말없이 해야 하는 일들, 실수해서는 안 되는 순간들, 때로는 바보 같았던 질문에도 그들은 친절했다. 매일 함께 점심을 먹으며 듣던 인공지능, 주식, 게임 이야기는 나와는 거리가 멀었지만, 따뜻한 식사와 같이 마음에 남았다. 따뜻한 사람들 아래 나는 조금씩 배우고 있었고, 그래서 견디고 싶었다. 똑같은 문제를 또 마주할 생각에 몸서리쳤던 출근길을 지나, 실수와 추위가 겹쳐 더 쓰라리었던 겨울을 지나, 나는 마침내 처음 맡은 임무를 마무리했다. 작지만 단단한 성취감이 두려움을 녹였고 그 속에 깃든 나의 성장을 조금은 자랑스러워 할 수 있었다.
그 자리에 오래 머물수록 마음이 편안했고, 그러다 어느 순간 일이 재미있어졌다. 내가 만든 기능이 실제 서비스에 반영되고, 로그에 내 코드가 남고, 동료의 코드와 맞물려 돌아가는 것이 뿌듯했다. 내가 맡았던 부분에 대해 누군가 묻고, 결정을 부탁하는 말에 대답하며, 처음에는 무겁게만 느꼈던 책임감이 나를 짓누르기보단 생각을 다지게 했다. 실수를 두려워하기보단 더 배워서 개선하고 기여하고 싶다는 욕심이 생겼다. 누군가의 리뷰가 부담스럽기보다는 감사했고, 그 리뷰 속에서 나는 다시 성장했다.
두려움과 애정이 같은 방향을 향할 수 있다는 걸 처음으로 알게 되었다. 지금은 두렵지 않다. 실패의 기억이 아프지 않다는 뜻은 아니지만, 그 실패에도 불구하고 나는 계속 쓰고 싶다. 인턴십은 나의 관심과 재미에 다시 불을 붙여주었다. 불안하던 문장 끝에 쉼표 하나를 찍어주었고, 이제 나는 그 쉼표 다음 문장을 써 내려가간다. 내가 만든 이야기의 다음 장이 궁금해졌다. 9주간의 학교 연계 인턴십이 끝나갈 무렵 나는 한 학기를 연장하고 싶다고 부탁드렸고, 뜻밖에도 쉽게 승낙을 받았다. 그건 더 배우고 가까워질 수 있는 기회였고, 더 쓰고 싶은 이야기의 한 장이었다.
어느 날, 회의실 너머로 영어 면접 소리가 들려왔다. 그리고 몇 주 뒤 점심시간, 나는 처음으로 H를 만났다. 비즈니스팀 인턴으로 새로 합류한 H는 내가 익숙했던 개발팀 사람들과는 완전히 달랐다. 나는 대부분의 시간을 개발팀과 보냈지만, 여전히 그 안에서 한 발짝 뒤에 서 있었다. 성과는 있었지만, 채워지지 않는 개발 지식과 처음 겪는 회사의 질서에 주눅들었고, 실수할까 봐, 미숙함이 들킬까 봐, 그들의 속도를 따라가지 못할까 봐 두려웠다. 그래서 말을 줄이고 격식을 입었다. 그렇게 배움의 폭은 넓었지만, 서로에게 마음이 닿지는 않았다. 그런데 H는 사람들에게 망설임 없이 다가갔고, 내게도 그랬다. 나는 아직 조심스러웠다. 회사는 여전히 나에게 실수하면 안 되는 곳, 나 자신으로는 머물 수 없는 공간이었다. 그래서 H 앞에서도 나는 가면을 벗지 못한 채, 예의 바르게, 공손하게, 조심스럽게 반응했다.
그러다 5월 말, 어느 평범한 금요일 밤이었다. 별 의미 없이 흘러갈 것 같던 대화가 어느새 방향을 틀었고, 무겁고, 가볍고, 짧지 않은 이야기들이 밤새 이어졌다. 나는 처음으로 H와 이야기했다. 그날 밤, 떠오르는 햇살과 함께 내가 조심스럽게 쌓아 올린 벽은 아주 조금 느슨히 녹았고, 그 틈으로, 처음으로 나를 숨기지 않아도 괜찮다는 느낌이 스며들었다. 그렇게 4개월간의 회사 인턴십이 끝나갈 무렵, 나는 다시 인턴십 연장을 요청했다. 이번에는 정말로 더 머물고 싶어서였다. 더 도전하고 싶었고, 더 배우고 싶었고, 이대로 이야기의 마침표를 찍기에는 더 쓰고 싶은 이야기가 남아 있었기 때문이었다.
그리고 몇 주 후, 밤11시가 넘은 시각, “이번 연장 요청은 어렵다는 결정을 내리게 되었습니다.” 라는 문장이 도착했다. 그 문장은 마치 이별 통보처럼 날카로웠다. 나는 몇 번이고 그 메일을 다시 읽었다. 내가 놓친 게 있었나, 어디서 실수했을까. 나는 무례하지 않으려 애썼고, 누구에게도 피해를 주지 않으려 했고, 최선을 다했고, 지치더라도 버텼는데, 세상이 무너지는 것 같이 이렇게 결과가 찾아왔다. 그 자리가 단 하나의 목표는 아니었지만, 적어도 내가 알고 있던 길이었다. 그리고 나는 그 길에서 조용히 밀려났다. 회사라는 공간은 내가 생각했던 것보다 훨씬 더 냉정하고 빠르고 차가웠다. 이제야 조금 익숙하다는 감정은 금세 허공으로 흩어졌다. 다시 무언가를 시작하는 게 두려웠고, 나를 다시 설명해야 한다는 사실이 피로했다. 실패는 결과보다도 오래 남는 공허함을 남긴다. 마치 불 꺼진 극장의 텅 빈 객석에 홀로 앉아 마지막 장면을 붙잡고 떠나지 못하는 사람처럼, 아무도 듣지 않지만 계속해서 대사를 되뇌는 마음이었다.
그런데 그 극장에 누군가 남아 있었다. 마지막 커튼콜이 끝나고도 자리를 뜨지 않은 사람, 가면 아래의 나를 본 단 한 사람이었던 H. 비즈니스 팀이었기에 개발자의 입장에서 회사 서비스를 설명해 달라며, 그는 어느 날 새벽에 별일 아니라는 듯 물었다. “회사 프로그램 구조, 혹시 설명해 줄 수 있어?”
그 질문이 전혀 두렵지 않았다는 사실이 놀라웠다. 한때는 이해하지 못해 아무 말도 하지 못했던 나였다. 온보딩 두 번째 주에 문서와 콘솔, 리포지토리 사이를 헤매다 결국 침묵했던, 그리고 계속 침묵하게 만들었던 그 구조. 그런데 그날 나는 설명할 수 있었다. 나는 그 반년 동안 안에서 길을 찾았고, 그 여정을 누군가에게 들려줄 수 있었다. 그는 내 설명이 여전히 도움이 된다고 했다. 그 말 한마디가 무너진 마음 속 폐허에 조용히 내려앉아 작고 단단한 기둥이 되었다. 스스로를 의심하던 시간들, 매 줄마다 달린 리뷰에 울고 웃던 날들이 헛되이 흩어진 게 아니었다. 내가 남긴 문장은 누군가에게 읽히고 있었고, 누군가에게 여전히 의미 있었다. 그 사실 하나가 나를 다시 일으켜 세웠다. 그날 이후로도 우리는 이야기를 나누었다. 기술적인 이야기, 언젠가 내가 쓰고 싶은 이야기, 때로는 아무 말도 아닌 말들 속에서 그는 여전히 귀 기울였고, 나는 가면 아래 나의 이야기를 말할 수 있었다. 한때는 그저 ‘회사 사람’이었던 그가, 어느새 내 말의 결을 따라 이해해 주는 사람이 되었고, 그 믿음이, 내가 나를 다시 믿게 해주었다.
사람들은 실패를 두고 묻는다. “그래서 거기서 뭘 배웠어?” 마치 그 질문이 정답이라도 되는 듯, 어떤 교훈을 끌어내야만 실패가 의미 있다고 여긴다. 하지만 어떤 실패는 배움보다 더 큰 것을 남긴다. 눈에 띄지 않고, 소리 없이 머무르지만, 가장 오래 가는 것, 관계.
나는 무너졌다. 하지만 그 무너진 조각들을 함께 바라봐 준 사람이 있었고, 다시 쌓아갈 수 있다고 믿게 해 준 사람이 있었기에 그 자리는 폐허가 아닌 다음 이야기의 시작이 될 수 있었다. 이 인턴십이 내게 준 가장 큰 선물은 커리어나 성취가 아니다. 직함 없이도 이어진 이해와 존중, 실패 속에서도 놓치지 않았던 인간적인 연결. 문 너머를 함께 바라봐 준 팀원, 그리고 무너진 자리에서 보물처럼 남아 있던 가능성과, 함께 다시 세워갈 미래를 믿어준 사람, H.
그토록 망설였던 컴퓨터와의 이야기를 이제 다시 펼친다. 두려움 속에서도 인턴십을 시작했고, 부끄러움과 자신감의 잔해 속에서도 끝내 포기하지 않았기에, 그리고 실패에 손 내밀어 준 사람들이 있었기에 다시 펜을 잡는다. 한때는 완벽함의 강박 아래 누군가의 기준에 나를 끼워 맞추며 도망치듯 달렸고, 결국 멈춰 설 수밖에 없었다. 하지만 이제는 나 자신을 믿을 수 있다. 실패도, 관계도, 나 자신을 모두 담은, 나의 마음으로, 나의 언어로 쓰는 이야기이다. 나는 완벽을 좇는 개발자가 아니라, 이해와 연결을 꿈꾸는 사람이다.
이제는 안다. 어떤 문이 닫히는 순간, 꼭 다음 문을 서둘러 열 필요는 없다는 것을. 그 문 앞에 함께 서 줄 누군가가 있다면, 그 기다림조차 충분히 의미 있다는 것을. 그리고 그런 존재가 곁에 있다는 사실만으로도 이미 다시 시작할 수 있다는 것을. 그들은 내가 다시 나를 믿어보게 해주었다. 그리고 그 믿음은 어떤 성공보다 깊고 단단하게 나를 지탱해 준다.