두물머리에서 — 개발과 연구, 두 물길이 만난 자리
· Essay · 5 min
양수리에 가면 두 강이 만난다. 북에서 내려온 물과 동에서 흘러온 물이 서로 다른 속도와 온도를 지닌 채 한자리에서 몸을 섞는다. 사람들은 그곳을 두물머리라 부른다. 물은 만나는 자리에서 잠시 흐려지지만, 끝내 더 큰 강이 되어 바다로 간다.
나의 지난 몇 해를 한 장의 지도로 그린다면, 나는 아마 그 두물머리 언저리를 서성이는 사람으로 그려질 것이다.
두 개의 나라
2021년 무렵, 개발자라는 직업이 밀물처럼 세상의 이목을 끌던 때가 있었다. 그 시절의 지도는 단순했다. 개발은 개발의 나라였고, 연구는 연구의 나라였다. 두 나라는 국경을 맞대고 있었으나 서로의 말을 배우지 않았다. 한쪽에서는 출시와 지표와 속도가 통용되는 화폐였고, 다른 쪽에서는 가설과 증명과 인용이 통용되는 화폐였다. 환전소는 드물었고, 환율은 박했다.
개발자는 오늘 저녁에 돌아오는 피드백을 먹고 살았다. 연구자는 몇 해 뒤에야 돌아올지 모르는 대답을 기다리며 살았다. 같은 키보드를 두드리면서도 두 사람의 시계는 다른 속도로 갔다.
2019년, 대장간에 들어가다
나는 2019년에 코드의 세계에 들어섰다. 처음의 코드는 대장간의 쇠붙이 같았다. 두드리면 그 자리에서 소리가 났고, 달구면 그 자리에서 빛이 났다. 컴파일러는 무뚝뚝하지만 정직한 스승이어서, 나의 잘못을 단 한 줄도 눈감아 주지 않았다. 나는 그 정직함이 좋았다. 밤을 새워 두드린 것이 아침이면 형체를 갖추었고, 형체를 갖춘 것은 곧 누군가의 손에 쥐어졌다.
그 시절 나는 배웠다. 만든다는 것은 완성하는 일이 아니라 부러뜨리고 다시 벼리는 일의 무한한 반복이라는 것을. 무쇠가 강철이 되는 것은 불 속에서가 아니라, 불과 물을 오가는 담금질 속에서라는 것을.
2021년, 나룻배를 타다
2021년에 나는 학위과정을 시작했고, 같은 해에 학부연구생으로 연구실 문턱을 넘었다. 낮에는 코드를 짰고, 밤에는 논문을 읽었다. 사람들이 하나의 나라에 여권을 만들 때, 나는 두 나라 사이를 오가는 나룻배에 올라탄 셈이었다.
나룻배의 삶에는 멀미가 따랐다. 강 이쪽의 말과 저쪽의 말이 달랐다. 개발의 나라에서 "된다"는 것은 오늘 서버가 죽지 않는다는 뜻이었고, 연구의 나라에서 "된다"는 것은 통계적으로 우연이 아니라는 뜻이었다. 이쪽에서는 빠른 것이 미덕이었고, 저쪽에서는 엄밀한 것이 미덕이었다. 나는 자주 두 말을 헷갈렸고, 그래서 양쪽 모두에서 어색한 억양의 이방인이 되었다.
경계에 선 사람의 외로움이란 그런 것이다. 어느 잔칫집에 가도 손님이고, 어느 지도를 펴도 나의 자리는 국경선 위의 점선이었다. 개발자들 틈에서 나는 논문 이야기를 삼켰고, 연구자들 틈에서 나는 배포 이야기를 삼켰다. 삼킨 말들은 몸 안에 쌓여서, 이따금 밤에 혼자 있을 때 사무치게 올라왔다.
방황은 유랑이 되고
한동안 나는 그것을 방황이라 불렀다. 뿌리내리지 못하는 부평초 같다고, 이도 저도 아닌 어중간한 사람이 되어 가는 것은 아닐까 두려워했다.
그런데 언젠가부터 이상한 일이 벌어졌다. 연구실에서 벼린 물음이 서버실에서 대답을 얻었고, 운영에서 얻은 상처가 논문의 행간을 읽는 눈이 되었다. 논문은 나에게 "왜"를 묻는 법을 가르쳤고, 코드는 나에게 "어떻게"를 견디는 법을 가르쳤다. 왜를 모르는 어떻게는 요령이 되고, 어떻게를 모르는 왜는 공염불이 된다는 것을, 나는 두 나라를 오가는 뱃삯으로 배웠다.
돌이켜보면 방황이 아니라 유랑이었다. 방황은 길을 잃은 자의 걸음이지만, 유랑은 길을 넓히는 자의 걸음이다. 나룻배는 어느 기슭에도 뿌리내리지 못하지만, 바로 그 때문에 강의 전체 폭을 안다.
삼각주에서 주운 것들
두 물이 만나는 자리에는 모래가 쌓인다. 상류에서는 쓸려 내려가기만 하던 것들이, 물살이 서로를 껴안으며 느려지는 자리에서 비로소 가라앉아 땅이 된다. 사람들은 그 땅을 삼각주라 부르고, 삼각주는 어느 기슭보다 기름지다.
나의 교집합에서도 몇 알의 모래가 가라앉았다. 주운 것들을 적어 둔다.
첫째, 유행은 물살이고 원칙은 강바닥이다. 물살은 계절마다 바뀌지만 강바닥은 천천히 깎인다. 기술을 고를 때 나는 물살의 화려함보다 강바닥의 완만함을 본다. 이것은 연구가 가르쳐 준 눈이다.
둘째, 증명되지 않은 개선은 개선이 아니라 소망이다. 화려한 해법 앞에서 나는 먼저 저울을 찾는다. 측정할 수 없다면 자랑할 수 없고, 재현할 수 없다면 믿을 수 없다. 이것은 연구의 저울을 엔지니어링의 부엌에 들여놓은 것이다.
셋째, 코드는 언젠가 지워진다. 리포지토리는 폐가처럼 잊히고, 프레임워크는 유행 지난 옷처럼 벗겨진다. 그러나 설계에 담긴 사상은 남는다. 좋은 설계는 다음 사람의 손끝에서 부활하고, 좋은 물음은 다음 논문의 첫 문장에서 부활한다. 우리가 정말로 쌓는 것은 코드가 아니라 사상의 지층이다.
다시, 두물머리
이제 나는 두 나라 사이의 국경선을 두려워하지 않는다. 국경은 벽이 아니라 두물머리라는 것을 알았기 때문이다. 서로 다른 온도의 물이 만나 잠시 흐려지는 것은 섞임의 통과의례일 뿐, 흐려진 물은 끝내 더 깊고 넓은 강이 된다.
개발만 하던 시절의 나는 빠르게 흘렀으나 얕았고, 연구만 바라보던 시절의 나는 깊었으나 고여 있었다. 두 물길을 다 살고 나서야 나는 흐르면서 깊어지는 법을 조금씩 익히고 있다.
여전히 나는 나룻배 위에 있다. 다만 이제는 안다. 이 배가 닿아야 할 기슭은 애초에 없었다는 것을. 강 위에서 사는 삶도 하나의 온전한 삶이라는 것을. 그리고 언젠가 이 강이 바다에 닿으면, 개발의 물과 연구의 물을 나누던 경계 같은 것은 아무도 기억하지 않으리라는 것을.
물은 제 이름을 고집하지 않아서 바다에 이른다.