Rebecca Mark는 Unison Computing에서 일하며, Unison 프로그래밍 언어를 누구나 최대한 재미있고 쉽게 배울 수 있도록 만드는 것을 사명으로 삼고 있어요.
Jonathan: Rebecca, Exercism 팟캐스트에 오신 걸 환영해요. 함께할 수 있어서 정말 기뻐요. 이렇게 이야기를 나눌 수 있다니 정말 영광이에요. 그쪽은 아침 7시 30분이고, 제 쪽은 지금 오후 4시 30분이네요. 환영해요. 지금 정확히 세계 어디에 계세요?
Rebecca: 워싱턴주 시애틀에 있어요. 그래서 아주 이른 아침에 통화하고 있는 거네요.
Jonathan: 좋네요. 그리고 커피도 벌써 따라 두고, 리필도 준비해 두셔서 하루를 따뜻하게 시작할 준비가 된 것 같네요.
Rebecca: 아, 네, 바로 옆에 있어요. Chemex도 하나 더 준비해 뒀고, 오늘 하루는 든든하게 시작할 수 있겠어요.
Jonathan: 좋아요. 훌륭하네요. Rebecca, 환영해요. Exercism, 특히 Unison 트랙에 참여하고 있는 걸 보면서 이야기는 조금 알고 있었어요. 그런데 본격적으로 파고들기 전에, 자기소개를 조금 듣고 싶어요. 어떻게 시애틀에 오게 됐는지도요. 시애틀이라…… 시애틀이라고 했죠. 제가 맞게 들었나요? 네, 그랬죠. 잠깐 금붕어처럼 기억이 사라져서 어디 사는지 까먹은 줄 알았는데, 시애틀이 맞네요. 어떻게 그곳에 정착하게 됐는지 조금 듣고 싶어요. 자기 이야기, 그리고 어떻게 IT 분야에 들어오게 됐는지, 무엇이 그 길로 가도록 이끌었는지도요.
Rebecca: 네, 사실 제 가족은 여섯 세대 전에 시애틀로 바로 이민을 왔어요. 정말 오래전 일이죠. 시애틀에 자리 잡은 이민자 가족이에요. 여기가 정말 좋아요. 이 근처에서 학교를 다녔는데, 시애틀이 워낙 큰 IT 도시라서 제가 IT 분야에 들어오는 데에도 큰 역할을 했어요. 그런데 대학에서 프로그래밍을 전공한 건 아니에요. 시를 중점적으로 공부하는 영문학을 전공했죠. 그래서 안 어울려 보일 수도 있어요. 네, 어울리지 않는 조합처럼 보일 수도 있는데, 어떤 면에서는 관련이 있다고 생각해요. 여기 워싱턴 대학교에서 학교를 다녔고, 첫 직업으로는 포틀랜드에서 고등교육 분야에서 일했어요. 학생들과 함께 일하면서 학력 격차를 줄이고 학생들이 대학을 끝까지 다니도록 돕는 일이었죠. 학생들의 인생 코치 같은 역할이었어요. 정말 좋은 일이었어요. 그런데 온라인 대학들과 일을 많이 하다 보니, 학생들이 기술 플랫폼에서 얼마나 어려움을 겪는지, 동시에 기술이 어떻게 더 나은 경험을 하고 인생을 바꾸고 빈곤이나 억압의 세대 간 대물림을 끊는 데 도움을 주는지도 보게 됐어요. 그래서 그 일에 직접 뛰어들고 싶었어요. 그리고 조금 이기적인 얘기일 수도 있는데, 교육은 여러 이유로 정말 어려운 분야예요. 정말 사랑스럽지만 정말 힘들기도 하죠. 그런데 기술 분야에서는 매주 발전하고 있다는 느낌을 받을 수 있어요. 제 커리어에서 원했던 문제 해결적인 요소를 깨워 줬고요. 그래서 진로를 바꿔서 다시 시애틀에 있는 ADA Developers Academy라는 학교에 지원했어요. 그렇게 한 바퀴를 돌아 다시 시애틀로 돌아와 1년 과정을 하게 된 거예요.
Jonathan: 잠깐만요. 시애틀에서 자라서 커리어를 시작하려고 다른 곳으로 옮긴 거네요. 시애틀에서 어디로 간 거예요? 어디로…
Rebecca: 포틀랜드로 갔어요. 시애틀에서 조금 남쪽이죠. 네.
Jonathan: 그렇군요. 좋아요. 그러니까 언어, 시, 영문학을 하신 거네요. 저도 그랬어요. 고등학교 때 영어랑 그런 것들을 좋아했거든요. 그래서 '와, 영문학하는 사람이 또 한 명이네' 하는 느낌이었죠. 그 뜨거운 마음에 대해 얘기해 주세요. 기술로 눈앞에서 여러 문제가 해결되는 걸 보면서 과감하게 뛰어들기로 결심하기까지의 과정 말이에요. 그 과정은 어땠어요? '좋아, 이 길을 떠나서 커리어 경로를 깨고 완전히 다른 분야로 가야겠다'고 어떻게 결심하게 됐어요? 그건 어땠어요?
Rebecca: 어느 정도는 운이었어요. 제 학생들이 이걸 아주 잘하거나 아주 어려워하는 모습을 보면서 '와, 나도 여기에 관여하고 싶다'고 계속 느끼고 있었거든요. 지금 하는 일 말고 다른 무엇인지는 잘 모르겠지만, 지금 하는 일이 제가 원하는 부분을 채워주지 못한다는 건 알고 있었어요. 그래서 심심한 김에 점심시간에 HTML과 CSS를 배우기 시작했어요. 작은 웹사이트나 웹 폼 같은 걸 만들어 보면서 연습했죠. 그때는 완전히 무료 학습 자료만 봤어요. 그냥 혼자 공부하면서 '이 인터넷이라는 건 대체 뭐지?' 하고 생각했죠.
Jonathan: 네. 네.
Rebecca: 지금도 스스로에게 하는 질문이에요. 그런데 뭐랄까, 그냥 프로그래밍에 반해 버렸어요. 작은 거북이를 화면에서 움직이게 하거나 사각형을 나타나게 하는 게, 어떤 면에서는 마법에 가장 가까운 느낌이었어요. 그래서 '좋아, 나는 이걸 좋아하고, 이 일의 사명도 좋아하니까, 이 둘을 어떻게 연결할 수 있을까' 하고 생각했죠. 그 질문을 계속 되풀이하면서 커리어를 만들어 온 셈이에요.
Jonathan: 좋아요. 그러면 코딩으로 넘어가는 과정, 그러니까 컴퓨터에서 벌어지는 일을 개념화하고 틀을 잡는 법을 배우면서 그것에 대한 머릿속 모형을 갖는 과정이었네요. 많은 사람들과 이야기할 때 흥미롭게 느끼는 것 중 하나는, 그리고 제 개발 경험에도 해당하는 이야기인데요, 저도 그 영역을 조금씩 밟아 가고 있거든요. 바로 지금 벌어지는 일에 대한 머릿속 모형을 갖고 그것을 머릿속에서 만들어 낼 수 있다는 게 코딩을 배우는 데 정말 큰 부분이라는 점이에요. 그럼 그건 어떻게 하셨어요? 어떻게 배웠는지, 어떻게 알게 됐는지 말이에요. 이해가 되나요? HTML과 CSS를 보면서 '좋아, 좋다' 하는 상황에서, 그 정보를 머릿속에서 어떻게 정리하기 시작했어요?
Rebecca: 네, 좋은 질문이에요. 그걸 어떻게 정리했을까요? 문학을 공부하면서 제게 몸에 밴 것 중 하나는 '꼼꼼하게 읽어라'였어요. 행간을 읽고, 형식에 주의를 기울이라는 거죠. 프로그램에도 형식이 있다고 생각해요. 저는 타입이 있는 언어들을 다뤘는데, 그래서 정말로 컴파일되지 않는 코드를 쓰는 방법 같은 게 아주 구체적으로 존재해요.
Jonathan: 네, 그렇죠. 네.
Rebecca: 프로그래밍을 할 때는 '목표의 구조가 어떤가, 이야기는 무엇인가'를 생각하는 걸 좋아해요. 컴퓨터가 하는 일이나 a와 b를 합치는 일을 상상하는 아주 색다른 방식이라는 건 알아요. 그래도 항상 '컴퓨터를 내 주인공이라고 상상하면, A, B, C 지점에서 무엇을 하고 있을까? 내가 원하는 목표를 어떻게 달성할까?' 하고 생각해 왔어요. Finnegans Wake만큼 흥미진진한 이야기는 아닐 수 있지만, 그건 사람마다 다르겠죠. 그게 제가 쓰는 머릿속 모형이에요.
Jonathan: 정말 흥미롭네요. 지금 하신 얘기를 프로그램이나 코드에 그대로 대입할 수 있겠어요. 장면이 있고, 변수라고 할 수 있는 등장인물이 있고, 그다음에는 줄거리가 있는 거죠. 꽤 재미있어요. 이 얘기로 한참 빠져들 수도 있겠지만, 어쩌면 영문학을 공부한 사람이 실제로 개발자가 되는 사례를 보게 될지도 모르겠네요. 제가 이 질문을 하는 이유는, 많은 사람들이 코딩을 배울 때 새로운 커리어, 아니 기존 커리어에서 와야 하고, 머릿속을 다시 배선하면서 정신적으로 다시 몰입할 방법을 찾아야 하기 때문이에요. 그래서 다른 기여자 중 한 명인 Bobby Towers와 이야기를 나눴는데, 아마 아실 수도 있어요. 그는 음악 배경, 그것도 아주 깊은 음악 배경을 가진 사람인데, 다른 팔에 사고가 있어서 한 손으로 타이핑할 수 있도록 직접 한 손용 키보드를 만들었어요. 이 얘기를 공유해도 괜찮을 거예요. 그와 이야기하면서 그가 음악과 음악의 패턴, 음악에서 아주 전형적인 요소들을 어떻게 이해하고, 그것이 개발로 어떻게 이어지는지 듣는 게 정말 흥미로웠어요. 이런 대화가 흥미로운 이유는, 사람마다 문서에 있는 정보, 아주 실용적이고 과학적인 정보를 자기만의 방식으로 받아들인다는 걸 깨닫기 때문이에요. 정말 흥미롭죠.
Jonathan: 그러니까 CSS와 HTML을 배우면서 코딩을 시작하고, 것들을 틀 짓고, 머릿속에서 이야기를 만들어 가기 시작한 거네요. 그다음에는 그 지식을 어떻게 깊게 쌓았어요? 그리고 정신적으로 벽에 부딪혀서 앞으로 나아가기도, 나무에 가려 숲을 보기도 정말 어려웠을 때는 어떻게 하셨어요? 그런 장애물을 어떻게 만났고, 어떻게 극복했어요?
Rebecca: 네, 좋은 질문이에요. 저는 장애물을 항상 만나요. 정말 끊임없이 벽에 부딪히죠. 그런 순간에 정말 도움이 된 건 사람들의 네트워크에 기대는 거였어요. 어려운 과제를 만났을 때, 아니면 그냥 새로운 무언가를 만났을 때도 커뮤니티와 우정, 멘토링이 저를 도와줬어요. 예를 들어 프로그래밍 학교를 마치고 바로 인턴을 할 때, 정말 친한 친구가 저와 함께 그 과정을 겪었어요. '아, 나는 이걸 모르는데, 이건 알아야 하는 거 아닐까' 하는 생각이 들 때마다 그 친구에게 가서 '너 이거 알아?' 하고 물어볼 수 있었고, 그러면 친구는 '아니, 우리가 그걸 어떻게 알겠어?'라고 말해 줬어요. 그렇게 자연스럽게 여겨지도록 해 주는 사람이 있었던 거죠. 그 능력이…
Jonathan: 네, 그러니까요. 저도 그럴 것 같아요. 그런 거죠.
Rebecca: 그래요. 주변에 사람들이 있다는 게 제가 여정의 어디쯤에 있는지를 자연스럽게 받아들이게 해 줬다고 생각해요. 그리고 사람들은 자신의 시간과 지지를 정말 아낌없이 나눠 줬어요. 그래서 제 태도는 항상 그걸 다음 사람에게 베풀자는 거예요. 힘든 시기를 정말 버티게 해 준 건 커뮤니티였으니까요.
Jonathan: 정말 멋지네요. 그러면 1년 동안 부트캠프 같은 걸 하신 거네요. 부트캠프라고 불러도 될까요, 아니면 좀 더 특정한 학교에 가까운가요? 큰 차이는 없겠지만요.
Rebecca: 네, 부트캠프로 분류될 것 같아요. ADA라는 프로그램은 몇 가지 면에서 독특하다고 생각해요. 등록금을 내고 다니는 구조가 아니에요. 등록금 모델 자체가 없죠. 학생은 지원하고, 꽤 까다로운 전형 과정을 거쳐요. 그리고 선발되면, 이 프로그램의 가치를 보고 인턴을 원하는 기업들이 이 과정을 통해 인턴을 뽑아요. 기업들이 실제로 학교 전체를 후원하고, 여기에 보조금과 다른 비영리 기관의 지원도 더해져요. 모델 자체가 정말 대단해요. 학생 입장에서는 배우면서 1년 동안 소득 없이 지내는 것만으로도 힘든데, 등록금을 따로 내지 않아도 된다는 게 정말 큰 도움이 됐어요.
Jonathan: 알겠어요. 그러니까 본질적으로… 시작하기 전에 후원을 받은 거네요. 그러니까 기업이 '우리가 후원할게, 대신 마지막에 우리 회사에서 일해'라고 한 건가요? 그런 방식이었어요, 아니면 시험을 통과하고 나서 마지막에 참여할 기회를 받은 건가요? 그런 건가요?
Rebecca: 네, 후자에 가까워요. 당시 기업들은 몇 명인가를 후원했어요. 그러면 학교는 '좋아요, 그만큼 뽑을 수 있겠네요' 하는 식이었고, 그러다 1년의 중간쯤에 모두가 여러 기업과 면접을 보면서 서로 잘 맞는 조합이 무엇일지 탐색하는 과정을 거쳐요. 그다음 최적 매칭 알고리즘을 돌려서 회사가 정해지는 거예요. 네, 정말 그렇게 해요.
Jonathan: 실제로 그렇게 했군요. 그러니까…
Rebecca: 네. 의학 레지던트 매칭 알고리즘과 비슷해요.
Jonathan: 알겠어요. 흥미롭네요. 그러면 그해에는 무엇을 공부했어요? JavaScript 같은 전통적인… 지금 JavaScript를 전통적인 코딩 언어라고 불러서 욕을 좀 먹겠네요. 그런데 커리큘럼은 어땠어요?
Rebecca: 네, 당시 커리큘럼은 Ruby 기반이었어요. HTML과 CSS를 배우고, 웹 애플리케이션 개발을 위해서는 Ruby on Rails와 Sinatra를 웹 프레임워크 용도로 썼어요. 그리고 더 frontend 개발을 위해서도 하나를 사용했어요. 그것도 중요한 부분이었거든요. API 통합에 대해서도 많이 가르쳐 줬고, 애플리케이션의 여러 부분을 어떻게 이어 붙이는지도 알려 줬어요. 워크플로도 정말 협업적이어서, 함께 팀으로 일하는 게 어떤 느낌인지 최대한 비슷하게 만들어 주려고 했어요. 그것도 정말 좋았어요. 정말 실습 중심의 실용적인 소프트웨어 교육이었죠.
Jonathan: 좋아요. 와. 그러니까… 저는 사람들이 어떻게 지금의 자리에 이르게 됐는지 그 이야기를 듣는 걸 정말 좋아해요. 그럼 이제 Unison에서 일하시는 거네요. 지금은 언어이기도 하고요. 이 모든 과정을 거쳐서 어떻게 그렇게 됐어요? 그리고 Unison에 대해서도 조금 설명해 주면 좋겠어요. 듣는 분들이 어떤 건지 이해할 수 있도록요. 쇼 노트에도 다 정리해서 올릴 테니 나중에 보실 수도 있어요. 그럼 설명해 주세요.
Rebecca: 네. Unison Computing은 제가 일하는 회사이고, 우리는 Unison이라는 새로운 프로그래밍 언어를 만들고 있어요. 이 프로그래밍 언어의 핵심적인 차이는 코드베이스가 바뀔 수 있는 텍스트 파일 더미가 아니라는 점이에요. 모든 함수가 AST로 해시되고, 콘텐츠 주소로 지정돼요. 좀 기술적인 얘기죠. 프로그래머, 그러니까 실무 프로그래머 입장에서의 장점은 계산을 프로그램적으로 분산시키는 일이 정말 간단해진다는 거예요. 코드를 프로그램적으로 주소를 지정하고 가져올 수 있으면, 데이터의 직렬화와 역직렬화를 둘러싼 온갖 문제가 사라져요. 그래서 우리는 프로그래머의 작업 흐름을 우리 프로그래밍 언어로 개선하고, 사람들이 하나의 프로그래밍 언어만으로 완전한 규모의 분산 시스템을 작성할 수 있게 하는 데 정말 관심이 있어요. 완성된 프로덕션 시스템의 운영적, 지적 비용을 일부 고민하지 않고도요. 네.
Jonathan: 그러면 backend와 frontend 같은 건가요? 제가 틀렸다면 알려 주세요. 그렇다면 하나의 언어로 웹 애플리케이션 전체를, frontend도 backend도 그리고 나머지 모든 부분까지 다 작성할 수 있다는 뜻인가요?
Rebecca: 우리는 정말로 backend예요.
Jonathan: 알겠어요.
Rebecca: 네, 우리는 정말 backend 언어예요. 진짜 핵심은, 예를 들어 Kubernetes 클러스터를 관리하거나 zookeeper 클러스터를 관리하거나, 아니면 마이크로서비스 무리를 운영할 때 생기는 온갖 운영상의 복잡함을 Unison이 프로그램적으로 서술하고, 그에 맞춰 프로그램을 실행할 수 있다는 거예요. 그 모든 작업을 직접 하지 않아도 되죠.
Jonathan: 그럼 Unison에서 일상적으로는 무슨 일을 해요? 어떤 일을 맡고 있고, 좋은 점과 정말 즐기는 부분은 무엇이고, '아, 이건 더 나았으면 좋겠다' 싶은 부분은 뭐예요? 하루는 어떤가요? 오늘은…
Rebecca: 네.
Jonathan: 오늘은요? 잘 모르겠네요.
Rebecca: 오늘은, 웹사이트 배포를 하나 끝내고 싶어요. 그래서 언어 문서 같은 것들을 좀 개선할 거예요. 그리고 이번 주의 큰 목표는… 우리의 분산 생태계인데, 그중 일부는 Exercism에도 나타날지도 몰라요. 그러니 우리 트랙도 한번 확인해 봐요. 제 역할은…
Jonathan: 홍보네요.
Rebecca: 네.
Jonathan: 네.
Rebecca: 제 역할은 사람들이 Unison을 배우고, 이 언어에 발을 들여 실무 수준의 실력을 갖추고, 환영받는다고 느끼도록 돕는 거예요. 각자가 목표로 하는 것을 이루는 데 필요한 정보를 얻도록 말이죠. 그래서 뭐랄까, 한 주 동안 이런저런 잡다한 일을 하게 돼요. 누군가는 문제 해결을 도와달라고 하고, 또 누군가는 '웹사이트에 이 링크가 잘못됐어요'라고 알려 주기도 하니까요. 그래서 정말 다양해요. 가장 어려운 건, 팬데믹 상황에서 원격으로 일하다 보니 커뮤니티를 만드는 게 정말 어렵다는 거예요. 이 시기에 열렸을 많은 컨퍼런스나 IT 행사가 이해할 수 있게도 많이 줄었어요. 그게 좀 아쉬워요. '이번 주에 프랑스 리옹에 발표하러 간다' 같은 설렘이요.
Jonathan: IT 업계의 그런 삶이죠. 그렇네요. 거의 멈춰 버렸어요.
Rebecca: 네. 새로운 사람들을 만나는 게 그리워요. 그래도 앞으로는 나아질 거라고, 그러길 바라고 있어요.
Jonathan: 그럼 지금은 원격으로 일하나요? 팀이 여기저기 흩어져 있고요? 미국 전역에, 아니면 전 세계에요? 지금 팀은 어디에 있어요?
Rebecca: 네, 동부 해안 쪽에 사람이 많아요. 보스턴, 로드아일랜드 근처요. 그런데 정말로 우리는 완전 분산형 회사예요. 어울리게도요. 저는 서부 해안에 있고, 몇몇은 미국 중부에 있어요. 지금은 사무실이 없어요. 각자 자기 동네에 완전히 흩어져 있죠.
Jonathan: 알겠어요. 그럼 지금 IT 업계의 다른 사람들을 만날 기회는 어떻게 만들어요? 아니면 말씀하신 대로 모든 게 멈춰서, 집 안의 사무실에서 일어나 문 닫고, 복도만 지나면 다시 집인 게 조금 좋기도 해요? 무슨 말인지 아시죠? 전체적으로 어떻게 느껴요? 일과 연결을 유지하는 것 같은 부분에서 어떤 어려움이 있어요? 지금 상황은 어떻게 대처하고 있고요? 그리고 앞으로의 모습은 어떤가요? 팀으로서 Unison은요? 장기적으로 원격인가요, 아니면 좀 더 대면하는 쪽으로 가는 게 목표인가요?
Rebecca: 목표는 원격을 유지하는 거라고 생각해요. 많은 사람들에게 잘 맞아요. 일 외에 해야 할 일이 있는 사람들이나… 그리고 근본적으로 저도 몇 가지 이유로 정말 좋아해요. 하나는 작년에 온라인 컨퍼런스를 열었는데, 계속 이어지길 바라고 있어요. 커뮤니티가 계속 커지면 내년에는 대면 요소도 넣을 수 있지 않을까요. 그리고 다음 달에 하려는 일 중 하나는 회사 대면 리트리트예요. 보스턴 근처에 큰 저택을 하나 빌렸는데, 다들 그리로 몰려갈 거예요. 멋진 방도 많고 테니스 코트도 있어요. 그냥 함께 일하면서 기획이나 비전 같은, 아무래도 대면으로 하는 게 좋은 활동들을 더 많이 하려고요. 이제 그게 가능해졌으니 팀을 조금 더 자주 모으는 거죠.
Jonathan: 네, 그런 거요. 우리도 8월 초에 Exercism과 비슷한 모임을 했는데, 팀 결속에도 정말 좋았고, 특히 끝내야 하거나 새로 시작해야 했던 큰 프로젝트들을 진전시키는 데도 좋았어요. 그러니 정말 재미있을 거예요. 그런데 Rebecca, Rebecca는 또 Unison Exercism 트랙을 만들고 전부 구축하는 데도 큰 역할을 했죠. 그 경험과 Exercism을 어떻게 알게 됐는지, 그리고 앞으로 그 트랙에 어떤 바람을 갖고 있는지 조금 얘기해 주세요.
Rebecca: 네, 정말 환상적인 경험이었어요. Exercism은 처음에 동료 St.가 알려 줬어요. 그 친구는 이 플랫폼의 열렬한 팬이고 예전에도 써 봤거든요. Unison에서는 완전한 학습 콘텐츠 관리 플랫폼을 만들 자원이 없었어요. 우리는 꽤 작은 팀이고 다른 목표도 많아서, 저는 '어떻게 하면…' 하고 고민했죠.
Jonathan: 몇 년이 지나도 Rebecca은 여전히…
Rebecca: 네. 아직도 만들고 있어요.
Jonathan: 그걸요.
Rebecca: 그 플랫폼이요. 네. 그래서 다른 조직과 협력해야 한다는 걸 알고 있었어요. 사람들이 Unison 언어를 직접 써 볼 수 있게 하고, 브라우저에서 쓸 수 있는 요소가 있으면 더할 나위 없이 좋겠다고요. 그러면 사람들이 아주 가볍게 이 언어를 접할 수 있으니까요. 그래서 Exercism이 제공하는 걸 보고 '좋아, 여긴 훌륭한 커뮤니티고, 성장하고 있고, 무료야. 정말 좋네. 우리 사용자들도 좋아하겠다'고 생각했어요. 그래서 그냥 '좋아, 이걸로 사람들이 연습하게 하자'고 결정했죠. 트랙을 만드는 과정 자체는 조금 흥미로워요. Unison은 파일 기반 언어가 아니거든요. 코드베이스가 해시되어 코드베이스에 저장되고, 다른 대부분의 언어는 파일 시스템 위의 파일로 동작해요. 그래서 거기에 몇 가지 흥미로운 기술적 어려움이 있었어요.
Jonathan: 그 부분을 조금 더 설명해 주세요. 어떤 건가요? 비전문가 입장에서 말하자면, 아마 Jeremy는 이 시점에 제가 너무 기술적인 질문을 한다고 웃겠지만, 그 어려움 몇 가지를 조금 더 파고들어 봐 주세요. 듣고 있는 분들도 어느 정도 이해할 수 있을 거예요.
Rebecca: 네. Unison에서는 스크래치 파일이라고 부르는 것들, 그러니까 .u 확장자가 붙은 파일에서 작업해요. 정말 일회용 파일이죠. 작은 프로그램을 작성하고, REPL 같은 환경이나 노트북 같은 환경에서 실행해 본 다음, 그 함수를 파일에서 지워요. 이미 Unison 코드베이스 자체에 저장했으니까요. 그래서 진실의 원천은 파일 시스템이 아니라 Unison 코드베이스예요. 이게 Exercism과 통합할 때 흥미로워지는 지점은, 당연히 Exercism은 파일을 보고, 파일을 넘겨받아 여러 테스트를 실행한 다음 '학생이 테스트를 통과했다'거나 '이런 문제가 있다'고 알려 준다는 거예요. 결과적으로는 잘 됐어요. 테스트를 실행할 때마다 새로운 Docker 컨테이너가 하나 발급되거든요. backend에서 아주 영리한 기술적인 일들이 벌어지죠.
Jonathan: 마법 같은 기술이네요.
Rebecca: 네, 마법 같은 기술이 좀 있어요. Eric은 플랫폼이 하는 일에 대해 칭찬을 한몫 받을 만해요. 네, 결과적으로 잘 돌아갔어요. 그런데 Unison이라는 언어의 근본적인 특성은 파일로 유지되는 코드베이스가 아니라는 점이에요. 그래서 학생들이 작업을 저장하고 싶다면, 실행할 때마다…
Jonathan: 그러면 어떻게…
Rebecca: 네.
Jonathan: 그러니까, 어디…
Rebecca: 어디…
Jonathan: 그러니까, 그럼 학생은 매번, 그러니까 사실상 매번 커리큘럼 처음부터 시작해야 한다는 뜻인가요? 거의 매번이요. 제 머릿속이 그쪽으로 갔거든요. '아, 저장이 안 돼' 하고요. 그런데 어쩌면 그냥 제 뇌가 처리하는 엉뚱한 방식일 수도 있어요. 그래도 '아, 와, 다시 시작해야 해'라고 생각했어요.
Rebecca: 다행히 웹 인터페이스가 마지막 실행을 저장해요. 파일 시스템이나 파일 상태를 꼭 저장하는 건 아니지만, Exercism 플랫폼 자체가 학생의 작업을 저장해 주죠. 정말 좋아요. 정말 멋지죠. 그리고 학생이 CLI를 쓴다면 Unison 경험 전체를 온전히 누릴 수 있어요. 실제로 Unison 코드베이스 관리자를 내려받아 직접 다루게 되니까요. 네, 웹 기반 인터페이스와 CLI 작업 사이에 유연성이 아주 많아요.
Jonathan: 알겠어요. 정말 흥미롭네요. Exercism 플랫폼에서 다른 메인테이너나 기여자와 이야기할 때마다, 각 언어의 미묘한 차이와 자잘한 복잡함 같은 걸 보면 정말 놀라워요. 같은 일을 하는 방식이 얼마나 다양한지 말이에요. 좋아요. 이제 Unison에 계시니, 미리 준비해 달라고 부탁했던 질문을 할 좋은 기회인 것 같아요. IT 업계에서 '내가 목숨 걸고 지킬 언덕' 같은 개념 말이에요. 결국 딱 하나, '이건 내 생각이고 정말 필수적이라서 절대 양보하지 않겠다' 하는 게 있다면요. 꼭 싸운다는 표현까지 쓸 필요는 없고요. 온 마음을 걸고 '이건 정말 지키고 싶다'고 말할 수 있는 게 뭔가요? 어떤 생각이요? '함수보다 CSS를 먼저 써라' 같은 걸 수도 있고요. 잘 모르겠어요. 그냥 지어낸 거지만, 뭐가 될지는 저도 모르겠네요.
Rebecca: 네. 제가 목숨 걸고 지킬 주장은, 하, IT 업계가 너무 오랫동안 독성 있는 성격의 사람들을 받아들여 왔다고 생각해요. 기술적으로 뛰어나다는 이유로 그 대가를 치르면서요. 그리고 저는 그게 뒤집혀야 한다고 생각해요. 저는 차라리…
Jonathan: 그거예요. 정말 좋네요. 네.
Rebecca: 정말 유능하고 성실한 사람 50명과 일하는 게, 천재지만 성격이 나쁜 사람 한 명과 일하는 것보다 훨씬 낫다고 생각해요. 정말 이해가 안 돼요. 독성 있는 행동을 받아들이는 걸 한 번도 이해한 적이 없어요. 누군가 엄청 똑똑하다는 이유만으로요. 그건 항상…
Jonathan: IT 업계 전반에서 그게 천천히 바뀌고 있다는 느낌이 들어요. 그리고 그 이유는, 제가 틀렸다면 알려 주세요. 저는 Exercism 문화를 정말 좋아하거든요. 정말 사랑해요. 무슨 말인지 알아요. 그런데 여러 배경과 문화, 경험을 가진 사람들이 더 많이 배우면 배울수록 IT가 더 발전하고, 그 반전이 더 많이 일어나지 않을까 생각해요. 정말 기대돼요. 그리고 IT 업계를 바깥에서 보면, 지금은 어떤 면에서 정말 부의 이전 같아요. 지식을 가진 사람이 꽤 적은 그룹에 불과하니까요. 명령줄을 이해한다거나 bash 스크립트에서 무슨 일이 벌어지는지 아는 것 같은 지식조차, 저는 내부에서 무슨 일이 일어나는지 전혀 모르지만, 그 지식이 많은 돈과 에너지, 자금을 그쪽으로 끌어들이고 있어요. 기술과 지식을 가진 사람이 바로 그들이니까요. 그러기 위해서는, 시간이 지나고 앞으로 몇 년간 사람들이 배우고, 반박하고, 다른 방식으로 이해하면서 그 변화가 일어나길 바라고, 제가 맞기를 바라요. 저는 긍정적이고 희망을 갖고 있어요. 그 부분에서는 저도 같은 생각이에요. 정말 흥미로웠어요. 결국 제가 경험한 건, 천재를 데려갈 수도 있지만 정말로 그 사람을 감정적으로 관리하는 데 필요한 에너지, 다른 사람들과의 갈등, 그리고 다른 사람들, 예를 들어 고객이나 팀이 감당해야 하는 스트레스를 다 합치면 결국 본전이 되더라고요. 그리고 저는 완전히 긍정적인 경험을 본 적이 없어요. 누군가는 대가를 치러야 해요. 시스템 안에서 누군가는 그 값을 치르고 있어요. 그래서 그 부분은 정말 공감해요. 그리고 그건 기술 솔루션에도 적용할 수 있다고 생각해요. '이게 유일한 방법이야' 하는 식이 아니라, '아니, 실제로는 20가지 방법이 있고 모두 트레이드오프가 있어' 하고요. 성숙함은 '어떤 트레이드오프를 받아들일 것인가'를 말하는 거예요. '아니, 원래 이렇게 해 왔으니까 이렇게 해야 해'라고 하는 게 아니라요. 어쨌든 제 생각은 그렇고요. 네.
Rebecca: 네.
Jonathan: 동의해요. 좋아요. 그러니까 그 언덕에 관해서는 우리 둘 다 같은 생각인 것 같아요. 지금 보니 제가 스스로 떠안고 있는 언덕이 정말 많다는 걸 깨닫고 있어요.
Rebecca: 네, 매번요.
Jonathan: 이야기하는 사람마다 '네, 맞아요' 하게 돼요. '와' 하고요. 지금 저는 최소한 일곱 개의 언덕에서 죽어 가고 있어요. 아무튼, 정말 좋았어요. Rebecca, 앞으로 몇 년 동안 어떤 걸 배우고 싶거나, 자신의 삶에서, 그리고 IT 업계 전체에서 어떤 걸 보고 싶어요? 꿈은 뭐예요? 그에 대한 생각은 어때요?
Rebecca: Unison 커뮤니티가 정말 지속 가능한 방식으로 성장하고, 다양한 배경을 가진 사람들을 진심으로 환영하는 모습을 보고 싶어요. 그게 제가 Unison에 합류한 이유이기도 해요. 커뮤니티를 이끌어 나갈 기회 말이에요. 그런데 장기적으로는 IT 여정을 막 시작한 사람들과 다시 함께하고 싶어요. 10년 전의 저처럼 '인터넷은 어떻게 돌아가는 거지?' 하고 궁금해하는 사람들이요. 배경이 꼭 있는 것도 아니고, IT에 대해 생각하는 방식도 다른 사람들이죠. 시인을 위한 프로그래밍 같은 걸 하고 싶어요.
Jonathan: 그거 정말 멋질 것 같아요. 작곡가와 시인들이 코드를 좀 배우는 거죠. 네.
Rebecca: 네, 그래서 IT 여정을 시작하는 사람들과 함께할 기회가 있으면 좋겠어요. 정말 멋질 거예요.
Jonathan: 그럼 지금 코딩과 개발, 그리고 그 안의 세계에 대해 전혀 모르는 사람 10명이 방에 들어온다면, 시작할 수 있도록 해 줄 세 가지 조언은 뭐예요? 선택의 여지가 없고 무조건 배워야 하는 상황이에요. '좋아, 여기 있으니 나갈 구멍은 없고 그냥 해야 해' 하는 거죠. 어디서부터 시작하게 할 건가요? 어떻게 이끌어 갈 건가요?
Rebecca: 우선 방을 둘러보면서 다른 사람의 성공을 자기 성공으로 여기라고 말해 주고 싶어요. 그다음에는 아마 시스템을 테스트하고 자기 작업을 확인하는 법을 익히는 데 투자하라고 할 것 같아요. 그리고, 이런, 아마 실용적인 부분에서는 디버거를 쓰는 법을 알려 주겠죠. 그런데 첫 번째가 정말로 가장 중요하게 하고 싶은 말이에요. 다른 사람의 성공을 자기 성공으로 여기라고요. 왜냐하면…
Jonathan: 그렇게 생각해요? 정말 반가운데요. 아니, 그러니까, 정말 흥미로운 지점이에요. 우리도 최근에 코호트를 운영했거든요. Alexa 트랙과 Go 트랙에서 30일짜리 학습 프로그램을 두 번 운영했는데, 아시는지 모르겠네요. Go 트랙에는 300명, 아니 700명이 넘는 사람이 신청했어요. Alexa 트랙에는 100명 정도였고요. 정말 흥미로웠어요. 사람들이 함께 배우는 방식에 대한 실험을 정말 해 보고 싶었거든요. 함께 배우는 게 목표를 향해 나아가고 달성하는 데 가장 핵심적인 요소 중 하나라는 걸 깨달았으니까요. 그래서 서로가 각자의 성공을 이루도록 돕는다는 말씀이 정말 좋았어요. 언젠가 그 얘기를 더 나눠야겠어요. 솔직히 말하면 그게 학습에서 정말 강력한 도구라고 생각하거든요. 우리는 종종 고립된 개인으로 움직이잖아요. 그런데 우리가 정말 느끼는 건, 가속은 커뮤니티에서 나온다는 거예요. 다른 사람의 관점을 얻는 데서요. 그래서 그 표현을 제가 가져다 써야겠어요. 다른 사람을 성공시키는 걸 우선순위로 삼는 것에 대해 언젠가 일반적인 얘기를 해 주실 수도 있고요. 그걸 주제로 뭔가 해 볼 수도 있겠네요. 정말 좋아요. 정말 마음에 들어요. 고마워요. 얘기해 줘서 고마워요, Rebecca. 시간 내 줘서 고마워요. 코딩과 IT, 이런저런 얘기를 하면서 즐거운 시간을 보내서 정말 좋았어요. 일찍 일어나서 커피도 내리고 시간을 내 줘서 고마워요. 아침에요. 정말 감사해요. 그리고 듣고 계신 모든 분들, Unison 언어를 한번 확인해 보세요. 쇼 노트를 정리해서 이 팟캐스트의 소개글과 설명에 넣을게요. 함께해서 정말 좋았어요. 정말 고마워요. 이제 녹음을 멈추고, 그다음에 잠깐 더 이야기 나눌게요. 그럼 Rebecca는 잠시만 있어 주고, 나머지 분들은 나중에 봬요. 네.
커뮤니티 멤버들의 이야기를 듣고 배우며 영감을 받아봐요.