위코드에 온 지 6주가 지났다. 코딩을 배우고 싶어 첫 발걸음을 했던 게 3월 중순이었는데, 벌써 많은 시간이 흘렀다. 많은 일이 있었다. 낯선 사람들과의 만남이 어색하게 다가오기도 했고, 세상엔 좋은 사람들이 많다는 걸 알게 됐으며, 개발을 업으로 삼아 살아간다는 것이 무엇을 의미하는지에 대해 작게나마 깨달을 수 있었다. 부트캠프의 과정이 끝나려면 앞으로 6주의 시간이 더 남아 있다. 남은 시간을 더욱 뜻깊게 보내고 싶은 마음에, 나아가 개발자가 되고자 달려왔던 시간을 되짚기 위해 지난 2주간 참여했던 프로젝트에 대한 회고록을 남겨본다.
처음 회고록을 쓰기로 마음먹었을 때는 고민이 많았다. 정해진 틀이나 양식에 맞춰 글을 써야 하는지, 아니면 나의 스타일대로 자유롭게 글을 남겨도 되는지에 대한 내적 갈등을 겪었기 때문이다. 하지만 나란 녀석이 늘 그렇듯(주변의 방식과 나의 방식 사이에서 갈팡질팡하다가 결국 나의 방식을 선택하고 마는...) 결국 내가 쓰고 싶은 대로, 그러니까 내 마음이 가는 대로 글을 쓰기로 했다. 그래야 조금이나마 진심에 가까운 이야기를 할 수 있을 것 같았다. 그래서 나는 회고록의 내용을 이번 프로젝트에서 겪었던 강렬한 경험을 중심으로 채워 보려 한다. 사람들에겐 누구나 뇌리에 생생하게 간직된 순간들이 있다. 이번 프로젝트에서도 나에겐 그러한 순간들이 있었다.
살다 보면 특정 분야에서 업력이 상당한 분들을 만나게 된다. 흔히 장인이라 불리는 사람들이다. 태어난 지 얼마 안되는 애송이지만 나도 그런 사람들을 과거에 만난 적이 있다. 20년 넘게 카메라를 잡았던 촬영감독, 다큐멘터리 전문 연출자, 평생을 국내 문학 발전을 위해 힘써온 문화 재단의 기획자 등등. 길지 않은 만남이었지만 그들에겐 공통점이 있었다. 바로 '말의 무게'였다. 장인들은 적어도 그들이 종사해온 직업과 관련된 부분에서만큼은 본질을 꿰뚫고 있었다. 그리고 그 본질을 짧은 언어로 간결하게 담아내곤 했다. "이 일을 오랫동안 하려면 본인이 돈보다 가치를 좇는 사람인지를 먼저 고민해보는 게 좋아!"라고 내게 조언하던 어느 재단 상무의 말처럼 말이다. 나이 든 어른 혹은 꼰대의 잔소리로 치부할 수도 있겠지만, 나는 그럴 수 없었다. 왜 그랬는지를 돌이켜보면, 그들의 말에서 어떤 무게를 느꼈기 때문이었다. 쉽게 무시할 수도, 짐작할 수도, 그렇다고 대충 넘길 수도 없는 어떤 메시지가 그들의 언어 속에 숨어 있었다.
프로젝트 회고록을 쓰면서 갑자기 왜 글쓴이의 과거에 대한 장광설을 늘어놓느냐고 묻는다면, 그 이유는 이와 비슷한 경험을 이번 프로젝트에서 겪었기 때문이다. 프로젝트 발표 하루 전날이었던 걸로 기억한다. 그날은 내가 작성한 코드에 대한 멘토의 리뷰를 받을 수 있는 마지막 날이었다. 마감이 다가오면 모두가 그러하듯 나 역시 오전부터 시간에 대한 압박에 쫓기고 있었다. 국내의 유명한 식품 브랜드 '마켓컬리' 웹사이트를 클론하는 것이 내가 참여한 프로젝트의 목표였는데, 그중에서 내가 맡은 역할 '장바구니 기능 구현'이었다. 멘토의 승인을 받지 못한 기능은 발표에서 선보일 수 없다는 규칙 때문에 나는 굉장히 조급한 상황이었다. 만약 나의 코드가 멘토들의 리뷰를 통해 승인되지 못한다면 장바구니 기능을 발표에서 구현할 수 없을 것이 뻔했고, 만약 그렇게 된다면 함께 프로젝트를 위해 힘써준 팀원들에 대한 미안함이 너무나 커질 것 같았다. 상황이 이렇다 보니 조급한 나의 마음은 나의 코드에도 고스란히 담길 수밖에 없었다. 그저 기능 구현만을 목표로 하는 코드. 효율성과 가독성을 높이기 위한 고민이 전혀 담겨 있지 않은 코드. 그것이 내가 짠 코드를 설명할 할 수 있는 가장 정확한 표현이었다.
다행히도 이러한 나의 문제점을 정확히 파악하고 있는 누군가가 있었다. 바로 위코드의 직원이자, 어딘지 모를 장인의 기운을 풍기는(실명을 거론할 수 없을 것 같다.) P멘토였다. 아직도 머릿속에 생생하게 남아 있다. 노트북 모니터에 정신이 팔려 앉아 있는 나의 어깨를 꽉 잡으며 다가왔던 그분의 모습이. P멘토의 얼굴은 반쯤은 수심에 찬 모습이었고, 반쯤은 어떻게 하면 나란 녀석을 올바른 길로 일깨울 수 있을까 고심하는 스포츠 코치와 같은 얼굴을 하고 있었다. 나는 즉시 자신에게 중대한 문제가 있다는 걸 깨달았고, 즉시 멘토의 말씀을 겸허히 받아 적을 노트북 메모장을 켠 후, 사뿐히 자판에 손을 올렸다. 그리고 멘토의 말씀이 이어졌다. 사실 그다음부터는 자세히 기억나지 않는다. 그분은 말하고, 나는 받아 적었을 뿐이었다. 머나먼 옛날 예수·석가·마호메트로 대변되는 선지자들의 말을 기록하던 추종자의 모습이 아마 그날 나와 같지 않았을는지 조심스레 추측해본다.
하지만 그 와중에서도 간신히 정신을 차리고 기억했던 멘토의 말 몇 마디가 있다. "그저 기능을 몇 개 더 구현하는 것은 중요하지 않아요. 중요한 것은 코드 한 줄을 쓰더라도 완성도 있는 결과물을 만들어내는 겁니다. 어떻게 하면 더 효율적이고 가독성 높은 코드를 만들 수 있을지 고민하는 것은 백엔드 엔지니어의 숙명이에요. 세세한 것 하나까지... 개발자는 집요하게 파고들어야 해요" 약간의 윤색을 거쳤지만, 대략 이런 내용이었다. 그 말을 듣는 순간 정말로 정신이 번쩍 들었다. 새로운 진실을 확인한 기분이었고, 개발자를 업으로 삼는 사람이 감당해야 할 무게가 느껴지기도 했다. 더불어 짧은 순간이었지만 자신을 되돌아봤다. 그저 코드를 몇 줄을 입력하여 기능 구현만 하면 충분하다는 안일한 생각으로 프로젝트에 임했던 것은 아닐까 하는 반성의 순간을 맞이하게 됐고, 앞으로 좋은 개발자가 되기 위해 마음에 새겨야 할 태도랄까... 어떤 직업적 책임감에 대해서도 생각해보는 계기가 되었다.
기억에 남는 또 다른 순간이 있었다면 바로 프론트엔드와 협업을 할 때였다. 위코드 멘토들이 항상 소통의 중요성에 대해 강조하곤 했었는데, 실제 프로젝트를 경험해보니 어째서 협업에서 소통이 중요한지를 깨달을 수 있었다. 웹 개발의 두 가지 분야인 프론트엔드와 백엔드의 관계성은 참으로 오묘하다. 웹 제작이라는 공동의 목표를 위해 일한다는 공통점이 존재하는 반면, 각자가 맡은 업무의 성질이 다르다는 차이점도 존재한다. 백엔드는 데이터를 처리하여 전달하고, 프론트 엔드는 전달받은 데이터를 시각적으로 표현하는 일을 맡는다. 사용하는 언어와 기술도 다르다. 위코드에서 백엔드는 Python과 Django를, 프론트엔드는 Javascript와 React를 사용한다. 이렇다 보니 서로의 업무 영역에 대한 이해도가 거의 백지상태에 가깝다. 참으로 재미있지 않은가. 함께 일하는 사이지만 프론트에겐 백엔드의 컴퓨터 화면이, 백엔드에겐 프론트의 컴퓨터 화면이 마치 외계 종족의 난해한 문자처럼 낯설기만 한 것이다.
하지만 다름을 이유로, 강 건너 불 보듯 서로를 구경만 할 순 없는 노릇이다. 이들에겐 웹 사이트를 만들어야 한다는 공동의 과제가 있기 때문이다. 그래서 다름으로 인한 몰이해, 소통 불가능성, 무관심 등의 장애물은 극복되어야 할 대상이 된다. 이는 바꿔 말하면, 이러한 것들이 극복되지 못하는 순간 팀워크가 무너지고 표류할 가능성이 있음을 의미한다. 프로젝트를 하면서 내가 느낀 어려움도 이와 비슷했다. 프론트엔드의 업무에 대해 모르니 그들이 내게 원하는 것이 무엇인지를 정확하게 파악하기 어려웠고, 그들이 사용하는 언어와 기술을 모르니 그들이 겪고 있는 상황과 문제에 공감하기 힘들었다. 프론트엔드가 난관에 봉착하면 도와주고 싶은 마음은 굴뚝같았으나, 아는 게 없어 가만히 있을 수밖에 없는 무력함도 느꼈다. 때론 서로가 같은 일을 하는 동료이지만 전혀 다른 차원에 사는 사람들처럼 느껴진 적도 있다. 가장 힘든 점은 이 모든 간극을 극복할 방법이 단 한 가지, 바로 말과 글뿐이라는 사실이었다. 의사소통을 잘하는 것이 얼마나 중요한지를 새삼 깨닫는 시간이었다.
어찌 보면 프론트와 백엔드의 소통이 연애하는 것과 비슷하다는 생각도 든다. 연애는 너무나도 다른 두 사람이 만나는 과정이다. 살아온 배경도, 좋아하는 것도, 가치관도 다른 존재의 만남에는 언제나 갈등의 위험이 도사리고 있다. 사실 당연한 이야기다. 서로 다른 삶의 규칙을 고수해온 사람들이 연애를 시작하면 서로의 영역에 침범할 수밖에 없고, 그 과정에서 작고 큰 마찰음이 발생할 수밖에 없다. 그래서 연애를 하면 대화를 많이 하게 된다. 서로의 오해를 풀기 위해서. 그리고 상대를 이해하기 위해서. 프론트엔드와 백엔드가 함께 일하기 위해선 많은 대화를 나눠야 하는 이유도 이와 비슷한 것 같다.
그래서 앞으론 프론트엔드와 더 많은 대화를 나눌 생각이다. 이번 프로젝트에선 소통이 충분하지 않아 발생한 몇 가지 문제들이 있었다. 변수명이 일치하지 않아 몇 시간 동안 통신이 되지 않았던 적도 있었고, 불필요한 데이터를 보내서 프론트엔드를 당황하게 만든 적도 있다. 전체 프로젝트의 진행을 방해할 정도로 커다란 문제는 아니었지만, 그렇다고 무시하고 넘어갈 작은 문제도 아니기에 앞으론 비슷한 문제가 발생하지 않도록 조금 더 노력해야겠다. 이를 위해선 소통의 양을 늘리는 일이 필수인 것 같고, 더불어 소통의 질도 높일 수 있다면 금상첨화일 것이다.
위코드에 오기 전 스스로 질문을 던진 적이 있다. 부트캠프에 가면 무엇을 얻을 수 있을까? 당시에 내가 내린 질문의 답은 '기술'이었다. 현업 개발자로부터 현업에서 사용되는 기술과 테크닉을 익혀 비전공자로서의 약점을 보완하는 것이 부트캠프에 등록하는 이유라고 생각했다. 하지만 지금은 생각이 바뀌었다. 해답은 아무래도 '기술' 아닌 '태도와 방향성'에 있는 것 같다. 기술은 빠르게 변한다. 영원한 기술은 없기에, 그저 몇 가지 기술을 습득한 것만으로 개발자가 되었다고 말하기엔 다소 무리가 있어 보인다. 반면 태도는 지속성을 갖는다. 마치 몸의 근육을 키우는 것처럼 잘만 다듬어 나간다면 태도는 더욱더 튼튼해져 나를 보호해주는 훌륭한 무기가 된다. 위코드에서 배울 수 있는 것이 바로 이러한 튼튼한 개발 근육을 만들어나가기 위한 기초 체력을 기르는 일이라 생각된다. 개발자로서 마음속 깊이 간직해야 할 자세를 하나씩 배우는 것. 그리고 이를 자신의 개성에 맞게 흡수하는 것. 그리고 이를 통해 나다운 개발자로 성장해나가는 것. 이것이 부트캠프에서 얻어갈 수 있는 가장 큰 수확이 아닐까.