play.node 2017 발표기

play.node 2017 에서 발표한 후기.

얼마 전 한국 node.js 사용자 컨퍼런스 play.node 2017가 열렸다. 감사하게도 해당 컨퍼런스에 낸 TypeScript와 Flow: 자바스크립트 개발에 정적 타이핑 도입하기 라는 주제의 프로포절이 채택되어 이번 주 목요일(2017년 11월 9일), 인생 첫 기술 컨퍼런스 발표를 하고 왔다.

준비하는 동안에는 사실 스트레스를 많이 받았다. “경험도 별로 없는 내가 사람들에게 도움이 될 만한 발표를 해낼 수 있을까?” 라는 걱정이 하나고, 발표 자료를 만드는게 처음 예상했던 것보다 시간이 많이 들면서 다른 벌려 놓은 일을 챙기지 못 하는 데에서 오는 초조함이 다른 하나였다. 하지만 이제 와 돌아보니 역시 시도 해보길 잘 했다 느끼는 소중한 경험이라, 기억이 날아가기 전에 기록으로 남겨본다.


발표자가 되기까지

전 회사인 스포카에 있을 때, 운이 좋게도 초기부터 신규 프로젝트를 만드는 팀에 합류했다. 덕분에 기술적으로 재미있으면서도 배울 것이 많은 시도를 할 수 있었는데, 그 중 하나가 바로 프로젝트의 Flow 관련 코드를 TypeScript로 마이그레이션 하는 작업이었다.

개발자 경험을 극단적으로 바꿔놓는 작업이기도 하고, 무엇보다 내가 프로그래밍에서 가장 관심 있어하는 타입 시스템이라는 주제와 맞닿아 있는 작업이라 즐겁게 진행했다. 해 보고 나니 이렇게 프로젝트 전체를 갈아엎은 경험을 해 본 팀이 많지는 않을 듯 해 기술블로그에 공유 해 보고 싶은 욕심이 생겼다. 실제로 작업을 같이 진행한 최종찬 님과 함께 해당 글에 넣을 내용을 secret gist 에 차곡차곡 모으기도 했다.

하지만 늘 그렇듯 이런저런 이유로 기술 블로그 포스팅을 차일피일 미루던 중, 8월 말에 play.node 컨퍼런스에서 발표진을 모집하는 것을 보았다. 컨퍼런스 발표를 한 번도 못 해보았기도 하고, 스스로 배수의 진을 치고 나면 빠져 나갈래야 나갈 수 없을거라는 생각에 간단히 정리해 발표를 신청했다. 얼마 후 React Seoul 2017 컨퍼런스가 열린다는 소식을 듣고 비슷한 내용으로 해당 컨퍼런스에도 발표 신청을 넣었다.

마침 그 때쯤 이직 고민을 하고 있었는데, 최종적으로 이직하기로 결정을 내리고 남은 한 달 동안 열심히 분기 목표를 진행하던 중 9월 21일에 play.node 운영진 분들께 발표 세션 선정 메일을 받았다. 될까? 싶었지만 밑져야 본전이라는 생각으로 낸 프로포절이었는데 정말 선정되어서 기뻤다.

playnode 2017 발표자 선정 메일

그리고 9월 27일, React Seoul 2017 발표자로 선정되지 않았다는 메일을 받았다. 내 프로포절은 꽤나 일반적인 주제였는데, 공지를 살펴보니 세션 수가 적은만큼 React라는 라이브러리와 밀접히 연관된 주제를 우선적으로 선정하신 것 같다는 인상을 받았다. 충분히 납득이 가는 결정이었다. 아쉬움이 없진 않았지만 발표자 선정이 되고 난 후에 새삼 컨퍼런스 발표에 대한 부담도 느끼고 있었던 터라 한편으로는 오히려 잘 되었다는 생각도 들었다.

주어진 기회에 최선을 다하자는 생각으로 발표 준비를 시작했다.


발표 준비

발표 준비는 한 달 전 쯤부터 시작했는데, 사실 이건 좀 오버 했던 것 같다. 괜히 시작하고부터 놀 때에는 ”할 일이 있는데 그건 안 하고 놀고 있다”는 스트레스만 받으면서도 정작 아직 꽤 많이 남았다는 생각에 별로 긴박함은 못 느껴 열심히 하지 않았다. 다음부터는 자료조사는 틈틈이 하더라도 본격적인 준비는 한 이 주 전쯤부터 시작하는게 마음이 편할 것 같다.

발표 슬라이드에 말이 너무 많으면 사람들이 장표를 읽고 이야기를 안 들으니까 장표는 엄청 간단하게 만들거나 이미지만 넣으라는 식의 조언이 많다. 나는 이 조언에 동의하지 않는다. 그런 식으로 만든 장표는 스크립트를 전부 포함시키지 않는 이상 장표 자체를 공개하는 것만으로는 별 가치가 없기 쉽다. 기왕 시간과 노력을 들여 만들 것이라면 그 자리에 없던 사람도 슬라이드만 보고도 발표의 내용을 어느정도 짐작할 수 있는 쪽이 좋다고 생각한다.

물론 자리에 없는 사람을 배려하느라 자리에 있는 사람을 제대로 챙기지 못 해서는 안 될 것이다. 앞서 언급한 문제는 핵심 내용을 다 장표 안에 넣되 대부분을 리스트로 만들어서 한 번에 아이템 하나씩만 보여주면서 이야기를 듣게 만드는 식으로 해결 가능하다고 생각한다. 이번에도 그런 식으로 슬라이드를 구성했고, 그럼에도 슬라이드에 충분히 들어가 있지 않은 부분은 추후 웹에 공개하기 전에 텍스트를 좀 추가하는 식으로 보완했다.

발표의 개요

발표의 흐름에 있어서는 사실을 쭉 나열만 하는 대신 발표 전체를 관통하는 하나의 이야기를 만들고자 노력을 했다. 그를 위해 마케팅에서 이야기하는 퍼널을 만들고, 앞 부분의 결론이 자연스레 다음 부분의 문제의식으로 이어지도록 구성했다. 실제로 얼마나 효과가 있었는지는 잘 모르겠다.


발표 당일

사람이 너무 적게 오면 어떻게 하나 하는 걱정을 많이 했다. 그런데 다행히도 방이 꽉 찰 정도로 많이 찾아주셨다. (사실 이번엔 두 트랙이 진행된 공간 모두가 인원에 비해 좀 좁아서 지나치게 북적였는데, 내년에 개선된다면 더 좋을 것 같다) 앞 세션이 굉장히 일찍 끝났는데, 시간이 빠듯할 걸 알았기에 먼저 시작하고 싶은 유혹이 강했다. 하지만 약속한 시간인 1시 40분보다 너무 이르게 시작하면 안 된다고 생각해서 약 7-8 분을 기다린 후 39분에 발표를 시작했다.

석종일 님께서 찍어주신 발표하는 모습

이야기를 하면서 틈틈이 관중들을 살폈다. 걱정 했던 것에 비해 재밌게 듣고 집중해주는 분이 많이 계셔서 감사했다. 긴장이 되긴 해도 리허설 때보다 실제 발표가 훨씬 즐거웠다. 다만 마지막에는 확실히 긴장과 더불어 주어진 시간을 맞추어야 한다는 생각에 너무 빠르게 달린 것 같아 아쉽다. 발표의 핵심이 앞 부분에 있던 건 다행이지만 개선할 부분이다.

일부러 질의응답을 위해 마지막 슬라이드에 요약본을 띄워놓았는데 막상 시간을 너무 딱 맞추는 바람에 질의응답을 거의 진행하지 못 했다. 발표를 사람들이 얼마나 흥미롭게 들었는지 확인할 수 있는 지표가 질의응답 시간이 생각해서 좀 아쉬웠다. 헌데 세션이 끝나고는 물론이고 쉬는 시간 카페에서나 복도에서까지 궁금한 점을 여쭤봐 주시는 분들이 계셨다. 모든 분께 만족스러운 답변을 드렸는지는 모르겠지만 개인적으로 뿌듯했다.

전날 새벽과 당일 아침까지 발표 자료를 가다듬고 리허설을 하느라 정신이 없었는데, 발표를 마치고 나니 긴장이 확 풀리면서 졸음이 몰려왔다. 다른 세션도 듣고 운영진 분들과 이야기도 좀 나누고 난 후, 컨퍼런스에 왔던 친구와 함께 저녁을 먹고 일찍 귀가했다. ‘컨퍼런스 발표라는게 이런거구나, 재미있다’ 라고 생각했다.


발표 이후 회고

만족스러운 점

먼저 이번 발표를 준비하며 나름대로 잘 했다고 생각하는 만족스러운 점을 적어본다.

주제 선정

일단 무엇보다 주제 선정을 잘 했다. 요즘 들어 점점 타입스크립트에 대한 관심이 늘어나고 메인스트림으로 들어오고 있는데, 뉴스레터나 블로그 포스팅, 컨퍼런스 주제를 보아도 그렇고 여러 지표를 통해 숫자로도 확인할 수가 있다. 시의적절한 주제를 고른 탓에 보다 많은 관심을 받을 수 있지 않았나 싶다.

당연한 이야기일 수 있겠지만 컨퍼런스 발표를 먼저 결정하고 난 후에 주제를 고민한 것이 아닌, “이런 주제로 이야기를 하고 싶다” 는 생각이 먼저 생긴 주제로 발표를 한 것도 좋은 흐름이었다. 내가 가치 있다 믿고 실제로 일을 하며 맞닥뜨리는 주제이다보니 열심히 준비하고 좀 더 마음에서 우러나오는 (?) 발표를 할 수 있었다 생각한다.

리서치

현 시점에서 인터넷에 존재하는 한국어 또는 영어로 쓰인 TypeScript와 Flow를 비교하는 자료 대부분은 이미 봤다는 근자감이 슬슬 생기고 있다.

라는 트윗을 했었는데, 실제로 발표를 준비하면서 자료 조사를 정말 열심히 했다. 발표를 듣는 이들에게 유용할 수 있는 정보를 내가 몰라서 빼먹고 싶지 않았고 동시에 행여라도 틀린 정보를 전달하고 싶지 않았다. 문서, 블로그 포스팅, 깃헙 이슈들과 심지어는 논문까지 읽어가며 리서치에 많은 시간을 투자 했는데 그것들이 다 알찬 슬라이드를 만드는 데에 도움이 되는 좋은 투자였다.

철저한 연습

발표 전에 대부분의 슬라이드의 스크립트를 써 놓고 적어도 세 네 번씩은 혼자 소리내어 연습했다. 발표 직전에는 각 슬라이드에서 말할 문장들을 거의 외울 지경이 되었는데, 덕분에 긴장한 와중에도 여유로운 척을 하면서 실제 발표를 진행할 수 있었다. 공적인 자리인만큼 절대 주어진 시간을 오버하고 싶지 않다는 부담이 컸는데, 어느 슬라이드에서 몇 분 정도가 되어야 하는지를 사전에 체크 해 둔 덕분에 주어진 35분에 딱 맞춰 발표를 끝낼 수 있었다.

아쉬운 점

다음으로는 반대로 아쉬웠던, 다음에 또 발표를 하게 된다면 개선하고 싶은 점이다.

발표 준비 과정

이번 발표는 대략 다음과 같은 흐름으로 진행했다.

  • 리서치
  • 슬라이드 작성
  • 스크립트 작성
  • 리허설
  • 시간을 맞추기 위해 내용 삭제

이러한 방식의 문제는 리허설을 할 때 드러났다. 주어진 시간이 35분인데 집에서 써놓은 스크립트를 기반으로 쭉 발표를 진행해보니 한 시간이 넘게 걸렸다. 부랴부랴 슬라이드를 마구 지우고 표현을 가다듬는데, 열심히 시간과 노력을 투자해 만든 슬라이드와 스크립트를 허공에 버리고 있자니 너무 아깝고 바보가 된 기분이었다. 중간이 텅 비어버린 흐름을 다시 자연스럽게 고치자니 추가적인 노력도 필요했다.

다음부터는 다음과 같은 식으로 발표를 준비하는게 낫겠다는 교훈을 얻었다. 핵심은 시간이 제한된 경우에는 각 부분에 대한 시간 할당을 먼저 하는게 좋을 것 같다는 것이다. 시간 할당을 앞쪽으로 당겨 오면 내 발표의 무게 중심을 어디에 놓을지를 더 이른 시점에 고민할 수 있게 된다는 추가적인 장점도 있겠다.

  • 리서치
  • 커다란 개요 작성
  • 각 부분에 시간을 얼마나 할당할지 결정
  • 주어진 시간에 맞춰 넣을 수 있는 분량의 슬라이드 작성
  • 스크립트 작성
  • 리허설

독창성에 대해

리서치를 열심히 하고 다양한 자료를 넣긴 했지만, 결과적으로 발표한 내용은 원래 발표를 신청할 때의 취지와는 약간 어긋났다. 실제로 Flow에서 TypeScript로 옮기면서 얻은 노하우나 교훈 등의 비중은 줄어들고, TypeScript를 사용하고 싶도록 만들기 위한 설득의 비중이 크게 늘었다.

물론 발표의 초점이 이동한 것 자체는 자연스러운 결과이긴 하다. 발표를 준비하다보니 사람들이 이걸 쓰고 싶도록 설득하는게 가장 중요하다는 생각이 들었기 때문이다. 하지만 한편으로는 꼭 내가 아니더라도 충분한 시간과 노력을 들여 리서치하면 누구나 다 얻을 수 있는 정보만을 짜집기해서 팔고 있는건 아닌가 하는 의문이 생겼다. 아무래도 이건 나의 내공의 문제가 아닌가 싶은데, 다음엔 좀 더 오리지널리티가 있는 발표를 해 보고 싶다.

슬라이드 디자인

지금 내 SlideShare 계정에는 이번 것을 포함해 총 네 개의 슬라이드가 올라가 있는데, 모두 Keynote의 기본 템플릿이다. 말인즉슨 디자인이 전혀 되어있지 않고, 배경은 흰색이요 텍스트는 검은 색이다. 엉망으로 하느니 차라리 안 하는게 낫다고는 생각한다. 하지만 이쁘면서도 내용 전달을 도와주는 디자인을 적용할 수 있었다면 더 좋았을 것 같다. 다음 발표는 언제가 될지 모르겠지만 기본 템플릿을 벗어난 디자인을 시도해볼까 하는 생각을 했다.


마치며

컨퍼런스 발표는 공개적으로 글을 써서 내놓는 일과 비슷하다는 어찌보면 당연한 점을 이번 발표를 통해 느꼈다. 부담이 많이 되지만 그만큼 열심히 준비했을 때 발표를 듣는 다른 누구보다도 발표자 본인이 많은 것을 얻어갈 수 있다. 특히 개선할만한 점을 많이 찾을 수 있어서 기쁘다. 아직 경력도 짧은 내가 운 좋게도 이런 기회를 얻게 되어 감사한 마음이다. 다음에도 내가 무언가 의미 있는 이야기를 할 수 있을만한 발표 자리가 있다면 기꺼이 또 덤빌 것 같다.

감사의 말

마지막으로 감사의 말과 함께 글을 마무리하려 합니다. 글을 평어체로 쓰는 것을 선호하는데 이런 내용을 쓸 때면 왜인지 항상 경어체를 쓰게 되네요.

먼저 이 행사를 기획, 준비하시고 실행하신 play.node 2017 오거나이저 분들께 큰 감사를 드립니다. 자원봉사로 이렇게 많은 사람이 참가하는 컨퍼런스를 기획하고 현실로 만들어내기까지 정말 많은 시간과 노력이 들어갔을 것으로 짐작합니다.

또한 바쁜 평일 귀한 시간을 내 컨퍼런스에 참석하고, 또 같은 시간대 다른 세션의 훌륭한 발표를 두고 제 발표를 보러 와 주신 모든 청중 여러분께 감사드립니다. 귀 기울이고 재밌게 들어주신 덕분에 즐겁게 발표 할 수 있었습니다. 무언가 얻어 가실 수 있는 시간이었기를 바랍니다.

그리고 끝으로 같이 일하면서, 또 발표를 준비하면서 많은 도움을 주신 전 직장 동료 최종찬님과 SlideShare에서 한국어가 깨지는 문제의 해결책인 SlideShare에서 자국어 폰트 사용하기라는 포스팅을 작성하신 item4 님께 감사의 말씀을 드립니다.

이전 글
타입과 타입 시스템 : 기본 개념
다음 글
ECMAScript와 TC39