좀 많이 늦은 두번째 회고를 작성해본다. FEConf2018에 스피커로 참여했다.

FEConf 2018

FEconf2018

FEConf 2018에 스피커로 참여했다. 제목은 Redux-Saga: 제너레이터, 사이드이펙트, 채널이다. 이직하고 정신이 없는 와중에도 얼떨결에 신청했다. 준비하며 꽤 고생했지만, 결과적으론 정말 좋은 경험이었다. 언제 또 이 정도 규모의 컨퍼런스에서 발표를 해볼 수 있을까 싶다. 발표 주제로 한 Redux-Saga는 사실 토스팀에서는 한 번도 사용하지 않았다. 대신 전 회사 NHNEntertainment에서 TOAST File을 개발하며 참 적극적으로 사용했다. Redux-Saga를 좋아하게 된 것은 단순한 편의뿐만이 아니라, 개념적으로도 많이 배울 수 있던 점 때문이었다. Pull과 Push, Blocking과 Non-Blocking, SideEffect, CSP 등 지금까지 개발하며 배운 내용 중 가장 인상 깊었다.

목적

Redux-Saga는 공식 문서에 예제가 꽤 잘 나와 있다. 관심이 있는 개발자라면 누구나 다 이해하고 활용할 수 있다. 그래서 어떤 내용을 발표할 수 있을까에 대한 고민을 많이 했던 것 같다. 이 발표를 듣는 사람들은 무엇을 얻어갈까? 다른 곳에서 얻을 수 없는 혹은 얻기 힘든 그런 것들을 전해주고 싶었다.

이 라이브러리는 익히기만 하면 활용하는 데는 큰 문제가 없지만, 진입장벽이 꽤 높다. 그래서 진입장벽에 집중했다. 진입 장벽이 높은 이유는 무엇일까. 당장 제너레이터함수를 사용해 Saga를 만들고 이펙트를 Yield 하라는 조금 난감한 튜토리얼 때문에 진입장벽이 높다 생각했다. 이런 튜토리얼을 조금이라도 더 의지 있게 따라가기 위한 무언가가 필요하다 생각했다. 그리고 왜 Redux-Saga가 필요한지 배경을 설명해서 그 의지를 만들어주자 결심했다. 배경을 이해하고, 비동기적인 지식을 조금만 더 쉽게 받아들이도록 하는 진입점을 추가하면, 진입장벽이 완만해질 것이라 기대했다. 요약하자면, 배경 설명을 통한 동기부여로 진입장벽을 넘을 수 있게 하자는 목적을 가졌다.

Redux-Saga를 검색해보면 공통적인 내용이 있다. Redux와 Redux-Thunk를 사용하는데, 코드의 복잡도가 증가해서 Redux-Saga로 전환한다고 설명한다. 물론 맞는 말이다. 하지만 좀 더 근본적이고 명확한 배경을 설명하고 싶었다. 왜 만들어졌고 어떤 문제를 해결할 수 있는지, thunk에 국한된 상황이 아닌 조금 더 일반적인 상황에 대한 문제의식과 이를 해결하기 위한 saga의 방식을 전하고자 했다.

차별성

배경을 설명하는 것만으론 만족스럽지 않았다. 그래서 두 번째로 생각한 것은 차별성이었다. 참가비까지 내며 컨퍼런스에 오신 분들에게, 구글에서 검색해서 쉽게 찾을 수 있는 그런 내용은 설명하고 싶지 않았다. 어디에서도 쉽게 찾아볼 수 없으면서도 핵심적인 내용을 설명하고 싶었다. 참석자분들에게 혁신적이기 까진 못하더라도 참가비가 아깝지 않았다는 갖게 해주고 싶었다.

기존의 Redux-Saga 관련 글들을 자주 찾아봤었다. 비슷했다. 이펙트 API를 활용하는 방법, 앞서 언급한 thunk에서 saga로 전환하는 방법, 로그인 예제, 실패 처리 등의 것들이 있었다. 이런 내용을 제외한, 핵심적이면서도 많이 알려지지 않은 것이 무엇일까 생각했다. 내가 찾은 답은 채널이었다. 채널은 생각보다 많은 내용을 담고 있는 API였다. CSP(Communicating Sequential Processes)부터, Push & Pull 방식의 처리, Buffer 등 많은 것을 배울 수 있었던 API였고, 이에 대한 설명은 생각보다 많지 않았다. 그래서 핵심적이며 차별성을 높이는 주제로 적합하다 판단했다.

예시

어떤 기술을 설명하든, 걸맞은 예시와 바로 확인할 수 있는 Input & Output이 필요하다. 그리고 나는 아무것도 없었다. 분명 전 회사에서 서비스를 개발하며 수많은 실전 예시를 가진 적이 있었다. 하지만 발표를 준비하는 시점에는 나에게 남은 코드는 1줄도 없었다. 머릿속에서 열심히 떠올려 봤지만, 도메인 로직도 엉켜있어 쉽게 정리되지 않았다.

다행히도, 개발하며 공부하고 배운 것들을 글로 남겼던 게 있었다. 이 글들에는 짧지만 몇 가지 예시와 상황들이 소개되어 있다. 이를 바탕으로 예시를 만들고 정리했다. 기록의 중요성을 새삼 느꼈다.

예시 코드는 간결하고 한눈에 들어와야 한다. 장황한 코드가 없어야 한다. 이 점이 가장 어려웠던 것 같다. 문서에 작성한다면 어느 정도 자유롭게 쓸 수도 있겠지만, 발표용이라면 긴 코드를 슬라이드에 담아봤자 아무 의미가 없다. 폰트 크기는 생각보다 더 커야 하고, 전달하고자 하는 의미를 잘 표현하고 있어야 한다. 게다가 뒷줄에 앉은 사람도 화면을 보는 데 문제없을 만큼, 슬라이드의 아랫부분은 비워야 한다. 평소 코드를 작성할 때 최대한 가독성 있고 간결한 코드를 작성하는 연습을 해야 이런 발표 자료도 쉽게 만들 수 있겠다는 생각을 했다.

발표

feconf2018-2

발표하고 나서 가장 처음 느낀 감정은, 정말 아쉽다는 것이었다. 발표를 왜 더 잘하지 못했을까 하는 후회였다. 말하는 연습을 많이 하지 못했다. 발표에서 그대로 드러났다. ‘실질적으로’라는 말을 너무 많이 사용했고, 중간중간 내용이 꼬이기도 했다. 조금만 더 차분히 말하는 연습을 했다면 이런 실수는 없었을 텐데 하는 진한 아쉬움이 남았다.

내가 발표에서 말하기를 잘 못 한다는 것은 알고 있었다. 알고 있었지만, 발표 자료 준비에 너무 많은 시간을 소비했고, 결국 말하기 연습을 못 했다. 이제야 깨닫지만, 발표 자료보다 더 중요한 것은 말하기다. 발표 자료에는 실제 전하고자 하는 메시지를 100% 담지 못한다. 말로 잘 전달해야 한다. 그래서 말하는 연습을 정말 많이 해야 한다. 물론 날 때부터 말을 잘하는 사람도 있을 것이다. 축복이다. 나는 그런 축복은 받지 못했다. 나는 즉흥성에도 능하지 않다. 그래서 더 짜임새 있고 빈틈없는 내용을 준비하고 외워서 막힘없이 말해야 한다. 만약 또 발표할 기회가 생긴다면, 녹음과 함께 말하는 연습을 꼭 하리라 다짐한다. 마음 같아선 녹화해서 시선 처리나 행동 등도 함께 보며 교정하고 싶지만, 사실 스스로 내 모습을 보는 게 정말 부끄러워 참을 수 없어 녹음만 해야겠다.

또 한 가지 아쉬운 점은 자세였다. 너무 많이 긴장했다. 너무 긴장한 나머지 마이크 높이를 맞추지도 못하고, 무려 40분 동안 계속 구부정한 자세로 발표했다. 마음속으론 정말 정자세로 발표하고 싶었다. 하지만 긴장한 나머지 자세를 바로잡을 여유가 없었다. 속으로 ‘아, 너무 구부정하게 건들거리고 있다.’는 생각을 했지만, 생각뿐이었다. 발표를 준비하는 동안 상상하고 바랬던 모습은 조금 더 여유롭게 정자세로 또박또박 발표하는 모습이었지만, 현실은 구부정하게 탁자에 기대서 어설프게 말하는 그런 모습이었다. 이게 정말 꿈은 높은데 현실은 시궁창이야.라는 느낌이랄까.

만족스러운 점도 있었다. 발표 시간을 정말 칼같이 잘 맞췄다. 정말 다행히도, 긴장한 와중에도 시계는 틈틈이 봤다. 앞에서 스태프분이 종료 5분 전이라는 팻말을 보여주시기도 했다. 유일하게 만족스러운 점이다. 발표자료를 만들며 시간을 예상했는데 그대로 들어맞아서, 이게 바로 카타르시스인가 싶은 느낌이었다.

소감

정말 좋은 경험이었다. 고생도 했고, 아쉬웠고, 만족스러웠고 짜릿했다. 스스로 얻고 느낀 점이 많았다. 누군가는 다른 사람을 가르치는 게 혼자 공부하는 것보다 훨씬 효과적이라고 한다. 동의한다. 자기 성장이 정말 필요하다 느낀다면, 어딘가에 본인에게 가장 익숙하고 잘 아는 것을 남에게 알려주기 위한 발표를 준비해 보는 게 효과적인 방법이라 생각한다. 아무리 익숙하고 잘 아는 것이라도, 다른 이에게 설명하려면 훨씬 더 근본적인 지식과 수준 높은 해석을 요구하고, 이를 다시 쉽게 설명할 수 있도록 풀어내야 한다. 내가 이것을 잘했다고는 생각하지 않지만, 이렇게 하기 위해 노력했고 많은 것을 얻었다.

발표는 단순히 경험만 가지고 준비하기란 정말 어렵겠다는 생각을 한다. 이번 발표는 기존에 작성했던 약 4개의 글 덕분에 자료라도 잘 준비할 수 있었다. 발표는 방대한 기록을 취합하고 다시 요약해 전달한다. 머릿속에 있는 희미한 기억과 경험 가지곤 어림도 없다. 그 기억과 경험을 정리하고 검토하는 데는 정말 많은 시간이 필요할 것이다. 그래서 다시 한번 기록하는 습관을 들여야겠다 다짐한다.