'폴리글랏'이 뭐냐고요? 사전에 따르면 여러 언어를 아는 능력을 뜻해요! 그럼 어떻게 '폴리글랏'이 될 수 있을까요? Erik Schierboom에게 물어보면 속사정을 알 수 있어요!
Jonathan: 자, 안녕하세요 여러분. Exercism 팟캐스트, 아니면 라이브 스트림에 오신 것을 환영해요. 제 이름은 Jonathan이고 오늘 진행을 맡게 되어 영광이에요. 그리고 Exercism 팀의 일원으로 여러 해 동안 함께해 온 Eric도 함께하고 있어요. 지난 몇 년 사이에 Exercism 생태계에 한 번이라도 몸담았다면, 아마 어디선가 Eric을 마주쳤을 거예요. Eric, 오늘 방송에 함께해 주셔서 정말 반가워요. Eric의 이야기, 어떻게 IT 업계에 들어오게 됐는지, 그리고 IT 업계 곳곳에 대한 생각을 조금 더 들어보고 싶어요. 그런데 너무 깊이 들어가기 전에, 먼저 자기소개와 함께 지금의 자리에 이르기까지의 배경, 조금의 이야기를 들려주시겠어요?
Erik: 네, 그럼요. 여기 오게 되어 좋아요. 아까 말씀하셨듯이 저는 Eric이에요. 저는 네덜란드에 살아요. 태어난 곳도 네덜란드라 평생 여기서 살아왔어요. 제가 처음으로 컴퓨터로 뭔가를 해본 게 언제였는지 생각해 봤는데, 아마 NES였던 것 같아요. 마리오를 하면서요. 그때 푹 빠졌어요. 정말 좋았고요. 그리고 굉장히 답답하기도 했어요. 그 시절 게임은 정말 냉혹했거든요.
Jonathan: 저장 지점 같은 게 없었으니, 그냥 처음부터 다시 도전해야 했고요.
Erik: 글쎄요, 미국에 살았는지 아니면 다른 나라에 살았는지에 따라 달라요. 실제로 두 가지 버전이 있었거든요. 아무튼 맞아요. 앞쪽 슬롯을 열고 디스크, 아니 카트리지를 넣는 거죠. 저는 그걸 정말 정말 좋아했어요. 우리 집에는 NES가 없었지만, 몇몇 친구들은 가지고 있었어요. 그래서 자주 그 집에 놀러 가서 게임을 했어요. 정말 멋진 게임도 많았고 답답한 게임도 많았죠. 그래도 정말 정말 대단한 물건이었어요. 그렇게 저는 푹 빠졌어요. 많은 프로그래머가 게임을 만들고 싶어서 프로그래머가 되려고 하는 것처럼 저도 그런 것 같아요. 생각은 해봤죠. 그런데, 스포일러지만, 저는 그걸 해본 적이 없어요. 저는 게임 개발자가 아니에요. 네, 네. 그렇지만 그게 제가 컴퓨터를 좋아하게 된 이유예요. 그리고 제가 태어나기 전에 아버지에게 사고가 있었어요. 그래서 어깨 아래가 마비되셔서 휠체어를 타셨어요. 그렇지만 늘 집에 계셨어요. 그게 참 좋았죠. 아버지가 24시간 집에 계셨으니까요. 그래서 집에 오는 게 늘 좋았어요. 아버지도 컴퓨터를 좋아하셨어요. 그래서 어느 시점에, 제가 아마 10살쯤이었을 텐데, 아주 대단하지는 않은 컴퓨터를 사셨어요. 아마 X286이었을 거예요. 흑백이었고 MS-DOS가 설치되어 있었어요. 게임도 할 수 있었죠. 게임이 정말 많았는데, 친구들 아버지들 중에 저에게 게임을 주신 분들이 있었어요. 그런데 게임을 실제로 실행하려면 비밀번호가 적힌 종이를 전부 출력해야 했어요. 비밀번호 보호가 걸려 있었거든요. 매뉴얼 같은 거였죠. 지금 같으면 그냥 넘어갈 수 없겠지만, 그 시절에는 그럴 수 있었어요. 저는 그 게임들을 하는 것도 좋았지만, 어떻게 작동하는지 알아내려고 하는 것도 좋아했어요. 그래서 컴퓨터를 몇 번이나 고장 냈는지 기억도 안 나요. 그래서 저에게는 도움을 주는 창구가 있었는데, 친구 아버지 중에 컴퓨터를 정말 잘하시는 분이 계셨어요. 제가 시스템을 망가뜨릴 때마다 그분께 전화하면, 흔쾌히 오셔서 고쳐주셨어요. 그래도 문제를 스스로 해결할 수 없다는 걸 깨달았을 때의 그 공포는 아직도 기억해요. 그런 경험에서 많이 배웠어요.
Jonathan: 이 문제요. 그런데 저는 그 경험에서 많이 배웠어요. 플로피 디스크에 담아서요. 그걸 몇 년 동안 돈을 모아서 샀던 기억이 나는데, 넣어도 도무지 로드가 되지 않았어요. 그 작은 플로피 디스크로는요. 그래서 그게 제 큰 좌절 중 하나였어요. 어떻게 고쳐야 할지 고민하다가 그 지점을 넘어간 적은 없는 것 같아요. 그런데 게임이 플로피 디스크로 나왔고, 작은 카트리지에 넣어서 업로드하고 그런 식이었나요?
Erik: 아니요.
Jonathan: 네.
Erik: 그래요, 어떤 때는 플로피 디스크가 여러 장이기도 했어요. 아무튼 정말 좋은 시기였어요. 저는 MS-DOS를 좋아했고, 무엇을 할 수 있는지 알아내는 걸 좋아했어요. 그러다 무엇을 할 수 없는지도 알게 됐죠. 네, 정말 멋졌어요.
Jonathan: 네, 정말 멋졌어요. 그럼 어머니는 그때 전업으로 일하셨나요? 아버지는 집에 계셨고요?
Erik: 아니요, 어머니가 아버지를 전담해서 돌보셨어요. 아버지는 돌봄이 많이 필요했거든요. 처음에는 손으로 움직일 수 있었는데, 나중에는 손의 기능이 조금씩 떨어져서 턱을 쓸 수 있게 되셨어요. 그래서 움직일 수 있는 범위가 줄었죠. 어머니는 아버지를 전담으로 돌보셨어요. 그래서 부모님이 항상 집에 계셨어요. 저한테는 다른 집에 갔을 때 부모님이 일하러 나가 있는 게 정말 이상하게 느껴졌어요. 하루가 끝났는데도 부모님이 아직 집에 안 돌아오셨거든요. 저에게는 그게 정말 낯설었어요. 그렇지만 그냥 상황이 달랐던 거죠.
Jonathan: 정말 낯설었겠네요. Eric만 그런 상황이었고요.
Erik: 아니요, 저는 여동생이 하나 있어요. 저보다 세 살 어려요. 우리가 남매라는 걸 아무도 못 알아볼 거예요. 너무 달라요. 예전에는 여동생과 많이 싸웠는데, 지금은 완전히 잘 지내요. 잘 끝났죠. 네. 그리고 여동생은 컴퓨터를 좋아하지 않아서 제 컴퓨터 시간을 침범하지도 않았어요.
Jonathan: 그런데 컴퓨터 때문에 자주 싸웠어요. 여동생은 Sims를 하고 싶어 했고 저는 SimCity를 하고 싶어 했죠. 그래서 그런 면에서는 늘 서로 부딪혔어요.
Erik: 뭐, 저는 SimCity 쪽을 훨씬 더 좋아해요. 그런데 정말로 여동생은 컴퓨터에 관심이 없었어요. 제가 여동생의 흥미를 끌 수 있었던 유일한 방법은 SNES, 그러니까 Super Nintendo가 있었을 때였고, Mario Kart가 있었어요. 여동생은 Mario Kart를 좋아해서 우리는 함께 Mario Kart를 정말 많이 했어요. 물론 제가 훨씬 연습을 많이 했으니 항상 이겼지만, 그래도 여동생은 좋아했어요.
Jonathan: 그래서 지금도 그런 걸 만지작거리는 걸 좋아하시나요? 네, MS-DOS는 제가 틀리지 않았다면 꽤 저수준이죠. 네, 아마 꽤 저수준이었을 거예요. 그런데 그 시스템을 가지고 놀던 때는 몇 살이었나요?
Erik: 네, 꽤 저수준이었죠. 정말 저수준이었어요. 그때가 아마 10살쯤이었을 거예요. 그리고 축구팀, 그러니까 같은 축구팀에 친구가 한 명 있었어요. 그 친구는 이미 훌륭한 프로그래머였고 실제로 게임을 코딩할 수 있었어요. Visual Basic으로 했죠. 저는 완전히 넋이 빠졌어요. 그 친구가 제 컴퓨터에 와서 뭔가를 타이핑하는 걸 보여주는데 저는 하나도 이해할 수 없었어요. 그런데 30분 후에는 화면에서 뭔가가 걸어 다니고 있었어요. 저에게는 완전히 마법 같았어요. 정말 압도당했죠. 그렇지만 그때는 실제로 프로그래밍을 해보려고 하지 않았어요. 저에게는 시도조차 하기엔 너무 어렵게 느껴졌어요. 그래서 하지 않았고, 그냥 어슬렁거리며 게임만 했어요.
Jonathan: 그래서 저는... 잠깐 끼어들게요.
Erik: 그리고 제가 조금 더 나이가 들었을 때요.
Jonathan: '아, 내가 게임을 프로그래밍할 수 있구나'라는 것과, 이걸 좀 더 본격적으로, 그러니까 진지하게 해볼 수 있겠다는 생각 사이의 연결은 어떻게 만들어진 거예요? 이해가 되신다면요.
Erik: 네, 그건 나중의 일이에요. 제가 17살쯤이었을 때, 어떤 길을 갈지 선택해야 했어요. 머릿속에 두 가지 선택지가 있었어요. 하나는 역사를 공부하는 것, 다른 하나는 IT를 하는 것이었죠. 결국 꽤 간단한 선택이었어요. IT가 역사를 하는 것보다 제가 조금 더 좋아할 만한 일이라고 느꼈거든요. 역사에는 굉장히 지루한 부분이 있을 수 있는데, 컴퓨터 과학에는 지루한 부분이 없을 거라고 생각했어요. 물론 있죠. 그래서 제가 틀렸어요. 네, 네. 뭐, 그 얘기는 다른 때 해도 되고요. 아무튼 지루한 부분은 있어요. 그때 선택을 했고, 그 시기는 모든 게 호황이던 때였어요. 닷컴 붐이었죠. 고등학교, 그러니까 제가 진학할 학교를 방문했을 때 그곳은 응용과학대학이었어요. 응용과학대학과 일반 대학 중에 고를 수 있었는데, 저는 뭔가를 만들고 싶어서 응용과학 쪽을 좋아했어요. 저는 이론가 타입이 아니에요. 어떻게 말해야 할지 모르겠지만, 이론에는 약해요. 그래서 뭔가 만드는 걸 좋아하고 아주 실용적이에요. 그래서 실용적인 쪽부터 시작했고 정말 좋았어요. 그 시기에는 회사들이 엄청난 돈을 버는 때였고, '졸업하면 차도 주고 이것도 주고 저것도 준다'고 했죠. 그런데 제가 졸업할 때는 닷컴 버블이 꺼졌어요. 모든 게 엉망이었고 일자리를 찾기가 꽤 어려웠어요. 그때 저는 그냥 대학을 가볼까 하는 생각이 들었어요. 응용과학 쪽은 정말 재미있었고, 거기서 실제로 프로그래밍을 배웠거든요. 그래서 '직업 생활을 조금 미루고 대학을 해볼 수 있는지 보자'고 생각했어요. 좋았죠.
Jonathan: 제가 이해하기로 유럽 교육 시스템에서는 실무 기술 중심이냐, 아니면 대학, 좀 더 학문적인 길이냐로 꽤 일찍 갈라지는 것 같아요. 네덜란드도 그런가요? '너는 이런 쪽에 정말 잘 맞는다'고 판단해 주는 걸 잘하나요? 제가 기준으로 삼는 스위스에서는, 정말 잘하는 사람이면 '좋아, 그럼 견습 과정을 해서 그렇게 기술을 쌓아라'고 할 수 있어요. 그리고 그게 대학에 가는 것과 똑같이, 아니 조금도 낮게 여겨지지도, 더 높게 여겨지지도 않아요. 그냥 그 사람의 선호에 더 맞는 것뿐이죠. 네덜란드도 그런가요? 그리고 자라면서 그런 과정을 거쳐야 했나요?
Erik: 그게 동등하게 여겨진다고는 말하지 않겠어요. 대학에 가는 게 응용과학대학에 가는 것보다 더 좋거나 더 어렵거나, 적어도 더 명예롭다는 생각이 아직 있어요. 학위 이름도 다르고요. 그런데 저에게는 별로 매력적이지 않았어요. 너무 이론적이었거든요. 저는 프로그래밍하는 법을 배우고 싶었어요. 아직 프로그래밍을 배우지 못했으니까요. 아마 좋아할 거라는 건 알고 있었어요. HTML 조각은 본 적이 있었지만 실제로 코드를 한 줄도 써본 적은 없었어요. 그래도 정말 좋아할 거라고 꽤 확신했어요. 막상 시작해 보니 첫해에는 코드를 한 줄도 쓰지 않았어요. 조별 과제에서 동료 학생들에 기대기만 했죠. 그중 한 명이 모든 걸 아는 환상적인 프로그래머였고 혼자 다 해서 저는 뭘 할 기회조차 없었어요. 그런데 2학년 때 '이렇게는 안 되겠다. 이대로는 프로그래밍을 절대 못 배우겠다'고 마음먹고 완전히 몰입해서 미친 듯이 프로그래밍했어요. 그게 깊이 파고든 계기였죠. C로 시작했는데, 시작하기에 정말 끔찍한 언어예요. C라는 언어 자체에 대한 제 생각은 접어두고, 입문용으로는 아주 어려운 언어예요. 2, 3번째 수업에서 연결 리스트를 만드는 건, 배경 지식이 없는 학생 입장에서는 전혀 반갑지 않은 일이죠. 그런데 저는 프로그래밍을 해냈고 너무 좋아서 여가 시간에도 프로그래밍을 많이 했어요. 제가 스스로 프로그래밍을 거의 터득한 방식은, 학교에서 가르친 방식이 정말 형편없었기 때문에, 제가 직접 쓰고 싶은 걸 정하고 그걸 만드는 것이었어요. 처음에는 그냥 허우적대고 별로 못 하죠. 그것도 사실 유용하지만, 결국은 연습, 연습, 연습이에요. 프로그래밍은 그냥 해봐야 얻는 기술이라는 걸 알았어요. 이론을 아무리 많이 배우고 영상을 천만 개 봐도, 실제로 시간을 들이지 않으면 좋은 프로그래머가 될 수 없어요. 그냥 해야 해요. 그리고 그게 큰 단계예요. 코드를 읽을 수 있게 됐을 때는 꽤 뿌듯했던 기억이 나요. 그런데 코드를 써야 하는 건 정말 큰 단계였죠.
Jonathan: 그렇게 뿌듯해하고, 코드를 써야 한다는 건 정말 큰 단계였죠. 지난 몇 회 방송에서 사람들에게 프로그래밍이 언제 '딱' 하고 와닿았는지 물어봤어요. 그런 순간이 있었나요? '아, 이제 다 이해됐다' 싶은 때요. 이론을 붙잡으려고 허우적대고 있었는지, 아니면 '아, 이건 별거 아니네' 싶은 순간이 있었는지요.
Erik: 딱 하나의 유레카 순간은 없었던 것 같아요. 여러 번 있었죠. 단계적으로 와요. 제가 실제로 쓴 첫 프로그램은 단어를 맞히는 거였어요. 지금 인기 있는 게임이 뭐죠, 그... 행맨 같은 거예요. 행맨이라고 합시다. 그걸 C로 썼는데 실제로 작동해서 제 게임을 직접 플레이할 수 있었어요. 그래서 무슨 일이 벌어지는지 조금은 이해하게 됐고, 그러면서 조금씩 나아갔죠. 뮤텍스와 관련된 것도 했어요. 기차들이 있고 서로 충돌하면 안 되는 거죠. 교차하는 지점에서 뮤텍스를 쓸 수 있었어요. 뮤텍스는 기본적으로 '멈춰' 또는 '가'를 알려주는 표지판 같은 거예요. 정말 재미있었고 꽤 뿌듯했어요. 그래서 교수님께 보여드렸는데, '기차를 네 대로 하고 싶으면 어떻게 하겠니?'라고 하시더군요. 저는 '아, 아, 그건 생각 못 했네요' 했죠. 그 한 문장이 눈을 뜨게 했어요. '아, 그런 걸 물어보실 수도 있다는 걸 미리 고려했어야 했구나' 싶었죠. 그래서 주말을 들여 코드를 매개변수화해서 기차를 여러 대 만들 수 있게 했고 해냈어요. 억지로 끼워 넣은 거라 예쁘진 않았지만 작동은 했어요. 그때 또 '아, 이거 정말 멋지다. 나도 이런 걸 할 수 있구나' 싶었죠.
Jonathan: 멋지네요. Eric이 이런 걸 할 수 있다는 걸 알겠어요. Eric을 알면서도 그렇고, 코딩을 배우면서도 그렇고요. 일단 아무거나 적어서 작동하게 만들고, 그다음에 다듬는 과정이 있잖아요. Eric의 경험도 그런가요? 그냥 일단 써 내려가서 작동하게 만들고, 다른 건 신경 쓰지 않고, 그다음에 다듬는 거요.
Erik: 네, 네. 첫 1년 정도는 그냥 돌아가기만 하면 정말 행복했어요. 미학 같은 건 없었어요. 그냥 돌아가면 좋은 거예요. 그리고 코드에 주석을 미친 듯이 달았어요. 교수님이 코드에 주석을 달라고 했거든요. 코드 대 주석 비율이 1대 10 정도였을 거예요. 엄청났죠. 그리고 제 가장 오래된 프로젝트는 아직도 온라인에 있어요. 제 첫 오픈 소스 프로젝트였어요. MSN 메신저 기억나세요? 메시지를 보낼 수 있던 거요.
Jonathan: 네, 어렴풋이 기억나긴 하는데요.
Erik: Winamp 기억나세요?
Jonathan: 네.
Erik: 네, Winamp는 미디어 플레이어였어요. Napster 시대였죠. MP3를 다운로드하고 Winamp로 재생했어요. 제가 하고 싶었던 건, 노래를 재생하면 MSN 메신저의 제 이름에 자동으로 추가되는 것이었어요. 그때 저는 Windows 프로그래밍에 꽤 관심이 있었어요. Win32였죠. 아주 옛날 방식이고 지금과는 다르지만 아주 저수준이고 멋진 것이기도 했어요. 그래서 C++로 플러그인을 만들었어요. 그때 제가 가장 좋아하던 언어였지만, 그때도 세 가지 언어만 알았으니 별 의미는 없죠. 아무튼 플러그인을 만들었어요. Winamp가 재생 중이면 멋진 Win32 API로 곡 이름을 가져와서 MSN 창에 있는 제 이름을 갱신했어요. 그래서 누구나 제가 무슨 노래를 듣는지 볼 수 있었죠. 그걸 온라인에 올렸어요. 다른 사람들도 좋아할 것 같았거든요. SourceForge였던 것 같은데, 지금은 아무도 안 쓰죠. 프라이버시 문제 같은 게 있었던 것 같아요. 그런데 실제로 세상 다른 사람들이 그걸 썼고 정말 놀라웠어요. 다운로드 수가, 뭐, 몇백 건이었고 사람들이 제가 쓴 소프트웨어를 쓰고 있었어요. 정말 최고의 기분이었죠. 그게 제 첫 오픈 소스 프로그램이었어요. 저는 임포스터 증후군을 별로 겪지 않았어요. '이건 내 코드다. 누가 나쁘다고 생각하면 그래도 된다. 작동하니 나는 만족한다. 다른 사람의 코멘트에서 배우면 된다'고 생각했어요. 저는 임포스터 증후군과는 거리가 있었는데, 저를 아는 사람들은 놀라지 않을 거예요.
Jonathan: 놀라지 않을 것 같아요. 대학의 교수님들과 선생님들 중에 특별히 기억에 남는 분이 있었나요? 가르치는 방식이 Eric이 배우는 속도를 높여주거나, 프로그래밍과 코딩을 이해하는 데 큰 영향을 준 분이요. 그리고 그분이 구체적으로 무엇을 해주셔서 이론에서 실제 구현으로 넘어가는 다리를 놓을 수 있었나요? 꽤 큰 질문인데, 원하는 만큼 잘게 나눠서 답해 주셔도 돼요. 네, 네.
Erik: 네, 네. 응용과학대학과 일반 대학을 나눠서 말해야겠어요. 후자부터 말하자면, 대학에서 사람들을 가르칠 수 있는 실력의 전반적인 수준이 아주 낮았어요. 기준이 아주 낮았죠. 제 느낌에는 대학에서 가르치는 사람들 상당수가 하고 싶어서가 아니라 해야 해서 가르치는 것 같았어요. 대학에서는 연구를 하고 싶은데, 일정 시간은 가르치는 데 써야 하거든요. 그렇지 않으면요, 뭐, 업무의 일부니까요. 그런데 그분들은 별로 좋아하지 않았어요. 저는 프로그래밍을 배운 뒤에 더 배우고 싶어서 그곳에서 프로그래밍 전공을 선택했는데, 정말 형편없었어요. 저에게 전수하려는 프로그래밍 지식의 수준이 너무 나빠서 거의 화가 날 정도였어요. 그래서 보안으로 전공을 바꿨어요. 보안에 딱히 관심이 있는 건 아니었지만, 프로그래밍 수업이 너무 형편없었거든요. 저는 대학 생활에서 정말 배운 건 딱 하나라고 늘 말해요. 제대로 된 글쓰기, 그러니까 출처를 제대로 조사해서 어떤 출처든 그냥 받아들이지 않고 근거를 확인하는 법이었어요. 그건 그 시절에 배웠지만, 프로그래밍에 대해서는 아무것도 배우지 못했어요.
Jonathan: 그건 역사와도 아주 비슷하게 들리네요. 출처를 어떻게 캐묻는지, 자기 논리가 맞아떨어지는지 어떻게 확인하는지 같은 것들이요. 역사에 대한 실력과 즐거움이 코딩과 코딩 학습에는 어떻게 나타났나요? 그런 교차점이 있었다면요?
Erik: 어려운 질문이네요. 뭐, 둘 다 읽기를 많이 해요. 역사는 읽는 거예요. 그리고 프로그래밍도 코드를 읽는 거죠. 코드를 실제로 쓰는 횟수는 코드를 읽는 횟수보다 훨씬 적어요. 그래서 읽기와 꽤 비슷해요. 고고학자가 된 기분일 때도 있어요. 새 직장에 가서 아주 오래된 레거시 시스템을 마주하고 길을 찾아야 할 때요. 구석구석을 들여다보며 뭐가 숨어 있는지 확인하는 느낌이죠. 때로는 벽장에서 시체가 나오기도 하고요. 그래서 탐험하는 느낌이에요. 그러니까, 이걸 하는 게 뭐가 재미있었냐고요? 다른 게 또 있었는지 모르겠네요. 도대체 뭐가 재미였을까요.
Jonathan: 감사해요. 업계에서 Eric에게는 어떤 부분이 즐거움이었나요?
Erik: 주로, 뭐, 선생님들이 들려주던 이야기요. 해적들, 배 밑으로 밧줄에 끌려가는 이야기 같은 걸 아주 생생하게 들려주셨죠. 저는 그런 걸 좋아해요. 정말 좋아해요. 그리고 로마인과 그들의 문화, 어떻게 퍼져나갔는지, 그리고 정치도요. 배신하고 찌르는 것 같은 거요. 정말 좋아했어요. 고등학교 때 라틴어도 했어요. 라틴어 자체는 전혀 좋아하지 않았지만, 번역해야 했던 이야기들은 정말 좋아했어요. 그래서 라틴어를 해야 한다는 건 싫었지만, 번역할 이야기들은 좋았어요. 그런데 2년 뒤에 그만뒀죠.
Jonathan: 그 이야기들은 저도 좋아요. 아니, 제가 역사에 대해 물어본 이유는요...
Erik: 네, 무슨 말인지 알아요.
Jonathan: 예술 쪽이나 사회 쪽, 그러니까 영어권 틀에서 말하는 예술, 역사 같은 범주에 속하는 걸 좋아하는 사람들을 많이 봤어요. 그런데 그런 영역을 좋아하던 사람들이 프로그래밍을 배우는 쪽으로 옮겨가는 걸 점점 더 많이 보게 됐어요. 제가 관심을 가지는 이유는, 분명히 겹치는 부분이 있고 그걸 조금 그려보는 게 여러 사람과 나눈 대화에서 정말 흥미로운 부분이었거든요. 큰 그림을 볼 수 있고, 공부하는 여러 분야에 걸쳐 다학제적인 접근을 할 수 있다면, 그걸 프로그래밍에 가져오는 게 정말 유리해요. 서로 다른 기술을 프로그래밍 영역에 적용할 수 있으니까요. 그리고 네, 그냥 그 얘기를 하고 싶었어요. 역사를 좋아했던 사람이 지금은 30개가 넘는 프로그래밍 언어 경험을 가지고 있고 그중 많은 걸 관리하고 있다는 게 흥미롭네요. 물론 관리라기보다는 Exercism에서 그 모든 언어를 다루는 데 깊이 관여하고 있는 거죠. 네, 네. 네, 말씀하세요.
Erik: 방금 하신 말씀으로 조금 돌아가도 될까요? 여러 종류의 사람들, 다양한 관심사를 가진 사람들이 프로그래밍을 한다고 하셨는데, 제가 그렇게 생각하는 이유 중 하나는 프로그래밍이 아주 기술적인 사람들에게도 매력적이기 때문이에요. 엄격한 규칙이 있고 언어는 아주 고정되어 있죠. 문법이 있고 구문이 있어요. 특정한 방식을 좋아하는 사람들에게 어필하는 것들이죠. 예를 들어 물리학자라면 규칙과 법칙을 좋아하잖아요. 프로그래밍에도 그런 것들이 있어요. 그런데 동시에 예술 같기도 해요. 그래서 책 쓰기에 비유하는 사람도 있는데, 저는 그게 아마 가장 좋은 예 중 하나라고 생각해요. 집 짓기에 비유하는 건 좋아하지 않아요. 우리가 소프트웨어를 집 짓듯이 만들면 집은 절대 지어지지 않을 테니까요. 제 느낌에는 프로그래밍은 정말 과학이자 예술이에요. Jeremy이 최근에 그런 얘기를 했어요. 아주 단순한 연습 문제 하나로도 사람들이 수백 가지 해법을 내놓을 수 있다는 거요. '이건 푸는 방법이 하나뿐이어야 하는데'라고 생각해도, 언제나 여러 가지 방법이 있어요. 그게 제가 프로그래밍을 좋아하는 이유예요. 작동하는 게 있어도, 스무 가지 다른 선택지를 탐구하고 써보면서 '이것도 되네' 하는 걸 볼 수 있으니까요. 예술이면서 과학이라는 이 조합이 정말 좋아요. 제가 실제로 창의적일 수 있는 유일한 방법이기도 하거든요. 저는 전혀 창의적인 사람이 아니에요. 왼손도 있고 오른손도 있지만, 제가 집안일이나 목공 같은 걸 하면 티가 나요. 아버지가 제대로 가르쳐 주실 수 없었던 탓도 있고요. 정말 흥미롭네요.
Jonathan: 그런데 저는 그런 것에 별로 관심이 없었어요. 저는 학교에서 미술을 했어요. 음악도 했고 기타를 치거나 했죠. 그래서 제가 가진 창의성의 틀은 늘 그림이나 음악 쪽이었어요. 코드의 창의적인 면은 정말 생각해 본 적이 없었고요. 그런데 그 얘기를 들으니 궁금해지네요. 그게 Eric에게는 어떻게 나타나나요? 악기를 연주하시나요? Eric이 음악을 좋아한다는 건 아는데, 그 두 가지를 이어보고 싶어서요.
Erik: 음... 네, 그래요. 기타를 배우려고 했어요. 아내에게는 정말 힘든 일이었죠. 우리가 아내의 학생용 오피스텔에서 살고 있었는데 20제곱미터 정도였어요. 그래서 제가 기타를 배우려고 하니 우리는 아주 가까이 있었죠. 아내가 그걸 견뎌준 게 아직도 신기해요. 그런데 저는...
Jonathan: 그냥...
Erik: 악기를 다루는 타고난 재능은 없어요. 어느 정도 수준에 이르기까지 정말 정말 열심히 노력해야 했는데, 그 수준도 아주 낮았어요. 템포 같은 건 괜찮게 할 수 있었어요. 그런데 어느 순간 기타 선생님이 즉흥 연주와 솔로를 해보라고 하셨는데 완전히 길을 잃었어요. 도저히 못 하겠더라고요. 제 안에는 음악적 창의성이 전혀 없어요.
Jonathan: 음악적 창의성이 전혀 없으시군요. 코딩은요? 음악과는 다르게요. 코딩을 처음 접할 때, Jeremy에게서 브리핑을 받거나 Exercism에서 기능 요청을 받아서 'X, Y, Z를 하자' 하는 상황이 오면, 그게 정신적으로 활력을 주나요? '좋아, 이걸 정말 파헤쳐 보자' 하는 느낌이 들고 그 과정을 즐기나요? 그때 살아난다고 느끼나요?
Erik: 음악과는 다르게요. 네, 네. 뭐, 프로그램은 아이디어를 떠올리고 그걸 실체로 만드는 거예요. 거의 작은 신이 된 기분이죠. 아무것도 없는 상태에서 아이디어가 생기면 뭔가가 존재하게 되니까요. 정말 마법 같아요. 스크립트를 만들 때면 지금도 아주 들떠요. 줄줄이 이어진 텍스트가 있고, 그게 실제로 뭔가를 하는 걸 보면요. 컴퓨터가 내가 시킨 대로 움직이는 걸 보는 게 정말 재미있어요. 지금도 좋아요. 창의성은 어떤 방식으로 만들지 탐구하는 데도 분명히 있어요. 그리고 일단 만들고 나면, 리팩터링 주기를 아실 거예요. 작동하는 게 있으면 반복해서 개선하고 더 나아질 수 있는지 보는 거죠. 저는 리팩터링을 정말 사랑해요. 책이 한 권 있는데, 어디 있지? 아, 카메라 밖에 있어서 안 보이네요. Martin Fowler의 『Refactoring』이에요. 소프트웨어에 관해 읽은 책 중 가장 좋은 경험 중 하나였어요. 리팩터링을 정말 좋아해요. 작동하는 게 있지만 더 좋게, 더 예쁘게, 더 빠르게, 기준이 무엇이든 개선할 수 있는 과정이니까요. 제가 Exercism을 정말 좋아하는 이유도 그래요. 그걸 위해 만들어졌거든요. 테스트를 풀고, 테스트 하네스가 있고, 코드로 뭘 하든 자유예요. 초록색이기만 하면 작동하는 거니까요.
Jonathan: 정말 좋네요. 그럼 계속 다른 시점으로 돌아가 볼게요. 이제 대학도 다녔고, 코딩하는 법도 배웠고, '좋아, 나는 이 배움의 과정에 전념하겠다, 깊이 파고들겠다'고 마음먹었잖아요. 그러면 그때부터는 어떻게 됐나요? 본격적으로 전념하고 나서 커리어를 생각하기 시작했을 텐데, 대학에 다니면 항상 '평생 뭘 하고 살까'가 큰 고민이잖아요. 어떻게 흘러갔나요? 그때 무슨 생각을 했고, 앞에 무엇이 열렸나요?
Erik: 네. 저는 커리어를 진지하게 고민해 본 적이 없어요. 살면서 한 번도 없었던 것 같아요. 제가 신경 쓰는 건 좋아하는 일을 하는 것뿐이에요. 그리고 집에서 가까운 곳이어야 해요. 차를 많이 몰고 싶지 않거든요. 아무튼 커리어는 고민한 적이 없어요. 그리고 정말 운이 좋았어요. 한두 번을 빼면 거의 지원서를 낼 필요가 없었어요. 항상 저를 아는 친구나 사람들이 있었어요. Exercism도 마찬가지예요. Jeremy이 저를 알아서 지원할 필요가 없었어요. Jonathan이 거쳐야 했던 서너 단계 면접 같은 걸 거치지 않았죠. 어쩌면 Jonathan 쪽은 더 많았을 수도 있고요. 뭐, 알아요. 아무튼 저는 그런 게 없었어요. 일자리를 찾을 때도 마찬가지였어요. 저는 학교에서 배우는 동안에도 늘 일을 했어요. 고등학교 때도 항상 돈을 조금이라도 벌려고 했어요. 부모님께 돈이 많지 않았으니까요. 제 몫은 제가 벌어야 했죠. 그런데 저는 일하는 걸 좋아해요. 대학에 다니면서 프로그래밍 일을 20시간 정도 했던 것 같아요. 대학에서 실제로 보내야 하는 시간이 아주 적어서 돈을 꽤 벌 수 있었어요. 그 돈으로 거대한 DVD 컬렉션을 샀죠.
Jonathan: 그 얘기는 하지 말아요.
Erik: 그 얘기는 하지 말아요. 네, 죄송해요. 사실 대부분 다 처분했어요. 정말 좋은 기억이 있는 것들만 남겼고 나머지는 대부분 넘겼어요. 한때는 DVD가 400~500장이었어요.
Jonathan: 한때 400~500장이요. 아, 재미있네요.
Erik: 그 정도였어요. 그 정도였죠. 네. 그런데 대학에 다니던 중에, 제가 10살쯤이던 시절의 그 프로그래머였던 친구가 저와 같은 대학을 다녔어요. 그 친구가 회사에 다니고 있었는데 '돈 좀 더 벌고 싶으면 이 회사에 들어오지 않을래?'라고 했어요. 그래서 들어갔고, 대학을 마친 뒤에도 기본적으로 그대로 남았어요. 그런데 박사 과정을 해볼 생각이 없냐고 물었어요. 그런데 저는 그걸 '박사 과정에서 흥미로운 걸 찾았으니, 우리 이름도 그 논문에 올리고 싶다'는 뜻으로 읽었어요. 그건 순전히 운이었어요, 참고로. 일은 제가 했지만 운이었죠. 아무튼 '네가 쓸 논문에 우리 이름을 올려서 논문 실적을 얻고 싶다'는 뜻으로 받아들였어요. 그래서 하고 싶지 않았어요. 4년 동안 이론만 하는 것도 하기 싫었고, 학계 전체가 저에게 별로 매력적이지 않았어요. 회사 안에서 실무적인 일을 하는 게 훨씬 편했어요. 그래서 그냥 다니던 곳에 남기로 했어요. 그때 저는 PHP를 했고 팀이 아주 좋았어요. 지금 팀을 빼면, 그렇게 다양하고 유능한 팀에서 일해 본 적이 없어요. 그런데 경영진이 팀을 이끌었는데 정말 형편없었어요. 불만이 가득한 기술 환경이었죠. 좋지 않았어요. 그래도 저는 많이 즐거웠어요. 그런데 PHP는 제가 가장 좋아하는 언어가 아니에요. 그래서 C#에 관심이 있었죠. C# 1.0 시절부터 C# 팬이었어요. 그때는 꽤 거칠었죠. 미국에서 책을 주문했는데 세금도 더 내야 해서 결국 꽤 비쌌지만, 그 책을 정말 많이 활용했어요. 그래서 'C#으로 일을 하고 싶다'고 했어요. 곁다리가 아니라 일로요. 그래서 지원했죠. 대학 쪽 지원이기도 했지만 연구를 하는 건 아니었어요. 대학의 여러 부서를 지원하는 일이었어요. 그렇게 C#으로 7년 정도 일했어요.
Jonathan: C#으로 7년 정도 일하셨군요. 그 이야기를 좀 해주세요. 처음에는 자원봉사자나 기여자로 시작하셨잖아요. 그리고 거기서부터 차근차근 쌓아오신 거고요.
Erik: 네, 네. 대학에서 일할 때는 뭔가를 공부하거나 컨퍼런스에 가는 걸 아주 자유롭게 허용해 줬어요. 그래서 어느 시점에 함수형 프로그래밍이라는 걸 듣게 됐어요. '이건 뭘까' 싶었죠. 대학에서 선택 수업으로 한 번 가르친 적이 있다는 건 알았지만 실제로 해본 적은 없었어요. 함수형 프로그래밍을 배워보면 재미있을지도 모르겠다고 생각했어요. 함께하고 싶어 하는 동료도 있었고요. 그래서 무료 강의를 들었어요. Coursera의 Scala 강의였는데, 지금은 돈을 내야 하지만 그때는 무료였어요. Scala를 만든 Martin Odersky가 가르쳤고, Scala는 우리 Exercism에도 있는 함수형 언어예요. 함수형 프로그래밍을 배우는 게 정말 재미있었고, 때로는 머리로 싸우는 느낌이기도 했어요. 정말 다른 사고방식이니까요. 그래도 계속 해나갔고 정말 좋아했어요. 그리고 다른 학생들과 논의할 수 있는 포럼이 있었어요. 예를 들어 못 푼 연습 문제 같은 걸요. 그런데 누군가 'Scala를 더 배우고 싶으면 어떤 자료를 쓰면 되나요?'라고 물었고, 누군가 'Exercism을 해봐요. 작은 퍼즐 같은 다양한 연습 문제를 풀 수 있는 멋진 게 있어요'라고 했어요. '오, 좋은데' 싶어서 가입했고 Scala 트랙을 했어요. 정말 많이 배웠고, 그게 제가 함수형 프로그래밍 세계에 발을 담근 계기였어요. 그래서 더 깊이 들어가 볼까 해서 Haskell로 갔어요. 그때 저에게는 정말 깊은 다이빙이었죠. 당시에는 Exercism 1세대라서 그냥 사람들이 코드에 코멘트를 달아주는 방식이었어요. 정식 멘토링 시스템 같은 건 없었죠. 그런데 Haskell 사람들은 정말 환상적이었어요. 기본적으로 그분들에게 Haskell을 배웠어요. 구글링도 많이 하고 이상한 해법을 찾기도 했고, 저도 이상한 해법을 만들기도 했는데, 그분들은 늘 관용적인 Haskell답고 좋은 쪽으로 이끌어 주려고 했어요. 정말 좋은 경험이어서 '나도 다른 사람에게 이걸 해줘야겠다, 나도 도울 수 있겠다' 싶었어요. 저는 늘 돕는 걸 좋아했어요. 그래서 C#을 하면서 다른 사람의 C# 코드에 코멘트를 달기로 했어요. 좋았어요. 그런데 C# 트랙에는 연습 문제가 40개쯤 있는데 Haskell은 더 많더군요. 왜 그럴까 궁금해서 알아봤더니, Exercism에 풀 리퀘스트를 보내서 새 연습 문제를 추가할 수 있었어요. 그게 저를 푹 빠지게 했죠. 그래서 주말마다 연습 문제를 추가했어요. C#을 다 하고 나서는 'F#을 해보자' 싶었어요. F#은 함수형이고 Microsoft 생태계에 있으니까, 제가 좋아하는 두 가지를 합치는 거죠. 그래서 F#도 같은 방식으로 했어요. F# 메인테이너로서 연습 문제를 만들었고 정말 정말 좋아했어요.
Jonathan: 정말 정말 좋아하셨군요. 언어 하나를 정해서 '좋아, Scala를 해봐야지' 하고 맛을 보고, 그다음 그걸 깊이 파고들었잖아요. 그러면 언어마다 이해하는 데 걸리는 시간이 점점 줄었나요? 지금은 여러 언어를 가지고 계시니까요. 어떻게 흘러갔나요?
Erik: 네, 네. 자연어도 똑같아요. 프랑스어를 배워서 프랑스어를 잘하면, 스페인어를 배우는 건 훨씬 쉬워요. 공유하는 지식이 많으니까요. 어휘를 공유하고 거의 방언처럼요. 컴퓨터 프로그래밍도 같아요. C를 알고 C++로 넘어가면 새로운 개념이 많지만, 완전히 똑같은 것도 많아요. C 계열 전체가 그렇죠. 제가 프로그래밍을 좋아하는 이유 중 하나도 그거예요. 가계도 같은 게 있거든요. Lisp 계열이 있고, ML 계열이 있고, C 계열이 있고요. 역사와 비슷해요. 가계도나 계보 같은 게 있죠. 너무 크게 말했네요. 네, 그게 Haskell이나 Prolog예요. 저는 그런 외톨이 같은 언어들도 좋아해요. 독특한 아이디어를 가지고 있으니까요. 제가 보통 시도하고 싶어 하는 게 그런 거예요. 모든 프로그래밍 언어가 많은 지식을 공유해도, 뭔가 다르게 하는 언어를 찾는 거죠. 모든 언어에 불리언 논리가 있고, 불리언 논리는 정해진 거예요. 어디서나 똑같이 작동해요. 앰퍼샌드 두 개를 써야 할 수도 있고 and라는 단어를 쓸 수도 있지만, 기본은 같아요. 그래서 기본을 한 번 잘 익히면 다른 언어에 더 쉽게 적용할 수 있어요.
Jonathan: 역사에서 가계도나 계보를 보는 것과 거의 비슷하네요. 다른 언어로 더 쉽게 넘어가고요. 코딩을 배우면서 자기 경험을 고려하게 되는데, 사람들이 코딩을 배우기 위해 하는 행동이나 습관에는 어떤 게 있나요? 여러 분야에서 겹치는 게 분명히 있을 거예요. 방금 전념해서 깊이 파고들고 이해할 때까지 씨름했다고 하셨는데, 사람들이 스스로를 배울 수 있는 위치에 놓는 다른 행동이나 습관이 또 있을까요? 정말 잘 배우는 사람들이요.
Erik: 음, 저는 늘 사람들에게 자기가 만들고 싶은 걸 만들라고 권해 왔어요. 제가 PHP를 배울 때는 제가 본 IMDB 상위 250편 영화를 기록하는 걸 만들었어요. 영화를 많이 봤기 때문에 그 영화들을 하나하나 확인하고 싶었죠. 그렇게 만들고 싶은 걸 만들면서 PHP와 MySQL을 많이 배웠어요. 벽에 부딪히면 멈추고 싶지 않고 계속하고 싶고, 고쳐서 작동시키고 싶어지거든요. 프로그래밍을 배우기 시작한 여러 사람에게 이 팁을 알려줬고 잘 통했어요. 그리고 요즘은 제가 코딩을 배우던 때와 아주 달라요. Stack Overflow 같은 것도 있고, 온라인에서 찾을 수 있는 지식이 엄청나죠. 그런데 올바른 자료를 찾는 것도 어려워요. 그래서 Exercism이 정말 빛을 발할 수 있다고 생각해요. 우리 커뮤니티에는 어떤 자료가 좋은지 아는 사람들이 있으니까요. 그게 새로 시작한 사람들이 어려워하는 부분 중 하나예요. 그리고 또 하나는, 실제로 처음부터 시작하는 자료는 거의 없다는 거예요. Exercism 독자는 보통 이미 언어 하나는 아는 사람이에요. 그래서 다른 언어로 넘어가거나 그 언어를 더 깊이 파고들죠. 그런데 프로그래밍 배경이 전혀 없는 사람을 위한 건 아니에요. for 루프가 뭔지 모르고, 변수가 뭔지도 모르는 사람이요. 문자열은 머릿속에 있는 것과 완전히 다른 거고요. 네, 아내가 제가 문자열 얘기하는 걸 보면 늘 이상한 눈으로 봐요. 네덜란드에서는 다른 뜻이거든요.
Jonathan: 네. 여기서 좀 일반화를 해볼게요. 지난 몇 년 동안 코딩과 프로그래밍을 아는 사람이 점점 늘어난 건 사실일 거예요. 예전에는 그 영역에서 어떻게 움직여야 하는지 아는 사람이 아마 더 적었죠. 이 업계가 빠른 속도로 계속 커지면서, 여러 가지에 대한 의견도 많고 특정 주제에서 자기 입장이 어디인지 찾아가는 사람들도 많아요. '내가 죽을 때까지 지킬 언덕'이라는 개념은, 물론 건강한 방식으로요, 정말로 싸워서 지키고 싶은 의견이 무엇인지죠. 그렇다면 Eric이 지키고 싶고 '나는 이 지점에서는 안 움직인다'고 못 박고 방어하고 싶은 한 가지는 무엇인가요?
Erik: 그런 의견이 많지만, 여기서 설명하고 싶은 건 이미 아는 것보다 더 많은 언어를 배워야 한다는 거예요. 모르는 새 언어를 시도하고, 이미 아는 것과 아주 다른 언어를 시도해 보세요. 예를 들어 C#을 안다면 그냥 C#에 머물러도 괜찮아요. 그런데 시간과 의지가 있다면 F#이라든지, Kotlin이라든지, 뭔가 다른 걸 해보고 차이가 무엇인지 보세요. 훨씬 나은 프로그래머가 될 거예요. 제가 F#을 배운 게 저를 더 나은 C# 프로그래머로 만들었다고 100% 확신해요. 서로 다른 언어이고 철학도 다르지만요. 요즘 언어들 사이에는 겹치는 부분이 아주 많아요. 언어가 아직 아주 어렸을 때는, 예를 들어 Lisp은 C와 전혀 닮지 않았어요. 함수형 언어는 명령형 언어와 아주 달랐죠. 그런데 C#, Java, Kotlin, Rust 같은 현대 언어들은 다른 언어에서, 함수형 언어에서도 영감을 받아요. 그래서 대학 다닐 때 늘 나오던 농담이 '함수형 프로그래밍은 훌륭한데 아무도 안 쓴다'였는데, 이제는 사실이 아니에요. 함수형 언어로 일하지 않더라도 함수형 개념은 어디에나 있어요. JavaScript에도 함수형 개념이 많고, C#에도 고급 패턴 매칭, LINQ 등 함수형적인 게 아주 많아요. 보시다시피 언어들이 여기저기서 개념을 빌려오고 있어요. 그래서 어떤 언어가 함수형이고 어떤 게 그냥 명령형인지 그렇게 명확하지 않아요. 이제는 뒤섞여 있죠. 그래도 새 언어를 배우기 시작하면 얻는 게 많다고 생각해요. '매년 새 언어를 하나씩 배워라'고 한 사람들도 있는데, 저도 그렇게 하려고 해요. 누군가에게는 부담스럽고 압도적으로 느껴질 수 있다고 상상해요. 그래도 적어도 하나, 조금 불편한 영역에 있는 언어를 시도해 보세요. 장담하는데, 많이 배우게 되고 전반적으로 더 나은 프로그래머가 돼요. 이미 쓰고 있는 언어에서도요.
Jonathan: 그리고 이미 쓰고 있는 언어에서도요. 사람들이 특정한 필요를 충족하려고 새 언어를 만드는 건 분명하죠. 그런데 명령형과 함수형이 조금씩 합쳐지고 있다고 하셨는데, 언어들이 사라지고 몇 가지 핵심 언어만 남는 상황이 올까요? 아니면 그건 순진한 생각일까요?
Erik: 아니요, 아니요. 사람들은 그렇게 되기엔 의견이 너무 강해요. 그래서 새 언어는 언제나 나올 거예요. 매일 새 언어가 나올 텐데, 그래도 괜찮아요. 하지만 나무는 흔들리겠죠. 인기 있는 것들은 결국 살아남을 거예요. Java나 C#이 당장 사라질 것 같지는 않아요. 예를 들어 C나 C++은 늘 거대한 언어였는데, 이제 Rust가 같은 문제를 더 안전하게 다루려는 새로운 시도로 나왔어요. 안전성을 내장했죠. 정말 훌륭한 언어이고 저도 더 배워야 하는 언어예요. Rust가 서서히 C나 C++ 대신 쓰이기 시작하는 걸 보는 게 흥미로워요. 개인적으로 아주 좋은 일이라고 생각해요. 예를 들어 Linux에서는 이제 드라이버를 Rust로 작성할 수 있어요. 항상 C++이었죠. 그런데 이제 Rust로 드라이버를 작성하는 걸 지원해요. 꽤 큰 진전이죠. 그래서 언어는 계속 있을 거예요. 모든 목적에 맞는 언어를 만들 수는 없으니까요. 그래서 여러 언어를 배워야 한다고 생각하는 이유이기도 해요. 상황마다 다른 언어가 필요하니까요. 망치를 톱처럼 쓰는 것과 같아요. 무슨 표현이더라...
Jonathan: 표현이요? 톱이 필요한데 망치밖에 없다, 그럼 어떻게 할 거냐, 그런 거죠?
Erik: 네, 네, 그런 거예요. 못과 망치에 관한 거였던 것 같은데, 저는 영어 속담을 잘 못해요. 네덜란드어 버전으로 괴롭히지는 않을게요. 기본적으로, C#만 안다면 모든 것에 C#을 쓰고 싶은 유혹이 생길 수 있어요. 그런데 시스템 프로그래밍이나 AI에는 C#보다 더 나은 언어가 있을 수 있어요. C#으로 할 수 있다고 해서 해야 한다는 뜻은 아니죠. 그래서 언어를 더 많이 알면, 자신이 일하는 영역에 더 잘 맞는 좋은 선택을 하기에 더 유리해요.
Jonathan: 좋아요. 재미있고 아름답네요. Exercism 커뮤니티와 관련해서, 이번 주에 Exercism 커뮤니티에 강력히 추천하고 싶은 것이 있나요? 뭐든 좋아요. 산책을 해보라든지, 물구나무를 서보라든지요. 그리고 하나 이상이어도 되고, 세 가지 추천도 가능해요.
Erik: 재미있고 유용해요. 뭘 말할지 이미 알고 있어요. 네. 네. 떠오르는 건 새로 생긴 Dig Deeper 탭을 확인해 보라는 거예요. 연습 문제를 풀고 나면, 적어도 한 번 반복해 본 뒤에는 접근법을 볼 수 있는데, 그건 연습 문제를 푸는 여러 가지 방법이에요. 원래 Exercism 1세대에서 코멘트와 함께 모두가 배우던 방식이 바로 다른 사람의 코드를 보고 어떻게 풀었는지 확인하는 것이었어요. 저도 Haskell을 그렇게 많이 배웠어요. 멘토 코멘트도 있었고요. '아, 이렇게도 할 수 있구나' 하고 보면서 직접 해보고, '이거 정말 우아하다, 더 많은 걸 할 수 있겠다' 하고 다른 연습 문제에 적용하는 거죠. 이렇게 여러 가지 방법을 찾아볼 수 있다는 건 프로그래밍의 예술적인 면을 다시 떠올리게 해요. 서로 다른 방식으로 문제를 풀 수 있다는 점이요. 그래서 이런 다양한 접근법이 있어요. 저는 문자열 뒤집기에 관한 글과 접근법을 썼어요. IT 면접에서 자주 나오는 기본 질문 중 하나죠. 문자열을 어떻게 뒤집나요? C#에는 몇 가지 관용적인 방법이 있는데 서로 다르고 성능 특성도 달라요. 하나는 성능에 아주 치중했지만 가독성은 떨어지죠. 웹사이트에서 어떤 방식으로 풀고 나면 '다른 방식도 있다'고 볼 수 있다는 게 좋아요. 그렇게 하면 이런 장점이 있고 이런 트레이드오프가 있다는 걸 알 수 있죠. 서로 다른 접근법을 볼 수 있을 뿐 아니라, 우리는 그중에서 고르는 데 도움이 되는 소개 문서를 쓰려고 해요. IT에는 항상 트레이드오프가 있어요. 그냥 최고인 해법은 거의 없어요. 항상 다르게 쓸 수 있죠. 그래서 가장 읽기 좋은 해법이 항상 성능이 가장 좋은 건 아니에요. 트레이드오프를 이해하고 여러 접근법 중에서 선택하도록 돕는 것도 Dig Deeper 탭에서 하려는 일이에요. 요즘 여가 시간에 그걸 쓰고 있는데, 이런 내용을 정리해서 사람들과 나누는 게 정말 재미있어요. 그래서 사람들이 직접 써보거나 접근법을 읽어보길 정말 권해요. 모든 연습 문제에 있는 건 아니에요. 이 기능은 일주일 전에 시작했으니까 C# 연습 문제 몇 개로 한정적이겠지만, 앞으로 크게 확장할 거예요. 이런 것들은 커뮤니티 풀 리퀘스트를 받아요. 기꺼이 작성하는 걸 도와드리고, 마무리까지 도와서 여러분의 언어 지식을 나눌 수 있게 할게요. 사람들이 좋아하는 것 중 하나라고 생각해요. 어떤 언어를 좋아하면 다른 사람들도 좋아해 주길 바라니까요. 접근법은 자기 언어로 뭘 할 수 있는지 보여주는 아주 좋은 방법이에요. 꼭 확인해 보세요. 네.
Jonathan: 확인해 보세요. 이번 주에 다른 추천도 있나요?
Erik: 음, Exercism에 너무 푹 빠진 사람처럼 들릴 위험을 무릅쓰고 말하면, 저는 Exercism 포럼을 정말 좋아해요. 제 경력에서 느낀 건데, IT에 관심 있는 사람들의 커뮤니티 중에서, 다른 사람이 나를 바보처럼 느끼게 하거나 논쟁이나 공격적인 분위기 없이 이야기할 수 있는 안전한 공간을 찾기가 정말 어려워요. 그래서 우리가 포럼을 통해 이곳을 안전하고 즐거운 곳으로 만들려고 하는 게 정말 좋아요. 동시에 아주 훌륭한 프로그래머들을 만날 수 있는 곳이기도 하고요. 실력이 뛰어나고 자기 언어나 프로그래밍 영역에 깊은 통찰이 있는 사람들이요. 다른 사람들이 쓴 글을 읽는 것만으로도 정말 즐거워요. '가장 좋아하는 프로그래밍 책'에 관한 스레드도 있는데, 거기서 몇 권을 제가 읽을 책 목록에 올렸어요. 모든 책을 다 접할 수는 없지만 다른 사람들은 읽었으니까, 집단지성을 활용할 수 있죠. 기본적으로요.
Jonathan: 다른 사람들이 읽은 걸 모아서 집단지성을 활용할 수 있다는 거죠. 그 스레드에는 정말 알짜배기가 있을 거예요. 아무튼 정말 좋네요, Eric. 추천을 하나 더 하고 싶으시면 환영이고요, 아니면 이제 슬슬 마무리로 들어갈게요. 더 하실 생각이나 코멘트가 있나요?
Erik: 음, 네, 그건 영상에 담기겠네요. 아니요, 별로요. 세 번째 걸 찾으려고 했어요.
Jonathan: 저도 항상 세 번째 걸 찾으려고 노력해요. 그 정도면 충분해요. 그런데 Eric, 시간 내주셔서 정말 감사해요. 이야기를 듣는 것만으로도 정말 좋았고, 그게 어떻게 IT로 이어졌는지 들을 수 있어서 좋았어요. 특히 역사에 대한 얘기가 정말 좋았어요. 어쩌면 역사와 코딩이 어떻게 겹치는지 좀 더 생각해 보고 나중에 나눠 주실 수도 있겠네요. 정말 감사해요. 팀에 함께해 주셔서 훌륭하고요. 저는 Eric에게 정말 많이 배웠고 앞으로도 계속 배울 거예요. 크게 축하드려요. Exercism 웹사이트에서 평판 점수 10만 점을 넘기셨거든요. 반칙했다고 하시겠지만, 그래도 놀라운 성취로 받아들일게요. 정말 감사해요. 그리고 이걸 듣고 계시는데 Exercism을 아직 모르신다면, Exercism을 확인해 보세요. 그 공간 어딘가에서 Eric을 만나게 될 거예요. Eric, 정말 감사해요. 오늘 정말 즐거웠어요. 이제 녹음을 잠시 멈추고 뒤에서 이야기 나눠요. 시간 내주셔서 감사하고, 저만큼 즐거우셨으면 좋겠어요. 정말 좋았습니다.
Erik: 그러죠 뭐. 좋아요. 저도 즐거웠어요. 저도요. 정말 감사합니다.
커뮤니티 멤버들의 이야기를 듣고 배우며 영감을 받아봐요.