평소엔 번역할 때 개인적인 생각을 별로 쓰지 않는 편인데, 이번엔 기술적인 내용이 아니라서 앞부분에 개인적인 감상을 좀 끄적여 보았다. 번역문만 보고싶은 분들은 영문 제목이 나올 때까지 스크롤을 내리시길 🙂
얼마 전 트위터를 보다가 문득 조 암스트롱(Joe Armstrong)이 세상을 떠났다는 소식을 들었다. 조 암스트롱은 프로그래밍 언어인 얼랭(erlang)을 설계한 사람 중 한 명으로, 위키피디아에 의하면 올해로 68세로 아주 많지는 않은 나이지만, 폐섬유증으로 인한 감염으로 인해 조금 일찍 세상을 떠나게 된 것 같다.
사실 나는 프론트엔드 개발을 주로 하기 때문에 얼랭에 대해서는 별로 접할 기회가 없었다. 그나마 알고 있는 사실은 WhatsApp의 백엔드가 얼랭으로 되어 있다는 것과, 병행성 프로그래밍에 특화된 언어라는 정도였다. 하지만 함수형 프로그래밍에 관심이 많다보니 여기저기서 조 암스트롱의 글이나 강의 영상을 볼 수 있었고, “백발이 되어서도 열심히 활동하시는 멋진 개발자 할아버지” 정도로 생각하고 있었다. (2018년에도 조 암스트롱이 강연하는 영상을 여기, 저기서 쉽게 찾을 수 있다)
이 날 트위터에는 많은 추모글들이 올라왔고, 심지어 조 암스트롱의 강의를 담은 예전 유튜브 영상에도 많은 추모의 댓글이 달렸다. 대부분 조 암스트롱으로부터 많은 감명을 받았던 사람들의 감사의 마음이 담긴 글들이었다. 그러다 문득 Good bye Joe 라는 추모글을 보고는, 여러 가지 생각이 떠올라 굳이 시간을 내서 번역을 하기로 했다.
사실 이 글을 생각없이 읽다가 감자기 큰 감명을 받아서 번역을 하게 되었는데, 처음에는 나 스스로도 이유를 잘 몰랐다. 하지만 곰곰히 생각해보니 아마도 아쉬움과 부러움의 감정이 교차하고 있었던 것 같다.
나는 프로그래머로서 지금 시대에 살고 있는 건 큰 행운이라고 생각한다. 그 이유는 첫째로 컴퓨터가 엄청난 속도로 세상을 변화시키고 있는 모습을 거의 처음부터 눈으로 지켜볼 수 있기 때문이고, 둘째는 그럼에도 불구하고 그 시대를 처음 열었던 전설과 같은 프로그래머들이 아직 살아있기 때문이다. 내가 사랑해 마지않는 LISP를 처음 만든 존 매커시가 세상을 떠난 것도 겨우 8년 전이고, 스몰토크를 만든 앨런 케이나 스킴을 만든 가이 스틸 등의 노장들은 지금까지도 활발하게 활동하며 젊은 프로그래머들에게 많은 영감을 주고 있다.
아마 부러움의 감정은 이런 전설같은 분들을 직접 만나서 프로그래밍에 대한 이야기를 할 수 있는 경험 때문인 것 같다. 한국은 아직 IT의 역사가 짧기 때문에 이런 전설적인 프로그래머가 거의 없기도 하거니와, 있다손 치더라도 조 암스트롱처럼 컨퍼런스에 나와서 젊은 프로그래머들과 격없이 어울리는 모습은 쉽게 상상하기가 힘들다. 물론 언어나 거리의 장벽만 극복한다면 직접 외국으로 찾아갈 수도 있겠지만, 아무래도 그런 문화를 자연스럽게 접해온 사람들이 부러운 것은 사실이다.
아쉬움의 감정은 이러한 전설같은 프로그래머들이 이제 하나 둘 세상을 떠나고 있다는 사실과, 국내에서는 이런 추모의 광경을 보기가 힘들다는 사실 때문인 것 같다. 이제 프로그래머가 40대에 은퇴해서 치킨집 사장이 된다는 이야기는 옛말이 되었지만, 여전히 한국에서는 롤 모델로 삼을만한 60대 이상의 프로그래머를 찾기 어려운 게 사실이다. 그럼 면에서 조 암스트롱처럼 70이 다 된 나이에도 끊임없이 열정적으로 새로운 아이디어를 생각해내고 탐구하는 모습이야말로 프로그래머들이 롤 모델로 삼을 수 있는 가장 이상적인 모습이 아닐까 싶다. 국내 개발자 커뮤니티에서도 기술적인 내용 외에 이런 훌륭한 프로그래머들에 이야기을 많이 나누면서, 프로그래머의 미래에 대해 좀 더 긍정적인 이야기들이 많이 오갔으면 하는 바람이다.
한동안은 아쉬운 마음에 조 암스트롱 할아버지의 강연들을 찾아서 보게될 것 같다. 잘가요. 조.
Goodbye Joe
원문 주소 : https://ferd.ca/goodbye-joe.html
조 암스트롱은 얼랭(earlang)의 아버지로 잘 알려져 있고, 얼랭 커뮤니티는 비교적 작은 규모로 친밀하게 유지되어 왔다. 조가 참석한 얼랭 컨퍼런스(얼랭 팩토리, 얼랭 사용자 컨퍼런스, CodeBEAM)를 처음 가 보면 누구나 비슷한 반응을 보인다. 이 커뮤니티가 얼마나 열려 있는지(accessible)를 보고 경탄하게 되는 것이다. 조나 로버트 같은 (누구나 이름만 들어도 알 수 있는) 유명인들이 나와 같은 공간에서, 친근하게, 기꺼이 모든 참석자들과 대화하고 있는 분위기에서, 마치 내가 누구든지 상관없이 환영받고 있다는 느낌을 받게 된다.
오늘, 조가 세상을 떠났다는 소식을 들었다. 나는 조와 아주 친한 사이는 아니었지만, 지난 십여년 동안 알고 지내며 여러 컨퍼런스에서 만날 때마다 대화를 나누곤 했다. 조가 나의 커리어에 커다란 영향을 끼쳤음은 두말할 것도 없었기에, 나는 조에 대해, 그리고 그가 남긴 영향력에 대해 작은 글이라도 써야겠다고 생각했다. 내 글이 감히 그에 대한 정당한 평가가 될 수는 없겠지만, 이 글을 꼭 써야만 할 것 같았다.
십여년 전, 나는 PHP를 사용해서 데이팅 사이트를 만들고 있었고, 대학에서 멀티미디어 프로그램을 갓 마친 상태였다. 그 이전에 나는 C, Python, Scheme, Javascript 등을 조금씩 사용했었고, 이후 몇 개의 언어들을 재미로 사용해 본 정도였다. 나는 채팅 시스템을 새로 만들 방법을 찾아야 했는데, 당시 페이스북이 그들의 첫 번째 채팅 시스템을 얼랭으로 만들었고(다시 C++로 작성한 이후 왓츠앱을 인수하기 전에), 팀장님이 조 암스트롱의 “프로그래밍 얼랭(초판)” 사본을 내 책상 위에 던져놓았다.
이것이 나와 얼랭의 첫 만남이었고, 그 인연은 지금까지 계속되고 있다. 조의 책은 마치 본인처럼 친근하고 이해하기 쉬웠다. 조는 얼랭의 기본 철학이 무엇인지, 왜 이런 설계를 했는지, 그리고 얼랭이 실현하고자 하는 장애 허용(Fault tolerance)을 위한 핵심 접근 방식이 무엇인지를 자신만의 방법으로 설명했다. 이 책은 특정 언어에 대한 책 중에서, 독자로 하여금 코드를 작성할 수 있게 해 줄 뿐 아니라 “왜” 이런 방식으로 코드를 작성해야 하는지를 이해시켜주는 보기 드문 책이다. 얼랭에 있는 기능은 단지 멋진 기능이기 때문이 아니라, 장애 허용에 필요하기 때문에 존재했다. 조가 말한 것은 어디에든 적용 가능했다.
나는 조가 쓴 글이라면 뭐든 찾아서 읽었던 것 같다. 그 중 몇 가지는 다음과 같다.
- 프로그래밍 얼랭
- 세부적인 모든 원칙들과, 언어에 대한 더 많은 확장을 포함한 그의 박사 논문(thesis). 장애 허용을 목표로 하는 사람이라면 꼭 읽어야 할 통합적인 시도이다.
- 최근 블로그
- 오래된 블로그
- 프롤로그로 구현된 첫 얼랭의 첫 번 째 버전이 담겨 있는 오래된 연구 논문(Paper)
- 얼랭 메일링 리스트에 있는 많은 글들
조의 글에서 언급된 내용 중에서 내가 읽은 다른 어떤 것보다 멋진 말은, “개발자들은 실수를 하게 마련이며, 그것을 완전히 막으려고 하면 안된다”는 말이다. 대신 우리는 그 실수들을 “잘 대응해야(cope with)” 한다. 조는 단지 언어에 대한 이야기를 하는 것이 아니라, 전체 시스템을 작성하는 방법을 가르쳐 주는 길 위에 우리를 내려놓았다. 하지만 조의 조언과 글은 여기서 멈추지 않는다. 조는 항상 시스템적 단순성(systematic simplicity), 독립적인 명료함(self-contained straightforwardness), 그리고 모든 것에 대한 새로운 관점을 주는 오랜 컴퓨팅 역사 이야기의 열렬한 팬이었다.
조는 영원히 완성될 수 없는 소프트웨어에 대해 생각하는 대신, 너무나 간단해서 실제로 완성될 수 있는 소프트웨어를 원했다. 우리가 작성하는 프로그램의 가치는 얼마나 확장 가능하고 조합 가능한가로 판단되어야 하며, 얼마나 실현 불가능한가로 판단되어선 안된다. 뿐만 아니라, 조는 영원히 동작하는 코드를 원했다.
조의 블로그 포스트 중, “내가 가장 좋아하는 얼랭 프로그램“은 이 생각을 완벽하게 담고 있다. 조는 단순한 아이디어로 시작해서, 그 아이디어를 최대한 밀어붙여서 그 안에 숨겨져 있던 엄청난 통찰을 발견해내는 사람이었다. 그리고 조는 모든 사람들과 그 통찰을 나누었다.
조는 하루에도 수천 가지의 아이디어를 생각해내는 사람이었다. 아마 그 중 몇 가지는 좋거나 실용적일 수도 있다. 이들 각각의 아이디어에 잠재된 원칙들을 찾아내고, 실제 세상에서 사용 가능하도록 만들려면 아마 제대로 된 팀을 구성해야 할 것이다. 하지만 조는 전혀 개의치 않고, 항상 활기차고 행복하게 새로운 아이디어와 개념들을 탐구했다. 몇 가지는 나쁜 아이디어일 수도 있고, 몇 가지는 훌륭한 아이디어일 수도 있다. 실제 결과가 어떻게 될 지는 아무도 모르지만, 최소한 열정을 갖고 훌륭한 논의를 하게 될 것이다. PDF가 코드 조각에 대한 문서이면서, 동시에 컴파일 된 결과물이어야 하는가? 만약 어떤 코드 조각도 이름을 갖지 않고, 단지 전역적으로 유니크한 해시만을 사용하면 어떨까? 모든 사람이 하던 일을 멈추고 프로그램간 조합성(inter-program composability)를 위해서 노력하면 얼마나 좋을까!

Photo by Brian Troutwine
컨퍼런스에서 모두가 원을 그리고 서서 대화를 나누고 있을 때, 만약 당신이 갑자기 조의 주의를 끌게 된다면, 그는 당신에게 한 걸음 한 걸음, 완전하게 집중된 상태로, 결국 얼굴을 맞닿을 만큼 다가갈 것이고 , 그로 인해 원이 망가지게 될 것이다. 당신은 큰 소리의 웃음과 함께 한동안 조의 온전한 관심을 독차지할 것이다. 그는 항상 이런 식이다. 당신이 어떤 주제에 대해 이야기하기 위해 조를 불렀더라도, 그가 처음 생각하던 것보다 더 흥미로운 것을 발견했다면, 그는 당신의 주제와 상관없는 새로운 것에 대해 계속해서 이야기할 지도 모른다. 하지만 아무도 그것을 싫어하지 않는다. 왜냐하면 그게 바로 조이기 때문이다. 그리고 그의 이야기는 언제나 재미있기 때문이다.
좀 더 개인적인 이야기를 하자면, 조는 내가 얼랭에 처음으로 기여했을 때 매우 열정적인 관심을 보여주었다. 그는 Learn You Some Erlang의 서문을 써 주었고, 항상 이야기 상대가 되어 주었다. 조는 나의 커리어에 가장 중요한 영향을 끼쳤고, 그에게서 많은 것을 받았다. 그는 자신도 모르게 나에게 길을 알려주었고, 나는 지금도 기꺼이 그 길을 걷고 있다.
조는 소프트웨어 외에도 음악, 조판(typesetting), 창의적 글쓰기를 너무나 좋아했고, 이것들에 대해 이야기하는 것을 즐겼다. 물론 소프트웨어만큼 전문적인 것은 아니었지만, 조는 이런 일들을 할 때에도 항상 똑같은 열정과 즐거움을 갖고 있었다.
조는 얼랭 세상의 한 부분이었으며, 항상 사람들이 어떤 말을 해야 하는지에 관심을 가졌다. 기술에 대한 조의 열정과 즐거움은, 심지어 그가 60대일 때에도 여전히 아주 높았으며, 나는 내가 평생 그 정도의 열정과 즐거움을 가질 수 있을 지도 잘 모르겠다. 그런 의미에서 나는 솔직히 조가 부럽다. 나는 그가 없는 커뮤니티가 어떤 느낌일 지 상상하기가 힘들다. 조는 겸손했다. 조는 모두에게 열려 있었다. 조는 활기찬 사람이었다. 조는 창의적이었다. 조의 업적은 단지 코드에만 있는 것이 아니라, 항상 그가 중심이 되어 이끌던 커뮤니티에 있다. 조가 그리울 것이다.
안녕 마이크,
안녕 로버트,
잘 가요 조.