📺 글또콘 신청

image

무슨 생각이었을까? 개발자로서 개발자들 앞에서 개발 이야기로 발표하고 싶다는 막연한 용기였다. 글또에서 처음으로 진행하는 글또콘에 발표자로 참가를 신청했다. 주제는 이미 블로그 글로 발행했던 테스트 코드. 그리고 첫 글또콘 발표자 중 한명으로 선정되었다. 이미 글로 풀어낸 내용이니 발표자료를 만드는데 크게 어렵지 않을거 같았다.

“저희 일주일 전인 8월 18일에 리허설 해볼까요? 밤에 온라인으로…!”

발표자료의 ‘발’도 준비하지 못한 채 정신없이 회사 업무에 치이길 한 달, 발표일이 일주일 앞으로 다가온 날이었다. 발표자들이 모인 채널에 올라온 성윤님의 메세지를 보고 황급히 발표자료 준비를 시작했다. 회사 업무와 발표자료 준비를 병행한다는게 정말정말 힘들고 어렵더라. 그래도 블로그에 발행했던 글을 기초 삼아 애니메이션도 넣으면서 발표자료를 준비했고, 대망의 8월 18일 밤이 다가왔다.


📺 겨우 이거야?

  • 이 발표를 통해 전달하고 싶은 내용을 1줄로 요약하면 무엇일까요?
  • 발표 중간지점까지 기대감이 차올랐는데, 마지막 한방 없이 휘릭 끝나는 느낌
  • 예시가 잘 이해되지 않아 갸우뚱 했어요.

총을 맞은 느낌. 성윤님, 학건님, 나라님 모두 부드럽게 말씀해주셨지만, “너의 발표를 듣고선 얻은게 아무것도 없어.”, “그래서 하고 싶은 말이 뭔데?” 라는 총알 2발이 연속으로 뇌리를 관통했다. 특히나 유익한 정보로 가득한 학건님과 나라님의 리허설을 듣고 나니 더욱 뼈저리게 느껴졌다. 많은 사람들이 퇴근 후 피곤한 몸을 이끌고 참가해 듣는 발표인데, 뜬구름 잡는 이야기나 늘어놓을 순 없었다. 따끔한 피드백을 받고 난 직후 발표자료를 처음부터 끝까지 재점검했다.

image

웃고 있지만, 울고 있다.


📺 대망의 글또콘

“어디로 가야하오 - 여러분들의 삶의 철학이 있나요?” - 변성윤

image

삶이 재미없어 시작한 게임. 그 게임 속 캐릭터의 대사에 영감을 받아 삶의 방향을 정하고 나아가는 과정을 들려주신다.

“어디로 가야하오”

지나온 인생에서 어떤 경험을 했고, 그것들이 나에게 어떤 영향을 미쳤는가에 대한 포인트를 정리하는 과정. 초등학교 때 좋은 선생님을 만난 것, 아버지와 포켓몬 게임기를 사러 갔던 기억, 이직과 팀장 경험. 스프레드 시트에 임펙트있던 경험들을 정리하고 난 후 자신의 삶을 객관적으로 바라 본다. 그렇게 그려지는 패턴을 살펴보면 내가 어떤 부분에 큰 영향을 받는지도 알 수 있고, 앞으로 나아가야 할 방향도 자연스레 그려질 것 같다.

“깨달음이란, 스스로의 무지함이 지니는 가치를 아는 것이오”

어차피 내가 이 세상의 모든 것을 알 순 없다. 절대 진리란 존재하지 않는다. 그렇다면 새로운 것을 빠르게 습득하고 하나씩 실행하는 것이 가장 현실적인 공부법이 될 것이다. 모든 걸 이해한 뒤 실행한다는 강박을 버리고, 일단 하나씩 실행해보는 것. 그러기 위해 구체적인 목표를 설정하고, 작게라도 실행해보고, 개선할 방법을 찾는 것. 아, 단순암기에 취약해 실습, 행동, 경험에 의존하는 나에게 딱 알맞는 공부법이다.

“수도승의 가르침을 받들어 스스로의 운명을 개척할 것이오”

스스로의 선택이 더 좋은 선택으로 이어지기 위해 불확실성을 제거한다. 불확실성을 제거하기 위해 멘탈 시뮬레이션(Mental Simulation)을 진행한다. 행동의 결과를 예상하고 예상결과를 토대로 구체적인 액션 플랜을 준비한다. 그렇게 준비된 액션 플랜 덕분에 마음의 안정감을 만든다. 삶은 100% 통제할 수 없으나, 미리 계획해서 대비는 할 수 있다. 그렇게 선택의 결과를 개척할 수 있다.

3가지 대사를 통해 삶을 관통하는 철학과, 깨달음과, 소명 의식을 얻어 퇴사 후 데이터 강의 제작과 시리즈 A 스타트업 데이터 컨설팅에 집중하며 보람차고 즐거운 삶을 살고 계신다. 사회가 정해준 길이 아닌 나만의 길. 멀리서 바라본다면 거칠고 위험해 보이지만, 가까이서 살펴본다면 더 없이 단단하고 정갈한 길이다.

“Airflow, bad practice 걷어내기” - 김학건

image

Airflow? 그게 뭐지. 그 때 눈에 들어온 한 문장 이쁜 젠킨스. 아하!

Airbnb에서 만든 오픈소스 워크플로 관리 플랫이고, 직관적인 UI와 데이터 엔지니어들에게 익숙한 Python 언어의 사용이 큰 장점이다. 무엇보다 진입장벽이 낮다. 그러나 그 낮은 진입장벽이 학건님께는 큰 골칫덩어리가 되었다.

쉽고 자유로운 Python Operator 덕분에 비밀번호 하드코딩, 중복 로직 등 수 많은 안티패턴 코드들이 작성되고, 모든 Batch를 Airflow로 통합 후 방심했더니 온갖 Batch가 다 만들어진다. 낮은 진입장벽 덕분에 데이터 엔지니어, 개발자뿐만 아니라 기획자까지. 모두를 위한 놀이터가 되었다. 지나친 자유가 무분별하고 통제되지 않는 상황을 초래한다.

Jinja template 을 활용하고, third party operator를 사용해서 코드 중복을 막는다. operator를 커스텀해서 제공하면 너무 자유도를 뺏는게 아닐까 걱정했지만, 되려 사용 용도와 사용처가 명백히 정해진 기능을 더 좋아하는 신기한 경험도 하게 된다. 그렇게 조금씩 bad practice를 걷어내면서 느낀 점을 공유해주셨다.

결국 모두를 위한 batch는 없다. 어떤 툴이나 마찬가지 일 것 같다. 명확한 기준을 세우고 명확한 규칙을 만들어서 사용하자. 놀이터가 아닌 업무터를 만드는 방법이다.

“개발 서적 우수 리뷰어 되기” - 신해나라

image

“한빛미디어 서평단으로 활동하면 매달 공짜 책을 주고, 우수 리뷰어는 쿠폰과 상품권도 받을 수 있어요.”

‘한빛미디어 소속이신가?’ 오해가 생길 정도로 철저하게 리뷰만을 위한 글쓰기 방법들. 그렇게 발표 중반 쯤 등장하는 슬라이드 “목적을 가진 글쓰기”. 미디어사가 좋아하는 글을 쓰려면 이렇게 쓰면 된다. 그 방법들을 기술 블로그에도 똑같이 적용할 수 있다. 완벽한 빌드업이 준비된 발표였던 것!

“책의 대상 독자 / 글의 대상 독자”

글을 작성하기 전 목적과 대상 독자를 고민하자. 설령 나를 위한 지식 아카이빙이더라도 대상 독자는 여전히 타인이다. 오늘의 나와 3개월 전의 나는 다른 사람이기 때문이다. 아, 정말정말 좋은 말이다.

“책의 서문 읽기 / 공식 문서 읽기”

공식문서의 개요와 서문, 기술의 탄생 배경과 궁극적인 목표와 의도를 파악하자. 나의 의견을 뒷받침 할 수 있는 근거를 확보할 수도 있고, 인용을 통해 전문성을 보여줄 수 있다. 인용을 통한 꾸밈도 좋은 무기가 된다.

“본인의 고찰과 경험 / 본인의 고찰과 경험”

무엇보다 나의 경험과 고찰을 녹여내는게 중요하다. 기술과 관련된 나의 경험과, 기술의 궁극적 의도를 비춰본 고찰이 함께 녹아있다면 더할 나위 없는 글이 될 것이다. 정보가 흘러넘치는 세상에서 내 글이 의미를 가질 수 있는 유일한 방법이 아닐까.

“내가 테스트 코드에 집착하는 이유” - 최현구

image

2021년 1월부터 2022년 8월까지 1,800개의 테스트를 짰다. 하나당 10분으로 잡아도 유튜브 15분 영상을 12,000편, 1시간 식사를 300회, 8시간 꿀잠을 한달 넘게 잘 수 있는 기간이다. 이렇게까지 테스트 코드에 집착하는 이유가 뭘까?

우리는 테스트 코드를 짜야하는 이유에 대해서 잘 알고 있다.

  • 테스트 코드를 기반으로 과감한 리팩터링을 할 수 있다.
  • 애플리케이션을 꼭 실행하지 않고도 동작 결과를 확인할 수 있다.
  • 개발 과정에서 설계에 문제가 없는지 파악도 가능하다.

나는 여기에 조금의 이유를 더해서 테스트 코드를 작성한다. 우리는 코드를 작성하는 시간보다 다른 사람의 코드를 읽고 해석하고 이해하는데 더 많은 시간을 할애한다. 이 때 잘 작성해둔 테스트 코드가 나와 동료들의 시간을 크게 절약해줄 수 있다. 나의 2시간이 다른 사람의 30분을 아껴준다. 30분, 60분, 120분, 300분. 내 테스트 코드에 영향을 받는 사람이 많아지면 많아질수록 그 가치는 더 높아질 것이다.

어떻게 테스트 코드를 작성해야 팀원들의 이목을 끌 수 있을까?

  • 객체의 특성을 나타내는 변수명 사용
    • name1 대신 잘생긴_최현구
  • 가짜 생성자를 이용해서, 테스트에 중요한 파라미터만 강조
  • 테스트 코드를 읽는 사람을 겨냥한 이목을 끄는 테스트 값 사용
    • 지현님이 내 자리에 후레쉬 베리 쓰레기를 버리셨다. 용서하 수 없다. 등…
  • 불필요한 테스트는 과감히 생략
    • 테스트가 너무 길고 많아도 읽지 않는다.
    • 나머지 더 중요한 테스트들을 강조하는 효과

내가 테스트 코드에 집착하는 이유는 결국 팀원들의 시간을, 경제성을 확보하기 위함이다.

사실 테스트 코드를 작성하는건 어려운 일이 아니다. 진짜 어려운 일은 테스트 코드 작성 문화를 안착 시키는 것이다.

다행인 것은 개발자들은 논리적이고 이기적인 존재라는 것이다. 자신에게 득이 될 것과 실이 될 것을 빠르게 판단하고 행동한다. 테스트 코드 작성의 경제성을 이야기하고(하면 득), 더 나아가 테스트 코드 작성을 상호간 매너(안하면 실)로 인지하게끔 만든다면 테스트 코드 작성 문화 안착이 오래 걸리지 않을 것 같다.


📺 그래서 후기

발표 직전까지 심장이 쿵쾅거리는 소리를 들으며 바짝 긴장했다. 앞서 진행되는 성윤님과 학건님의 발표가 눈에 들어오지 않았다. ‘얌전히 글이나 쓸 걸 왜 발표를 신청했을까?’ 한참을 후회하던 중 차례는 다가왔고, 결국 발표를 마쳤다. 마친 소감은 ‘역시 하길 잘했다!’

발표라는 건 발표자가 많은 시간과 리소스를 투자하지만, 청중들도 시간과 리소스를 투자해서 듣는 다는 것. 퇴근 후 피곤한 몸을 이끌고 먼길을 찾아와 나의 주저리주저리를 들어준다는 게 얼마나 고맙고 감사한 일인지. 투자한 만큼 얻어가는게 있다고 느껴져야 한다는 것을 깨닫는 경험이었다.

발표를 마친 후 성윤님께서 “리허설을 하길 잘했다.” 이야기를 여러번 하셨다. 그만큼 리허설과 실제 발표의 갭이 컸다. 뜬구름 잡는 소리만 늘어뜨려놓은 슬라이드를 처음부터 끝까지 뜯어고쳤다. 평소 내가 어떻게 테스트 코드를 작성하는지 모든 프로젝트를 열어보고, 더듬거리면서 발표자료를 다듬었다. 리허설을 해보지 않았다면 실제 발표를 망치고 나서야 깨달음을 얻었을텐데… 상상만 해도 아찔하다. 리허설 시간을 마련해주신 성윤님, 글또 운영진분들, 학건님, 나라님께 감사하다. 🙇‍♂️

아! 후련하다. 다시 개발해야지.


댓글남기기