팀블라인드 소개
팀블라인드는 직장인이 회사 이메일로 가입하면 특정할 수 없는 회사 소속의 개인이 글을 자유롭게 남기며 소통할 수 있는 커뮤니티 서비스이다. 뉴스 기사에서 부당한 직장 이야기가 다뤄진다면 팀블라인드 커뮤니티의 캡처 화면은 흔히 접할 수 있다. 그런데 입사 이후에 미국에도 별도의 서비스가 있다는 것을 알게 되었다. 한국의 블라인드 서비스처럼 미국의 블라인드 서비스도 마이크로소프트, 구글, 아마존, 메타, 테슬라 등 유명한 기업에 종사하는 사람들이 많이 사용한다고 한다. 그런데 한국과 미국은 문화가 다르다 보니 서비스가 독립적으로 운영되고 정책에서 두드러지는 차이가 있다. 그래서 한국 개발자 분들이 미국 서비스까지 개발을 맡다가 점점 미국 서비스도 한국만큼 규모가 커지면서 미국/캐나다 등 각지의 개발자를 영입하여 서비스를 운영하고 있는 시기였다.
한국 서버 개발팀이 서비스를 운영하다가 미국/캐나다 개발자에게 바톤을 넘기면서 긴밀히 협력해야 하는 시점에 있었다. 주기적으로 서로의 업무 내용을 공유하기 위해 한국 시각 기준 오전 9~10시에 양국 개발팀이 서버 개발에 회의를 온라인으로 진행했다. 꼭, 업무 내용이 아니더라도 개발에 도움이 되는 툴을 소개하거나 좋은 개발 문화 만들기 위한 주제, 그리고 특정 기술을 주제로 발표하는 기회로 발표할 수 있는 시간을 만들어가고 있었다. 첫째로 희망자가 자원하거나 그렇지 않은 경우에는 순번을 정하며 발표를 준비하게 되었는데 그중 내가 발표를 자원하게 되었다.
발표를 준비한 이유와 준비하게 된 주제
순번으로 걸렸던 것도 아니고 지목 당한 것도 아니었다. 도대체 내가 왜 나서게 됐을까? 나는 개인적으로 두 번 다시 태어나더라도 이런 기회를 경험하기 어렵다는 판단이 든다면 본능적으로 나서게 되는 면이 있다. 그래서 미국 개발자들과 함께 교류하고 싶은 마음에 선뜻 나서게 됐다. 마치 그 시기에 “자바스크립트는 왜 프로토타입을 선택했을까”라는 글에 꽂혀 있었다. 당시에는 이 포스팅을 몇 번을 읽어도 전부 이해하기에는 역부족이었다. 그런데 내가 한번 다른 사람들을 대상으로 한 발표를 준비한다면 보다 잘 이해할 수 있지 않을까? 하는 마음에 이 어려운 주제를 선택했다.
어떤 개념을 이해하거나 정복해 보겠다는 다짐을 하면서도 막상 큰 벽에 부딪히게 되면 거기서 헤어 나올 방법을 찾아야 한다. 그러나 자발적인 동기로는 오래 가지 못한다. 마찬가지의 경우로 PT를 받는 것도 혼자서는 레그프레스 무게 만땅 치고 4개밖에 못 밀겠다고 생각하던 것이, 옆에 사람이 붙어서 개수를 세고 있으면 10개까지도 하게 된다. 그래서 발표도 외부 동기를 이용한다면 나의 역량을 한층 더 성장시킬 수 있을 것이라고 생각했다.
발표 준비와 과정
한국과 미국 개발자 분들을 대상으로 하다 보니까 한글로만 발표 자료를 준비할 수는 없었다. 그래서 통역하시는 분과 협업이 필요한 상황이었다.
통역하시는 분이 계셨지만, 굳이 내가 직접 영어로 말하고자 했던 이유가 있었다. 몇 번의 한/미 양국 개발자의 세미나를 들어 보니 통역하는 과정에서 언어간 스위칭 비용(시간)이 많이 드는 것을 알게 되었다. 내용이 영어로만 적혀 있는 경우에는 전적으로 통역사 분의 힘을 빌려야 하기 때문에 통역할 차례가 올 때까지 마냥 기다리는 수밖에 없었다 보니 집중력이 흐려지는 경우도 있었다. 20분 분량의 간단한 발표일지라도 언어 스위칭 비용 때문에 2배의 시간이 걸리는 것이 일반적이었다. 그래서 통역이 전문적으로 필요하지 않은 부분은 슬라이드 노트에 미리 메모해 외운 체(?)하며 내가 직접 언어를 스위칭하여 시간을 절약하며 집중을 유도했다(오, 저 사람 영어 할 줄 아나 봐!).
PPT 화면에 글자가 많이 들어가는 것을 좋아하지는 않지만, 양국 개발자의 원활한 이해를 돕기 위해 불가피하게 2개국어를 모두 화면에 실었다. 양국 개발자의 원활한 이해를 돕기 위해서는 PPT 자료도 2개국어가 모두 적혀 있으면 좋겠다고 생각했다. 내가 먼저 한국어로 발표하면 다음에는 통역사가 번역해 주시는 형식으로 진행됐다. 이때 내가 한국어로 말하는 틈에 미국 개발자는 통역사의 번역을 듣기 전에 화면을 통해 내용을 먼저 접하게 된다면 보다 집중을 끌어올릴 수 있을 것이라고 기대했다.
통역사 분은 컴퓨터를 전혀 전공하지 않은 분이셨다. 전문적인 용어가 오가는 대화를 어떻게 순간에 통역하실 수 있을까? 통역을 너무 매끄럽게 진행하시니까 당연히 컴퓨터에도 능통한 분이신 줄 알았다. 그런데 통역사 분과 사전에 이야기를 나눠 보니 전혀 컴퓨터에 대해 모르신다고 하셨다. 그렇다면, 발표를 준비할 때 컴퓨터 공학적 지식이 없는 분들께도 쉽게 설명할 수 있을 정도로 준비해야 진행이 매끄럽지 않을까? 하는 생각을 하게 되었고 내가 발표하고자 하는 주제를 최대한 쉽게 풀어볼 수 있는 방법을 두고 고민했다. 그 방법은 결국 철학 자체를 탐구하는 것이었다. 프로그래밍 언어에서도 설계자가 담아낸 철학관이 프로그래밍 언어에서 그대로 녹아 있을 테니 철학 자체를 탐구한다면 프로그래밍 언어를 이해하는 데 도움이 되지 않을까? 하는 생각을 했다.
프로그래밍 언어와 자연어의 유사성
그런데 준비하면서 많이 놀랐다. 나는 프로그래밍 언어는 단순히 사람의 언어처럼 기계와 소통할 수 있는 도구로만 받아들였다. 그런데 이번 발표를 준비하면서 서양인들의 사고 방식이 “클래스 기반 프로그래밍”에 들어있다는 것에 놀라움을 금치 못했다. 영어를 배우는 시간에 듣던 ‘a/the’와 같은 관사가 붙고 안 붙고의 차이를 배울 때는 별 감흥이 없었는데 클래스 기반 프로그래밍이 탄생할 정도로 서양인들에게는 관사가 붙고 안 붙고의 차이가 크다는 것을 비로소 실감했다. 이처럼 프로토타입 기반 언어 역시, 클래스의 아류 정도로만 가볍게 이해했던 나를 돌아보게 되었다. 프로토타입 기반 사상을 이해한다면 왜 자바스크립트라는 언어가 유독 다른 언어보다 유연한 특성을 보이는지 확인할 수 있어 의미 깊었던 시간이었다.
발표를 마친 뒤
따뜻한 팀원 분들의 반응
팀원 분들은 따뜻한 발표 후기를 남겨주셨다. 준비했던 그 어떤 시간보다도 긍정적인 피드백을 받았던 시간이 가장 보람찼다. 더욱이, 통역사 분의 피드백을 받아볼 수 있는 기회도 있었다. 나의 발표를 들으면서 프로그래밍 언어에 대해 조금 알 것 같고 재미있었다는 피드백을 보내주셨는데 여기서 나는 준비만 된다면 ‘교육’을 시작해 봐도 괜찮지 않을까? 하는 생각이 싹트기 시작했다.
이번 세미나를 통해 프로그래밍 언어와 자연어 사이의 깊은 연관성을 탐구하여 발표를 준비한 경험은 개발자로서 성장하는 데 큰 도움이 되었다.