woniper

Spring Camp 2017 연사 후기 본문

이야기

Spring Camp 2017 연사 후기

woniper1 2017. 5. 6. 20:41

Spring Camp 연사로

  올해 Spring Camp 2017KSUG 10주년으로 Spring Camp 역사상 가장 크게 열렸다.



  이틀 동안 진행되며, 참석자도 하루 500명씩 총 1000명이다. 작년은 못 갔지만, 올해는 꼭 가야겠다고 생각하고 있던 와중에 연사 모집 글도 올라왔다. 이 글을 쓰면서 다시 보니 모집 글이 꽤 빨리 올라왔다. (2016년 11월이니..)


나는 어떻게 연사가 됐을까?

  개발을 시작하면서 경력 5년 차가 되기 전에 몇 가지 하고 싶은 게 있었다. (올해 4년 차) 그중 하나가 발표였다. 사실 SLiPP에서 영속성 컨텍스트로 보는 JPA 발표를 했었다. 이번이 두 번째 발표지만, 난생 처음 하는 기분이었다.
나는 2017년 1월에 우아한형제들로 입사하게 됐다. KSUG 큰 일꾼인 박용권 님(회사에서는 책임님)이 계신 팀에 합류했다. 입사 환영으로 팀원 모두 커피를 마실 때였을까? 바로 내 앞에 용권님이 앉아 계셨고 내 연차를 물으시며 연사를 지원해보라고 하셨다. (ㅋㅋ 이때부터 였을까요?)

주제를 정하지 못했다.

  하지만 연사 지원 마감까지 나는 주제를 정하지 못했다. 처음에는 Spring BeanFactory와 ApplicationContext가 어떻게 동작하는지 설명하고 싶었다. 하지만 실무와 접목시키는 부분을 찾지 못해 나는 용권님에게 Spring Data REST를 해볼까요? 라고 물어봤었다. 좋은 주제라며 여러 가지 설명을 해주셨지만, 결국 지원하지 않았다. 사실 용기가 없었다.

하지만 주제는 Spring Data REST

  그렇게 지원하지 않고 올해도 연사를 하지 않고 지나가겠구나 생각했다. 하지만...



결국 골방에서 나는 Spring Data REST라는 주제를 정하고 연사로 지원할지 하루 동안 생각해보고 결정하기로 했다. 지금 생각해보면 참 좋은 기회를 주신 거 같다.

물론 그 과정은 쓰다. 많이 쓰고 뱉고 싶었다. 중간에 연습하고, 피드백 받으며 끊임없이 내가 이걸 왜 한다고 했을까? 라고 생각했다. 하지만 지금 생각해보면 굉장히 좋은 경험이다.

발표 준비

  주제도 정했으니, 이 기술에 대해 공부를 시작했다.(?!) 발표까지 약 두 달 정도가 남은 시점이었다. 사실 Spring Data REST를 한 번도 써보지 않았다. 그냥 이런 기술이 있다. 정도는 알고 있었고 예전에 이와 비슷한 프레임워크를 만들어보려고 시도했다가 그만둔 적이 있었다.(실패) 그래서 그런지 더 기억에 남는 기술이었다.

레퍼런스 문서

  역시 해당 기술에 대한 이해와 기본 사용법은 레퍼런스만한게 없다. 안되는 영어로 번역기 돌려가며 예제를 보며 의문가는 부분을 찾아 공부했다. 어느 정도 레퍼런스 문서가 익숙해 지면서 샘플 코드를 만들었다. Spring Data REST 레퍼런스 문서를 pdf로 다운받아 아이패드에 넣고 봤다. 스프링은 역시 문서도 잘돼 있다. pdf, html, epub 모두 지원한다.

발표 장표 만들기

  스토리를 만드는건 너무 어렵다. Spring Data REST를 설명하기 전에 밑밥을 깔기 위해 MSA 이야기를 해볼까? REST API 사용 예를 보여줄까? 많은 고민이 있었는데, 용권님이 엄청 많이 도와줬다.
  나는 스토리를 정말 못 만든다고 자책하며 장표를 만들었는데 지금 생각해보면 마음이 너무 급했던 거 같다. 빨리 장표와 예제를 만들고 연습할 시간을 충분히 갖고 싶었는데 그러다 보니 매끄럽게 만들지 못했던 거 같다.

이렇게 만들자.

  • 말로 설명하지 않아도 장표만 보고도 충분히 이해할 수 있도록 친절하게 만들자.
  • 여러 사람에게 리뷰를 부탁하자.
  • 디자인은 제일 마지막에 생각하자. 시간 없으면 안 이뻐도 된다. 하지만 가독성은 중요하다.
  • 하나의 장표에서 너무 많은 걸 설명하지 말자. 한 장표에서 글 또는 대사가 너무 많으면 여러 장표로 나누는 게 좋다. (집중력이 떨어진다)

  대사 만들 때 중요한게 있다. 글로 쓰는 말투와 실제로 말하는 말투는 달라서 대사를 만들 때는 글로 대사를 만들지 말고 장표를 보면서 내가 말할 대사를 입으로 말하고 말한 것을 글로 받아쓰자. 이게 더 자연스럽다.

연습방법

  1. 발표 장표가 완성되면 장표마다 대사를 만든다.
  2. 장표와 대사를 외운다.
  3. 외운 대사로 장표만 보고 연습하다 보면 말하면서 대사는 수정된다.
  4. 실제로 발표한다고 생각하며 녹음하며 연습한다.

확신을 갖자.

  연습보다 더 중요한 게 있다. 확신이다. 내가 전달하는 이 기술에 대한 확신과 자신감이 있어야 한다. 실제 Spring Camp 발표하기 전에 회사에서 발표 했었는데, 완전히 망쳤다. 그때 왜 그렇게 못했는지 생각해봤는데 자신감도 없었고 확신도 없었다.

예제 만들기

  주제 선정이 끝나자마자 나는 라이브 코딩을 해야겠다고 결심했다. 처음엔 레퍼런스 문서에서 중요하다고 생각하는 기능을 만들었고, 추가로 내가 중요하다고 생각하는 부분을 찾아서 만들었다.

Spring Data REST에는 무엇이 중요했을까?

  • Projection은 어떻게 활용하면 좋을까?
  • HATEOAS로 표현되는 links 정보는 client에서 어떤 이점을 줄 수 있을까?
  • Request, Response 할 때 DTO는?
  • 확장 포인트
  • 동작 방식
  • 기타 등등 (다 생각이 안 난다.)

욕심을 줄이자.

여러 가지 찾아서 샘플을 만들고 샘플 기준으로 코딩 시간을 체크해봤다. 45분 걸렸다. 사실 발표 준비하면서 느낀 건데, 욕심은 줄이고 중요한 부분을 깔끔하게 설명하고 전달하는 게 중요한 것 같다. 코딩만 45분이면 떠들 시간도 없이 쭉~~~ 45분 코딩만 해야 되는데 25분~ 30분정도 라이브 코딩을 할 예제를 만들었다.

라이브 코딩

라이브 코딩을 한다고는 했는데 어떻게 연습해야 될지 잘 몰랐다.

라이브 코딩 스타일

  1. 코딩하고 설명하기
  2. 설명하고 코딩하기
  3. 코딩하며 설명하기
  4. git checkout history
    • 미리 git history를 만들어 놓고 checkout 하며 코드 보여주기.

가장 좋은 건 3번이라고 한다.
  라이브 코딩을 눈감고도 할 수 있는 경지에 오른다면 코딩하며 말하기가 가능한 거 같다. 나는 그 정도는 안되고 설명하고 코딩하기를 택했는데, 사실 처음은 코딩하고 설명을 했었다. 코딩하고 설명하기는 보는 사람이 불편하다. 보는 사람은 아무 설명 없이 라이브 코딩을 보며 스스로 코드를 이해하는 와중에 코딩이 끝나고, 설명 하는 타이밍이 오기 때문에 보는 사람은 혼란스러울 수 있다.
  내가 지금 무엇을 만들 거고 어떻게 테스트할 것인지 설명한 후 코딩하면 좀 더 이해하기 쉽게 전달 가능하다.(2번) 나는 이렇게 했다.

연습방법

  1. 라이브 코딩할 예제의 완성본을 만들고 다듬는다.
  2. 반제품 프로젝트를 만든다.
  3. 타이머를 맞춰 놓고 실제로 라이브코딩을 한다고 생각하고 시간 체크하며 연습한다.
  4. 연습! 연습! 연습!

  반제품 프로젝트는 라이브 코딩을 하기 위해서 필요는 하지만 라이브 코딩으로 보여주지 않아도되는 코드를 미리 만들어온다는 뜻이다. 나 같은 경우는 Spring Data REST에서 필요 하지만, 굳이 보여주지 않아도 되는 Entity는 미리 만들어왔다. (말로 때우자)

  사실 라이브 코딩이 어려운 것 중 하나가 연습이다. 발표는 장표마다 대사를 넣어서 외우고 연습하면 된다. 그런데 라이브 코딩은 대사를 만들어도 연습하기 쉽지 않다. 라이브 코딩 순서뿐만 아니라 그 순서에 맞게 대사를 입력해서 보기가 힘들다. 그래서 나는 대사를 적어놓고 라이브 코딩을 연습한 게 아니라, 머릿속으로 라이브 코딩을 하는 상상을 하며 이때는 이런 대사를 해야 한다고 생각하며 메모장에 대사를 써봤다. 이게 힘들면 목차라도 외워야 한다. 발표 장표도 마찬가지지만 라이브 코딩도 순서가 있는데 이 순서(목차)가 익숙해지면 어떤 말을 해야 할지도 익숙해진다.

데모 귀신은 반드시 있다.

  다행히 나는 데모 귀신이 오지 않았다. 하지만 데모 귀신은 반드시 온다더라. 손이 떨린다던가, 서버 실행이 안 되고 잘되던 코드가 안 돌아가는 상황은 반드시 온다고 생각하고 준비해야 한다. 그래서 아래와 같이 철저하게 준비해놔야 한다.

  • 라이브 코딩에 실패하면 보여줄 데모를 준비하자.
  • 데모도 사실 위험하다. 녹화된 영상을 준비하자.
  • 틀릴 거 같은 부분을 미리 생각하고 어떻게 해결할지 생각하자. (제가 이럴 줄 알고... 라는 멘트가 준비되어야 한다. 사실 나도 이 부분은 생각도 못 했는데 발표 당일 토비님께서 이렇게 해야 된다는 걸 알려주셨다.)

또 중요한 것

  • tool font 색 또는 바탕색
  • 화면 전환
  • UI 크기

미리 확인하자.

  발표 장소에 따라 tool 색상이 굉장히 중요하다. 이번 발표 장소의 프로젝터는 검정색 바탕은 거의 보이지 않았다. 그리고 화면 전환은 최소한으로 해야 한다. 나는 REST API를 테스트하기 위해 IDE와 REST API Client tool을 같이 사용했는데, 이때 화면 전환이 너무 자주 일어나면 보기 불편하다.

리뷰

  발표 준비 중 리뷰가 가장 중요하다고 생각된다. 연사로 지원하면 Spring Camp 일꾼단이 많은 것을 도와주는데 그중에서 제일은 리뷰다. (근데 발표 잘하시는 분들은 한번도 안하신 분들도 있었다.)

나는 리뷰를 총 4번 했다.

  • Spring Camp 일꾼단이 도와주셔서 2번
  • 아는 형님들 불러놓고 1번
  • 회사에서 1번

  리뷰에서 가장 중요하다고 생각하는 건 피드백과 떨림이다. 지금 생각해보면 발표 당일보다 리뷰때가 더 떨린다. 리뷰는 나의 부족한 점을 지적(?)해주는 자리이기 때문에 부담감이 더 크다. 이때 많이 까이고 피드백을 받아 고쳐야 더 좋은 발표를 할 수 있다. 오히려 리뷰때 많이 떨어서 그런지 발표 때는 별로 떨리지 않았다.

내가 지적받은 것

  1. 말이 너무 많다. 하나의 장표에서 설명이 간결하지 못하다.
  2. 너무 빠르다. 사람들이 보고 이해할 시간을 주어야 한다.
  3. ~ 라는 것 이런 말투는 확신이 없어 보인다. 나를 믿자!
  4. 화면 전환이 너무 빠르다. (라이브 코딩을 하고 테스트를 하기 위해서 여러 가지 tool이 필요했는데 화면 전환이 빨랐다.)
  5. 용어 선택
    • Repository Layer -> Data Layer
    • Board를 작성하기 위해 Http POST로 요청하겠습니다. -> 게시글을 작성해보겠습니다.
      • 전문 용어보다는 일반적인 용어를 선택해서 쉽게 전달하자.
  6. 임팩트있게! (Spring MVC 말고 Spring Data REST로 변경되면 우와~ 라는 반응이 나와야하는데 임팩트 없이 지나간다.)
  7. 더 많은데 생각이 안 난다. 아무튼, 너무 많았다.ㅋㅋ

발표 당일

  나는 연사로서 첫날 첫 번째 시간이었다. 떨리는 마음은 뒤로하고 몇 시간 미리 도착해서 연습을 했다. 그리고 발표장 준비(프로젝터, 마이크 등)가 끝나는 대로 빔프로젝터 연결해서 연습도 해보고 잘 안 보이는 장표는 미리 수정도 하고, IDE 폰트 크기도 조절하고 제일 뒤에서, 또는 앞에 사람이 있으면 잘 보일지 미리 확인했다. 이때가 가장 떨린 거 같다. 발표하기 전에 앞에서 혼자 연습하던 이때가.

  하지만 이상하게 발표하러 올라가니 하나도 떨리지 않았다. 혼자 그렇게 느낀 것인지 모르겠지만, 발표를 들으러 오신 분들과 소통도 잘된 거 같고 떨리기는커녕 연습할 때보다 말도, 진행도 잘된 거 같다. 들으신 분들은 어떻게 보이셨을지 모르겠지만, 스스로 결과에 만족한다. 작은 실수는 있었지만, 큰 실수는 없었고 우려했던 데모 귀신도 오지 않았다.

그동안에 스트레스가 긴장이 풀리면서 한 번에 몰려왔는지 발표가 끝나자마자 감기 기운에 약을 먹었다.

마무리

  처음 시작은 자신감으로 시작했다. 연습하고 피드백 받으며 자존감이 바닥이었고, 발표가 끝나면 자존감은 하늘을 찌른다. 짧은 시간 동안 나의 자존감 끝과 끝을 봤다. 내년에도 Spring Camp가 열리겠지만, 지금 마음은 내년에도 연사로 지원해야지! 라는 생각은 없다. 솔직히 몸도 마음도 너무 힘들었다. 하지만 지원하려고 생각하시는 분이 있다면 강력하게 추천한다. 발표는 내 지식을 뽐내는게 아니라 내 지식을 다듬고 공유하는 거라고 생각한다. 많은 생각을 하게 되고 많은 것을 배웠다.

  무엇보다 자신감을 많이 얻고 나도 해낼 수 있다는 생각을 했다. 좋은 기회를 주신 것도 감사하다. 이 와중에 회사 일도 바쁘기도 했는데 회사 동료분들이 많이 응원해주시고 도와주셔서 정말 감사하다. 발표가 끝나면 얻는 게 분명히 많을 거라는 이수홍 님 (역시 회사에서는 선임님ㅋㅋ) 말씀에 많은 공감을 한다. 그리고 가장 많이 도와주시고 응원해주셔서 감사합니다.

발표 자료

발표 장표

예제


Comments