가장 어려운 규율은 아무것도 하지 않는 것이었다
이 프로젝트를 진행하며 익혀야 했던 가장 어려운 기술은 기술적인 것이 아니었다. 그것은 가만히 손을 놓고 있는 법을 배우는 것이었다. 무언가가 돌아가는 동안 내버려 두는 것 — 손을 뻗어 “도와주려” 하지 않는 것 — 이것이 내가 끝까지 추적했던 그 어떤 버그보다도 나에게는 훨씬 더 어려운 일로 드러났다. 알고 보니 나는 코드를 짜는 데에는 능하지만, 그것을 건드리지 않는 데에는 한참 서툴렀다.
직접 겪어 보기 전까지는 사소하게 들린다. 오랫동안 아무것도 하지 않는 것은 나에게 요구된 가장 어렵고 가장 중요한 일이었고, 나는 그 일에 형편없었다.
개입하고 싶은 충동
문제의 모양은 이렇다. 나는 무언가를 돌리기 시작한다 — 시간이 흐르며 펼쳐지는 것이 그 전부인 긴 프로세스를 말이다 — 그리고 몇 분도 채 지나지 않아 나는 그것을 마치 끓는 주전자를 지켜보듯 응시하기 시작한다. 그리고 그것이 나빠 보이는 순간, 초반의 모든 하락, 모든 흉한 구간, 마음에 들지 않는 방식으로 숫자가 처지는 모든 시기마다, 나는 그것을 멈추고, 무언가를 바꾸고, 다시 시작해야 한다는 거의 신체적인 충동을 느꼈다.
기다림은 낭비처럼 느껴졌다. 한 번의 실행이 가망 없어 보이는 동안 가만히 앉아 있는 것은 무책임하게, 거의 게으른 일처럼 느껴졌다. 유능한 사람이라면 진작에 고쳤을 문제를 곪도록 방치하고 있는 것만 같았다. 그래서 나는 개입했다. 끊임없이.
모든 개입은 작은 과적합이었다
부끄러울 만큼 오랜 시간이 걸려서야 이해하게 된 것은, 그 개입들이 실제로 무엇이었는가 하는 점이다. 짧고 잡음 가득한 구간에 반응해 손을 뻗어 무언가를 바꿀 때, 나는 문제를 고치고 있던 것이 아니었다. 나는 나 자신의 결정을 무작위성에 맞춰 끼워 맞추고 있었다.
나는 마침 내가 보고 있던 마지막 몇 번의 흔들림에 프로세스 전체를 튜닝하고 있었다 — 그렇게 짧은 구간에서는 무엇에 대해서도 사실상 아무런 진짜 정보를 담고 있지 않은 흔들림에. 그 작은 “수정” 하나하나는 손으로 직접 하는 과적합이었다. 가장 최근의 잡음에 맞추려 작업을 비트는 것, 바로 코드에서는 피해야 한다고 알고 있던 그 죄를, 대신 내 안절부절못하는 손가락으로 저지르고 있었던 것이다. 나는 소프트웨어 안에는 과적합에 대한 세심한 방어막을 쌓아 두고, 정작 나 자신 안의 가장 큰 구멍은 활짝 열어 둔 채 두었다.
짧은 구간에서는 잡음이 신호처럼 보인다
이 함정을 그토록 효과적으로 만드는 것은, 충분히 짧은 구간에서는 잡음이 신호를 완벽하게 흉내 낸다는 점이다. 무작위로 나쁜 구간은 진짜 문제와 정확히 똑같아 보인다. 무작위로 좋은 구간은 성공과 정확히 똑같아 보인다. 그 순간에는 더 뚫어지게 본다고 해서 둘을 구별할 방법이 없다 — 그리고 더 뚫어지게 보는 것이 내 전략의 전부였다.
그래서 내가 했던 거의 모든 초반 반응은, 내가 판결로 착각한 동전 던지기에 대한 반응이었다. 나는 나쁜 결과가 몇 번 연달아 나오는 것을 보고는 접근법이 망가졌다고 결론짓고 그것을 허물어 버렸다 — 정직한 진실은, 나쁜 결과가 몇 번 연달아 나오는 것이야말로 제대로 작동하는 것에서조차 때때로 마땅히 기대해야 할 모습이라는 것이었는데도 말이다. 나는 잡음 속에서 의미를 읽어 내고 있었다.
진짜 버그는 내 불안이었다
결국 나는 실제 결함이 어디에 있는지를 인정해야 했다. 그것은 실행에 있지 않았다. 그것은 내 안에 있었다 — 구체적으로는, “이건 작동하지 않는다”와 “이건 아직 나에게 아무것도 다 말하지 않았다”의 차이를 구별하지 못하는 무능함에. 이 두 상태는 바깥에서 보면 똑같아 보이고, 나는 하나가 다른 하나로 결판날 때까지 기다릴 인내심이 없었다.
그 밑바닥에는 바쁘다고 느끼고 싶은, 눈에 띄게 무언가를 하고 있고 싶은, 내 불편함을 행동으로 바꾸고 싶은 욕구가 있었다. 그리고 그 욕구는 중립적인 것이 아니었다. 그것은 내가 돌리고 있던 바로 그 실험들을 적극적으로 망가뜨리고 있었다. 그 실험들이 무언가를 의미하려면 시간과 정적이 필요했는데, 나는 계속 그 둘 다를 주지 않았기 때문이다.
인내를 미리 약속하기
마침내 찾아낸 해법은 기발하다기보다 절차적이었고, 그 무뚝뚝함에는 약간의 겸허함이 깃들어 있었다. 무언가를 시작하기 전에, 나는 그것이 얼마나 오래 돌아가도록 허용될지, 그리고 어느 쪽이든 무엇이 실제로 증거로 인정될지를 미리 정해 두곤 했다. 그러고 나서 — 이것이 어려운 부분이었다 — 나는 그 결정을 고수하고, 중간 과정이 어떻게 보이든 그것에 근거해 그것을 건드리는 일을 스스로에게 금했다.
핵심은 그 결정을 순간의 불안의 손에서 빼앗아, 미리 그것에 대해 숙고했던 더 차분한 버전의 나에게 맡기는 것이었다. 실시간으로 실행을 지켜보며 개입하고 싶은 가려움을 느끼는 버전의 나는, 자신이 조종간을 맡을 수 없다는 것을 거듭 증명해 왔다.
아무것도 하지 않는 것이 무언가를 하는 것이다
가장 큰 도움이 된 재구성은, 자제가 게으름이 아님을 깨달은 것이었다. 개입이 측정을 망가뜨릴 상황에서 개입하지 않기로 선택하는 것 — 그 자체가 능동적이고 의도적이며 진정으로 어려운 규율이다. 그것은 단지 아무것도 하지 않는 것처럼 보일 뿐이다. 안에서 보면, 모든 본능이 행동하라고 비명을 지르는 가운데 가만히 버티는 것은 세상에서 가장 힘든 일 중 하나다.
이 프로젝트의 진짜 작업 중 상당 부분은 바로 이런 방식으로 눈에 보이지 않는 것으로 드러났다. 극적인 수정이 아니라, 행동하는 것이 상황을 더 나쁘게 만들었을 때 행동하지 않는, 조용하고 화려하지 않은 행위 말이다.
더 깊은 교훈
이것은 진보 그 자체에 대한 내 생각을 서서히 바꿔 놓았다. 내가 초반의 “생산성”으로 여겼던 것의 상당 부분 — 재시작, 미세 조정, 끊임없는 만지작거림 — 은 그저 움직임으로 변환된 불안일 뿐이었다. 그것은 작업처럼 느껴졌다. 그중 꽤 많은 부분은 사실 성실함으로 치장된 손상이었다.
진짜 진보는, 내가 차츰 깨닫게 되었듯, 바깥에서 보면 종종 기다림처럼 보였다. 증거가 내 감정의 일정표에 맞춰 도착하라고 요구하는 대신, 그것이 제 속도로 쌓이도록 내버려 두는 것처럼. 가만히 있는 법을 배우는 것 — 무언가에 대해 판단을 내리기 전에 그것이 실제로 의미를 가질 만큼 충분히 오래 돌아가도록 두는 것 — 은 그 길에서 내가 익힌 그 어떤 기법 못지않게 중요한 것으로 드러났다. 시장은 결코 내가 바빴다는 이유로 나에게 보상하지 않을 것이었다. 오직, 가끔, 옳았다는 이유로만 보상할 것이었고, 옳기 위해서는 대개 먼저 인내해야 했다.
— 시그널도, 수익도 없습니다. 투자 자문이 아닙니다.