C++를 대체할 언어를 찾던 시절부터 러스트 생태계에서의 실패와 성취, 그리고 앞으로의 방향까지—4년에 걸친 러스트 여정에서 얻은 교훈을 돌아본다.

사진: Tushar Das / Unsplash
많이 망설인 끝에 마침내 이 글을 쓴다. 단지 2년 전의 러스트 여정 회고의 연장선이 아니라, 그 이후 얼마나 많은 것이 변했는지 기록해 두기 위해서다. 요즘 흔히 보이는 것처럼, 한 손엔 십자가를 들고 다른 손엔 성수를 든 러스트 전도사에게 감화되어 개종한 것도 아니었다. 제단 초청도 없었고, 기적도 없었다. 다만 끝끝내 무시할 수 없는 언어가 있었을 뿐이다. 그런데 시작은 어떻게 됐을까?
당시 나는 전기공학과 3학년이었고, 임베디드 시스템에 대한 애정, 범용 프로그래밍, 그리고 눈길을 끄는 그 밖의 모든 것 사이에서 줄타기를 하고 있었다. 이미 C++를 접해 보긴 했지만, 뭔가 의미 있는 것을 만들려 하면 늘 가파른 오르막을 오르는 기분이었다. 지금 돌이켜 보면 그 고생은 제한된 경험, 학습 환경, 그리고—어쩌면—C++ 자체가 섞인 결과였을 것이다. 그러는 사이 자바스크립트가 내가 만지는 것마다 스며들기 시작했다. 지금도 그렇다. 요즘은 주로 Vue 형태로 말이다. 하지만 그 이야기는 다음에 하고, 이번 글에서는 내 ‘탈출(Exodus)’부터 시작해 여기까지 오기 위해 싸웠던 골리앗들 을 다시 되짚어 보고자 한다.
용기, 긴박함, 그리고 점점 쌓여 가는 좌절감이라는 ‘불경한’ 조합에 이끌려, 나는 2021년 12월의 어느 기간을 C++를 대체할 무언가를 찾느라 인터넷을 헤집고 다녔다. 자바스크립트보다 더 강력하면서도, 자바스크립트처럼 어디서나 배포 가능한 무언가—자바스크립트가 내 워크플로를 조용히 식민지화하던 그 방식 그대로—를 원했다. 수많은 후보들을 마주쳤고, 그 대부분은 이제 기억에서도 사라졌지만 러스트만큼은 달랐다. 노골적인 매혹이었는지, 아니면 그 만트라에 담긴 유혹적인 약속—“모두가 효율적인 소프트웨어를 작성할 수 있도록 힘을 실어 주는 언어” —때문이었는지, 혹은 “러스트 엔지니어는 연봉이 두둑하다”라는 그럴듯한 말 때문이었는지, 아직도 정확히는 모르겠다.
초기의 러스트 생활은 우아함과는 거리가 멀었다. 짧은 승리와 긴 혼란 사이를 오가며 진도가 더뎠다. 그럼에도 좌절과 작은 성취 사이 어딘가에서, 조금씩 맞물리기 시작했다. 그리고 그 경험을 회고 글로 남겼을 때쯤에는, 이미 생태계에 2년째 깊숙이 들어와 있었다—상처투성이였지만 확신에 찬 상태로.
대체로 나는 러스트가 어렵고도 보람 있다는 점이 좋았다. 동시에 내가 Go를 선택하지 않았다는 사실이 싫기도 했다. 오해는 말라. Go는 훌륭한 도구다. 나는 운 좋게도 Go를 일주일도 안 돼 배웠고, 올해만 Go로 프로덕션 코드베이스 3개를 출시했다. 하지만 지난 4년의 경험을 돌아보면, 러스트를 고른 건 올바른 선택이었다고 말할 수 있다.
단도직입적으로 말하겠다. 러스트는 어렵다—매우 어렵다. 꼭 러스트 자체가 어렵다기보다는, 내 배경 때문이었다. 나는 동적 타입이 지배하던 세계에서 왔다. 변수는 두려움도 편애도 없이 자유롭게 여기저기 전달되었다. 그 자유가 익숙했고, 러스트는 그와 정반대였다.
TypeScript 경험이 어느 정도는 도움이 됐지만, 러스트의 소유권 규칙(ownership rules)을 대비시키기엔 역부족이었다. 사실 초반엔 도움이 되지 않았다—솔직히 말해 지금도 완전히는 아니고, 조금도 아니고 🌚.
하지만 자바스크립트의 죄로 되돌아가고 싶은 유혹의 골짜기를 넘어서자, 무언가가 바뀌었다. 힘이 솟고, 단단해지고, 끝까지 ‘선한 싸움’을 싸울 준비가 됐다고 느꼈다—그리고 마침내 영광의 면류관을 받기까지.
내 첫 번째로 정말 고통스러웠던 러스트 실패 는 인턴십 면접에서였다. 경험이 거의 없었다—솔직히 말하면 “준-프로덕션 수준”의 경험도 없었다. 그래도 시작할 때와 마찬가지로, 나는 용기와 열정, 그리고 속도에 대한 긴박한 욕구가 반반씩 섞인 연료로 움직이고 있었다.
그래서 지원했다. 1차 면접은 통과했다. 그 다음은 기술 과제였고—얼마 지나지 않아, 오퍼는 다른 사람에게 갔다. :)
그 경험은 내가 아직 배워야 할 게 얼마나 많은지 뼈저리게 보여줬다. 그 후로 나는 그나마 자격이 있을 것 같은 러스트 포지션들에 지원하기 시작했다—대개 최종 라운드까지 가지도 못했다. 그래도 매번의 만남은 내 기술을 더 날카롭게 만들었고, 이전보다 더 준비된 상태로 다음을 맞이하게 해줬다.
현재 기준으로, 나는 분산 시스템, 개발자 도구, 그리고 러스트로 만든 프로덕션 서비스들을 구축해 온 3년+ 경력의 백엔드 중심 소프트웨어 엔지니어다 —적어도 내 CV에는 그렇게 적혀 있다. 어쩌면 난 더… 🤔—

RustConf, 2025
일하지 않을 때는 비공식 러스트 전도사 역할을 맡아, 방심한 사람들의 목구멍에 러스트 복음을 즐겁게 쑤셔 넣거나(…), 아니면 내 X 계정 덕분에 재미로 Go를 디스하기도 한다.
요즘 내 흥분은 러스트와 과학 계산(scientific computing)의 교차점에 있다. 이 분야에서 러스트 커뮤니티가 만들어 가는 모멘텀을 보면, 나도 R&D 엔지니어로 성장해 갈 수 있을 것 같다. 올해 그들의 온라인 밋업 중 하나에 참석할 기회가 있었는데, 그 방향성을 더 굳혀 주었다.
또한, 내가 이미 “소유”하고 유지보수하는 것들을 넘어, 오픈 소스 러스트 프로젝트에 더 적극적으로 기여하고 싶다. 그리고 언젠가는 러스트 언어 자체에 코드 기여를 해보는 날도 올지 모른다.
다음에 또 길이 교차할 때까지.
해피 해킹.