가끔 주니어 개발자가 저에게 조언을 구합니다. 그럴 때마다 잠깐 멈칫하게 됩니다. 해줄 말이 없어서가 아니라, 해줄 수 있는 말의 대부분이 이미 유통기한이 지났다는 걸 알기 때문입니다.
2001년 서울에서 시작했습니다. “웹 개발자”라고 하면 부모님께 따로 설명을 드려야 하던 시절에 웹 시스템을 만들었습니다. 그다음 도쿄에서 9년. 소프트뱅크, JAL, 토이저러스의 매장을 운영하는 Java 커머스 플랫폼을 만들었습니다. 배포 한 번 잘못하면 어느 사무실에선가 저녁 뉴스감이 되는 시스템들이었죠. 그리고 토론토. 지난 7년은 도시와 법원이 입찰을 진행하는 조달 소프트웨어를 만들고 있습니다. 세 나라, 세 업무 언어, 갈아탄 스택은 세다가 잊어버렸습니다.
불편한 사실은 이겁니다. 그 시간 중 어느 지점을 골라도 마찬가지입니다. 그때는 최선이었던 기술 조언이라도 지금 그대로 꺼내 말하면 틀린 말이 됩니다. 제가 통달했던 프레임워크는 박물관에 있습니다. 회의에서 목소리 높여 지켰던 설계 방식은 그 뒤로 두 번은 바뀌었습니다. 2008년에 힘들게 얻은 견해들을 적어서 지혜라고 건넸다면, 그건 지혜가 아니라 부채를 건넨 셈이 됐을 겁니다.
그래서 안 해주는 말이 몇 가지 생겼습니다. 어떤 프레임워크에 걸어라. 다음엔 어떤 언어가 뜬다. 하루에 몇 시간을 갈아 넣어라. 전부 일기예보입니다. 주니어에게는 예언자의 목소리로 전해지는 일기예보보다 나은 게 필요합니다.
살아남는 건 그보다 훨씬 적은 몇 가지뿐입니다. 2001년 서울에서도 맞았고, 2010년 도쿄에서도 맞았고, 오늘 아침 토론토에서도 여전히 맞는 것들입니다.
일에 대한 지식은 프레임워크보다 오래 삽니다. 일본에서 쓴 코드는 한 줄도 남아 있지 않습니다. 다시 쓰였고, 대체됐고, 폐기됐습니다. 지금도 매주 꺼내 쓰는 건 그 시스템들이 가르쳐 준 것들입니다. 주문과 재고와 정산이 실제로 어떻게 돌아가는지, 어떤 상태가 있을 수 있는지, 무엇이 허용되고 무엇이 안 되는지, 그리고 무엇이 절대 두 번 일어나면 안 되는지 같은 것들입니다. 플랫폼은 발밑에서 끊임없이 바뀝니다. 문제 자체는 거의 바뀌지 않습니다. 뭘 잘하게 될지 고를 수 있다면, 어디서든 통하는 쪽을 고르세요.
끝에서 거꾸로 갑니다. 저는 기능 목록에서 시작하지 않습니다. 끝난 장면에서 시작합니다. 송장이 출력되고, 택배가 발송되고, 낙찰 통지가 낙찰자에게 나가는 장면. 거기서 한 걸음 전에 무엇이 갖춰져 있어야 하는지, 그 한 걸음 전에는 무엇이 필요한지 되짚어 내려가면 코드에 닿습니다. 이렇게 하면 시스템은 거의 스스로 설계됩니다. 그리고 마지막 장면에 도움이 안 되는 기능은 만들고 나서가 아니라 만들기 전에 정체를 드러냅니다.
쓰는 것보다 읽는 게 훨씬 많습니다. 2001년에는 아무도 말해주지 않았지만, 제 경력에서 가장 정확했던 비율입니다. 남의 코드, 한때 남의 것이었다가 이제 법적으로 제 것이 된 10년 묵은 코드, 로그, 명세, 변호사가 쓴 RFP. 코드를 쓰는 건 일 중에서 눈에 보이는 10분의 1일 뿐입니다. 빠르게, 너그럽게, 그러나 의심해야 할 자리에서는 의심하면서 읽는 법을 익히면, 어느 나라에서든, 어느 스택에서든, 매일 이자가 붙습니다.
신뢰는 복리로 쌓입니다. 세 나라 모두에서 깨끗하게 환전된 유일한 통화였습니다. 마감을 지키고, 지킬 수 없을 때는 마감이 대신 말하기 전에 먼저 말하세요. 나쁜 소식은 직접, 일찍 전하세요. 제가 지켜본 가장 빨리 성장한 엔지니어들은 화려한 사람들이 아니었습니다. 아무도 재확인할 필요가 없는 사람들이었습니다.
요즘 주니어들은 제가 했던 것보다 날카로운 질문을 합니다. 에이전트가 코드를 짜는데 이게 다 아직 의미가 있냐고. 저는 오히려 더 중요해졌다고 생각합니다. 저도 매일 코딩 에이전트와 일하는데, 그 도구들이 자동화하는 건 정확히 타이핑입니다. 애초에 오래가는 기술이 아니었던 부분입니다. 타이핑이 공짜가 된 뒤에 남는 일이 바로 이 몇 가지입니다. 결과물이 맞는지 알아볼 만큼 그 분야를 잘 아는 것, 어디로 가야 할지 알 만큼 목표를 아는 것, 비판적으로 읽는 것, 신뢰할 만한 사람인 것. 도구는 일의 비율을 바꿨을 뿐, 핵심은 그대로 남았습니다.
그리고 이게 누군가 조언을 구할 때 제가 머뭇거리는 진짜 이유입니다. 25년은 전수되지 않습니다. 누구의 25년도 그렇습니다. 제가 할 수 있는 정직한 일은 하나뿐입니다. 제가 서 있는 내내 움직이지 않은 땅을 가리키는 것입니다. 걷는 건 각자의 몫입니다.