Skip to content

[번역] 도우면서 배우기

Published:

수 년에 걸쳐 저는 Elm을 배워왔습니다. 보통 저는 새로운 언어를 배울 때 이러저러한 과정을 거칩니다:

그런데 기대하지 않던 순간에 제 고정관념을 바꾸는 일이 생겼습니다.

저는 elm-lang 슬랙 커뮤니티에 가입하여 #beginners 채널을 둘러보기 시작했습니다. 대부분의 질문이 “X를 위한 문법이 뭐죠?” 이거나 “Y를 하려면 어떻게 하죠?” 같은 질문이었습니다. 대부분은 공식 문서에 답이 적혀있는 질문들이었습니다.

소프트웨어 산업에서 짬이 찬 대부분의 사람들과 같이, 저는 몇가지 기술을 연마해왔습니다:

How do I Elm?

사람들에게 그냥 “제발 그놈의 메뉴얼을 읽어보세요(RTFM)”, “구글은 여러분의 친구입니다” 혹은 “REPL(콘솔)에서 한번 쳐보세요” 같은 말을 하는게 편할 수도 있습니다. 그러나 이는 공감하기 힘들거나 자각하기 힘든 답변이 됩니다. 여러분이 당연하게 여기는 기술들은 다른 사람에게는 그렇지 않습니다. 특히 #beginners 채널 같은곳에서 질문을 하는 사람들에게는요.

그 대신에 저는 문서를 찾아서 해당 질문에 대해 적절한 답이 될 수 있는 부분의 링크를 공유해 주었습니다. 필요하다면 설명도 곁들였습니다. 그러면서 단순히 문법이나 함수에 대해 찾아주는 것을 넘어 더 개념적인 질문을 돕기 시작 했습니다:

왜 컴파일러는 이벤트 핸들러를 위한 스니펫으로 타입 Html a 를 쓰는 것을 좋아하지 않을까요?

<select> 에다 이벤트를 어떻게 집어넣을 수 있나요?

type User = User String Int 같은 중복은 어떻게 처리되나요?

결과적으로 저는 빠르게 Elm의 문법과 코어 라이브러리에 관한 지식을 다질 수 있었습니다. 그리고 최근에 생겨난 패턴에 대해 살펴보기 시작했습니다. 제가 전혀 몰랐던 라이브러리에 관해 도울 수도 있게 되었습니다.

간단하게 퍼즈 테스터를 만들려면 어떻게 해야할까요? map 작동에 대해서 알아야겠군요. JSON 디코더 3개를 엮으려 하신다구요? 아마 Json.Decode.map3 함수가 있을걸요?

점점 이런 작업이 편해지면서, 저는 단순히 문서만 살펴보는게 아니라 소스를 파고들어 왜 특정 행동이 특정 방법으로 작동하는지 설명하고자 하였습니다.

시간이 흘러, 자주 질문이 들어온다고 느끼는 주제에 대해서 블로그 글도 작성했습니다. 이를테면 ‘커스텀 DOM 이벤트 핸들러를 작성하는 방법’처럼요.

이러한 과정을 거치는 동안 초심자의 마음가짐을 유지하는 것은 중요합니다. 때때로, 질문에 대답하는 것은 함께 배워나가는 과정이었습니다. 저는 처음에는 답을 몰랐거나 아주 모호하게 이해하고 있었을 뿐이었지만 토론을 거쳐가면서 지식을 발전시킬 수 있었습니다. 다른 때엔 제가 대답할수 없었지만 지금은 알게 된 개념에 대해 설명하려고 노력했습니다. 겸손함과 ‘잘 모르겠습니다’ 라고 말하는 능력은 질문 받는 상황(these situations)을 배움의 기회로 바꿀 수 있습니다.

다른사람에게 조언하거나 도움을 주기 위해 “전문가”가 될 때까지 기다리지 마세요. 당신이 초보자라 하더라도 그 결과는 엄청납니다(The payoffs are massive). 끊임없이 배우고, 끊임없이 지식을 나누세요.


번역 후기

사실 저는 Elm을 들어는 봤지만 제대로 사용해본 적은 없습니다. 함수형 프로그래밍의 개념에 대해서 가볍게 알아보고자 할 때 이러한게 있다 까지는 보았고, 호기심에 가벼운 튜토리얼을 따라가보았지만 아직 저에겐 너무 어려웠습니다.

하지만 이 글의 내용은 Elm이랑 크게 관련 있는 것은 아니고, 개발자로서 끊임없이 배움의 과정을 걷는 사람들에게 생각할 거리를 준다는 느낌을 받아 번역을 해 보았습니다. 그래서 위의 Elm관련 번역은 부적절한 번역일 수 있으니 Elm을 사용해본 분들의 많은 조언 부탁드립니다.

저 자신도 RORLAB 슬랙의 #question_answer 채널에 질문이 올라오면 당장 제가 모르는 내용이라도 검색을 해 봅니다. 제가 답변했던 내용들 일부는 제가 실제로 해 본 것도 아니고, 구글에서 적절하게 검색하여 찾은 내용이지만 해당 질문을 한 회원은 문제를 해결할 수 있었습니다. 그러면서 제가 몰랐던 지식도 조금씩 알아나갈 수 있었고 개발 문서만 보는 것을 넘어서 소스를 들여다 보는데 거부감이 많이 줄어들게 되었습니다.

이 글의 핵심은 마지막 문장이라 생각합니다. 저도 당연히 ‘번역의 전문가’가 아님에도 이러저러한 글을 번역해서 올리고 있습니다. 분명 더 예전에 번역했던 글들의 퀄리티를 생각하면 다시 하고 싶지만..시간상.. 넘어가도록 하고, 조금씩 찾아가고 물어가면서 퀄리티를 향상시키고자 하고 있습니다. 제가 작성하는 코드도 그렇게 되었으면 하는 바람입니다.

다음에는 ‘초심가의 마음가짐’에 대한 글을 번역해보려 합니다.