Goodbye 2019, Welcome 2020

올해의 달성과 내년의 목표

미련이 생길 때, 고민이 있을 때, 힘들 때, 이 글을 보며 항상 새로운 도전들을 했습니다.

올해는 지금까지 해온 것들을 정리하는 1년이기도 했고, 새로운 도전을 하는 1년이기도 했습니다. 내년의 목표를 생각하며 올해의 일들의 후기를 조금 남겨보고자 합니다.

알고리즘, 알고리즘, 알고리즘

  • 전국대학생프로그래밍대회동아리연합(이하 전대프연) 회장과 UCPC 운영
  • Codeforces 보라 달성
  • SCPC 온사이트 본선 진출 성공
  • ICPC 온사이트 본선 진출 실패
  • 고려대학교 프로그래밍 경시대회 KCPC 출제 및 디자인

올해는 지난 3년간에 비해 알고리즘 공부를 하지 않았습니다. 합쳐서 200~300문제 정도 풀었던 것 같습니다. 지난 3년간 4000문제를 푼 것에 비하면 매우 적은 수로 느껴집니다.

4학년 졸업 후에 어떤 공부를 이어가야할까 라는 고민이 가장 컸고, 대회용 알고리즘보다는 product를 만들 수 있는 분야로 나아가고 싶었기 때문입니다. (알고리즘 대회를 준비하며 생긴 스트레스도 하나의 이유이기도 합니다.)

함께 알고리즘을 시작하며 ACM-ICPC World Final이라는 같은 목표를 향해 달려온 친구들이 대회에서 좋은 성적을 내는 것을 보며 부럽기도 했습니다. 알고리즘을 계속할 걸 이라는 생각도 했었습니다.

하지만 UCPC를 운영하며 각자는 각자의 길이 있다는 것을 깨달았습니다. 알고리즘 대회/동아리에도 1등2등3등만 있는 것이 아니라 신규 진입자를 돕고, 동아리를 운영하고, 대회를 여는 그런 사람도 필요합니다. 제 역할은 운영자이자 스태프였고 1년간의 뉴비, 2년간의 AlKor 임원, 1년간의 전대프연 임원으로 행복한 알고리즘 생활을 보냈다고 생각합니다.

이런 알고리즘 생활의 시작을 도와주신 @wclee2265, @nyan101, @ltg2030 선배님들에게 감사의 인사를 남깁니다.

또한 학부가 끝나며 이제는 대학생 알고리즘 대회는 끝났지만, 이제 저와 제 친구들은 각자의 분야에서 노력하고, 또 새로운 분야에서 빛날 것이라 생각하고 응원합니다.
@djkim0613, @godusheep, @BaaaaaaaaaaaaaaarkingDog, @0xrgb, @IohcEjnim 다섯 명 모두 4년동안 정말 고마웠다!!

그리고 작년에 함께 했던 @evenharder, @Lawali가 올해 CodeForces grandmaster 도달을 축하합니다. 함게 팀해서 영광입니다 :)

2020의 알고리즘

  1. Codeforces에서 Master는 찍어보겠습니다. 큰 욕심은 없으나 그래도 감을 잃지 않는 선에서 알고리즘은 취미 삼아 할 예정입니다.
  2. 구글 코드잼, 페이스북 해커컵, 탑코더 TCO의 T셔츠만 목표로!!

데이터사이언스의 시작

딥러닝의 시작

올해의 시작은 딥러닝이었습니다.

2019년 1월 1일 케라스 창시자로부터 배우는 딥러닝 책을 읽고 정리하며 딥러닝을 시작했습니다. 약 1달간 책을 읽고 정리했고 처음으로 페이스북 TensorFlow KR에 공유를 했습니다. 이 당시 공유수가 300회를 돌파하며, 정리/글쓰기/커뮤니티의 맛에 빠졌고, 더 딥러닝을 열심히 공부하게 된 계기가 되었습니다.

하지만 딥러닝을 공부하며 왜 충분하게 만족할 수 있는 product는 없을까, 왜 이 분야에 사람들이 열광할까, 이 분야에서 내 역할은 무엇일까 라는 의문을 가지게 되었고, 딥러닝 개발을 잘하기보다는 딥러닝으로 무엇을 할 수 있고 현재 어떤 우리는 어떤 상태까지 왔는지를 아는 사람을 목표로 삼았습니다. 약간 딥러닝 미래학자와 비슷한 느낌으로..?

그렇게 LR Project라 하여 PR12를 오마주한 가볍게 논문 읽기 프로젝트 Light Reading 프로젝트를 혼자 시작했습니다. paperswithcode나 Monterial AI등의 사이트에 올라오는 논문들을 매일 같이 스치듯 읽으며 인상 깊었던 논문은 포스팅하고는 했습니다.

Kaggle의 시작 (feat. Data Visualization)

  • Kaggle Korea 운영진
  • Kernel Ranking 0.1% 달성 (금1은3동14)
  • Discussion Ranking 0.2% 달성 (금2은4동113)

하지만 트렌드도 좋지만, 기본기는 반드시 필요합니다. 그래서 시작한게 Kaggle 입니다. 기본기를 Kaggle로 다져야겠다 라는 생각을 하며 시작했는데, 딥러닝뿐만이 아닌 머신러닝 방법을 많이 쓰는 것을 보고 충격을 받았습니다.

정형 데이터를 다루는 방법들이 신기했고, 서로의 아이디어를 공유하며 경쟁하는 신기한 문화에 빠졌습니다. Titanic 등 기초적인 competition의 Tutorial 등을 만들며 활동을 하던 도중 운영진 분들에게 연락이 왔고, 그렇게 4월에 운영진에 들어갔습니다.

알고리즘 대회를 하며 받은 스트레스 때문에 경쟁하는 문화를 조금 기피하여 대회가 아닌 다른 부분으로 할 수 있는 부분은 없을가 생각하였고, 그렇게 Kaggle Kernel/Discussion에 초점을 두어 시작했습니다.

우선은 Discussion으로 보라색인 Expert를 만들자 라고 생각했고, 꽤나 열심히 댓글을 달며 돌아다녔습니다. 답해줄 수 있는 질문을 찾아다니고, 좋은 커널을 종종 필사하며 감사의 댓글을 남겼습니다. Discussion으로 Expert는 약 3주/4주 정도 걸렸습니다.

이제 Kernel 부분을 시작했습니다. 당시 SW마에스트로에서 Web Front-End를 담당하기도 했고, 디자인/Presentation을 좋아했고 , EDA를 공유하는 사람이 되고 싶었기에 데이터 시각화(Data Visualization) 부분을 중점적으로 공부했습니다.

약 3개월간 Matplotlib, Seaborn, Plotly 등 여러 라이브러리의 사용법, 여러 데이터 시각화의 방법론, 인포그래픽 자료, 시각화관련 발표자료 등을 찾아보며 꾸준하게 Kernel을 만들었고 결론적으로 Kaggle Kernel 0.1%에 도달할 수 있었습니다.

동기부여를 하게 돕고, 항상 좋은 말씀을 해주시는 KaggleKR 운영진 & 구성원분들 항상 감사합니다. 모두 Keep Going해서 원하는 목표를 이루기 위해 노력합시다.

2020 딥러닝/머신러닝

  • Kaggle Competition/Dataset에서 Expert(보라색), Kernel/Discussion에서 Master(오렌지)를 목표로 달려볼 생각입니다.

  • 데이터 시각화 관련 Repo에 Contribute를 1개 이상하고 싶습니다. 오픈 소스에 기여하는 경험을 하고 싶네요.

  • 내년에는 DL/ML/데이터시각화 관련으로 프로젝트나 튜토리얼을 만들어 좋은 github repo를 만들고 공유하는 것을 목표로 하고 있습니다. 유튜브로 강의도 함께 찍으면 좋겠네요. (패스트캠퍼스, 인프런 등 에서 강의를 찍을 수 있다면 좋겠네요.)

  • Interpretable AI의 이론을 심도있게 공부하고자 합니다. 데이터 시각화를 시작한 이유이기도 하고, 제가 아직 딥러닝이 마음에 차지 않는 이유이기도 합니다. 이 분야에서 전문가로 성장하고 싶습니다.

  • 머신러닝/딥러닝의 배포와 관련하여 간단한 Toy Project를 해볼 생각입니다. 아직까지는 딥러닝 모델을 개발하거나 SOTA를 달성하기보다는 Product를 만들고 싶다는 생각이 큽니다.

  • 내년에는 데이터 분석 관련으로 책을 쓰고 싶습니다. 저자가 아니라 번역으로 시작해도 좋을 것 같다는 생각입니다.

개발의 시작

SW마에스트로 10기

  • SW마에스트로 : 10기 연수생 (프론트엔드 개발 with React)
  • Team FP : Force Push 인터뷰

협업을 하는 방법과 Product를 만드는 과정 등을 배우고 싶어 지원을 했습니다. (대학교 입학 전부터 형(@dobestan)에게 SW마에스트를 지원하라고 조언(저에게는 잔소리)을 들었는데, 결국 대학교 4학년이 되서 신청을 했습니다.)

개발의 ㄱ자도 몰랐지만 코딩테스트나 면접은 떨어질 자신이 없었습니다. 지금 생각하면 제 부족함을 몰랐기에 겁이 없었다고 생각합니다.

합격 후에 팀 빌딩 과정에서 인증보다는 천천히 함께 성장할 수 있는 팀을 원했고, 결론적으로 저에게 최고의 팀을 찾았습니다. 주제를 정할때는 딥러닝이나 머신러닝으로 프로젝트를 진행하기에는 6개월이 너무 짧았고, 저는 항상하고 싶었던 Web Designer의 포지션을 목표로 했습니다. 기존에도 github page를 꾸미거나, 웹 크롤링 등으로 html/css는 어느 정도 익숙한 부분도 많았습니다.

깃헙으로 협업하는 방법, Front-End에서 API 쓰는 방법 등을 팀원에게 배우고 여러 소스로 공부하며 개발의 기초는 하고 온 것 같습니다. UI/UX를 여러 방면으로 공부하고 웹 프레임워크 React를 시작하는 등 하고 싶은 공부는 꽤 하고 온 것 같습니다.

6개월간 네 분의 멘토님이 함께 해주셨는데, 각 멘토님마다 배울 부분이 많았습니다. 진정한 개발자, 진정한 멘토 를 보여주신 멘토님들이었습니다.

항상 배려해주고 함께한 @bhw1994, @nuguzii에게 감사의 말을 남깁니다. 다시 팀원의 선택 기회가 있더라도 저는 이 팀원을 다시 찾겠습니다. 둘 다 원하던 회사/대학원으로 갔으니 몇 년 후에는 최고의 개발자/연구원이 되어 있지 않을까 생각합니다. (이제 저만 잘가면 되네요!!)

마지막으로 함께 해준 SW 마에스트로 10기분들에게도 감사의 인사를 남기고, 모두 성공해서 볼 수 있으면 좋겠습니다.

2020의 개발

  • SW마에스트로를 끝내고 BackEnd를 함께 공부할 걸, 배포는 하고 끝낼 걸 이라는 후회가 조금 있었습니다. 2020에는 DevOps와 SRE 등 전반적인 개발의 흐름을 공부하고자 합니다.

  • UI/UX 공부는 좀 더 체계적으로 하고자 합니다. 데이터 분석 쪽에서 UI/UX를 활용할 수 있는 방안들을 생각해보고자 합니다. 현재는 데이터 분석 Tool 개발 등의 길을 생각하고 있습니다.

  • 2020 하반기에는 개인 사이트를 만들 예정입니다. 강의나 자료 등의 플랫폼을 만들어 보다 체계적인 subinium의 코딩일지를 만들고자 합니다. 다음 사이트 등을 참고할 예정입니다.

커뮤니티의 시작

Facebook과 블로그

딥러닝을 시작하며 본격적인 블로깅과 커뮤니티를 시작했습니다. 그렇게 약 1년간 400개가 넘는 글/영상을 포스팅했고, 150만이 넘는 도달수, 10000회 이상의 공유수 등의 기록이 남았습니다.

포스팅을 하면서도 여러 생각의 변화가 있었는데 다음과 같습니다.

  • 어떤 게시물이 사람들에게 좋은 호응을 얻을까?

모두를 위한 자료를 만들고 싶었고, 쓰다보니 저에게 가장 큰 동기부여는 좋아요와 공유였습니다. 그런만큼 본인의 관심 분야와 사람들의 관심 분야 사이 교집합에 있는 글을 쓰기 위해 노력했습니다. 많은 글을 읽으며 딥러닝의 트렌드들도 맛볼 수 있었고, 글을 쓰고 정리하는 방법, 발표자료를 포함한 자료 만드는 방법 등도 자연스럽게 체득하게 되었습니다.

하지만 약 100개, 200개를 포스팅하고 나니 어느 순간 기본기가 부족하다는 것을 느꼈습니다.
꼭 코딩을 잘할 필요는 없다고 생각하지만, 기본기는 갖추고 있어야 한다고 생각했고 이때부터 생각이 바뀌어 다음과 같은 질문을 하며 글을 쓰기 시작했습니다.

  • 어떻게 나의 성장을 위한 포스팅을 할 수 있을까?

성장을 위해서는 본인이 관심있는 분야를 딥하게 공부하고, 내용을 정리해서 포스팅하는 것이 가장 좋다는 결론을 얻었습니다. 그래서 각 페이지는 다음 내용을 중심으로 포스팅했습니다.

  • AI 페이지에서는 Kaggle에서 직접 만든 커널을 중심으로 포스팅하기 시작했습니다. 이때부터 여러 시각화를 구현하기 시작했습니다.
  • 알고리즘 페이지에서는 기존에 공부했던 PS 분야에 있어 팁들과 문제풀이를 올리기 시작했습니다. 외부 강의와 겹치지 않는 선에서 하기 위해 많은 노력을 했습니다.

결론적으로는 글의 수는 1/3 수준으로 줄었지만 더 많은 공부를 할 수 있었습니다. 글의 퀄리티를 관리하며 포스팅 수를 점점 늘려봐야겠습니다.

YouTube : 수비니움의 코딩일지

알고리즘 페이지와 함께 유튜브를 본격적으로 운영하고 싶었는데, 여름방학부터 모든 일정이 겹쳐 영상을 찍을 수 없었습니다.
프로젝트 오일러의 수학+프로그래밍 문제를 약 50개 정도 올리고, 그 외에 캐글 부분 튜토리얼, 머신러닝 기초 등 60개 정도의 영상을 촬영했으나 지금보니 매우 부족할 따름이네요.

내년에는 본격적으로 강의나 컨텐츠를 만들어 볼 생각입니다.

2020의 커뮤니티/블로그

  • 블로그와 페이스북은 각 페이지당 약 일주일에 1개 이상의 글을 쓰는 것을 목표로 합니다.
  • 유튜브는 구독자 5000명을 목표로 달려볼 예정입니다. 좀 재미있는 프로그래밍 컨텐츠를 만들고 싶습니다.

외부 활동의 시작

작년에도 동아리 연합 행사에서 강의를 하고는 했지만, 올해는 본격적으로 외부 강의/발표를 하게 되었습니다.

총 4개의 발표와 2개의 강의를 했습니다.
정리하면서 보니 다 저에게 과분했던 자리였네요. 더 열심히 해야겠습니다.

패스트캠퍼스를 제외한 모든 발표 자료는 slideshare에 있습니다.

발표의 시작

  • 2nd 함께하는 딥러닝 컨퍼런스 (2nd DLCAT) : The Newbie Guide to Blogging

첫 발표로는 과분한 자리에 초대를 받았습니다. 당시에는 블로그나 포스팅을 열심히 하던 시기이기에 해당 분야로 주제를 정했습니다. 딥러닝 컨퍼런스에서 블로그로 발표하기가 부끄러웠지만 어떻게 기술 블로그를 쓸 수 있을지, 어떻게 가독성을 높일지 많은 고민을 했었기에 그래도 최대한 컨퍼런스의 목적에 맞게 발표를 준비할 수 있었습니다.

그리고 당시에 좌석 수가 많은 강연장을 신청하여 진행했는데, 더 좋은 내용 & 좌석 수가 부족했던 강의와 자리를 바꿨으면 하는 후회가 있습니다. 그리고 다음에 발표를 할 수 있다면 보다 딥러닝스러운 발표를 하고 싶습니다.

뒤풀이 소고기는 잊혀지지 않습니다... 감사합니다 태영이사님.

  • 캐글 코리아와 함께하는 제1회 청소년 데이터과학 컨퍼런스 : 학생때 블로그를 써야하는 이유

청소년 컨퍼런스에서 캐글 코리아 운영진 신분으로 발표를 가게 되었습니다. 학생들의 수준이 다양하고, 각자 원하는 목표가 다를 것이기에 보편적인 내용을 주제로 삼고자 했고, DLCAT에서 했던 발표를 수정하여 발표를 진행했습니다.

다들 열심히 들어주시고, 많은 분들의 열정을 느낄 수 있어 동기부여가 되는 발표였습니다.

  • 서울시립대학교 제 3회 교내 알고리즘 프로그래밍 대회 : 알고리즘, 어떻게 공부할까?

갑작스럽게 발표를 제안받아 발표를 진행했습니다. 주제는 알고리즘 관련으로 자유 주제를 제안받았습니다. 이미 알고리즘 대회에는 손을 떼고 있던 터라 알고리즘을 공부한 과정과 시간이 지난 후에 제가 후회했던 내용을 발표했습니다.

발표를 준비하며 그동안 고민했고 찜찜했던 PS에 관한 생각들을 깔끔하게 정리할 수 있어 좋았습니다.

SW마에스트로 최종 발표날과 겹쳐서 조금 힘들었다는 후문 & 그리고 오랜만에 본 호준이가 있어서 좋았다는 후문

  • 2019 Global AI Boot Camp Busan : 이왕이면 다홍 데이터

시각화로 꾸준히 포스팅을 하다가 처음으로 시각화 발표를 하게 되었습니다.
부산이라서 갈지말지 고민했지만 데이터 시각화 발표는 꼭 하고 싶었기에 가게 되었습니다.
어쩌다보니 마지막 발표라서 자료가 계속 업데이트 되었고, 결국에는 발표자료에 제가 진행한 시각화의 70% 이상이 들어갔습니다. 세미나/스터디 처럼 실습할 수 있는 환경이었다면 좀 더 좋았을 것 같은데 그 부분이 아쉽습니다.

중학생 이후 첫 부산인데 최고의 기억을 담고 갑니다. 불러주셔서 감사합니다

강의의 시작

  • Fast Campus : 알고리즘 / 기술면접 올인원 패키지 Online.에서 실전 코딩테스트 대비 문제 풀이

UCPC를 끝내고, 통해통해 Fast Campus의 알고리즘 강의를 제안받았습니다. 주변의 많은 분들이 저보다 잘하기에 살짝 고민하기도 했습니다. 그래도 인터넷 강의이기에 많은 분들이 볼텐데 잘할 수 있을까 걱정을 많이 했습니다. 결론적으로는 고민 끝에 수락을 했습니다.

강의를 찍으며 3년간의 PS 팁들을 넣기 위해 노력했고, 나름대로 최선을 다해서 찍었습니다. PM님 덕분에 항상 즐겁게 찍을 수 있어서 좋았습니다. 아직 조금 남은 부분이 있어 빨리 끝내는 것이 목표입니다.

  • T아카데미 캠퍼스 강의 : 비전공자를 위한 Git과 Github 페이지 만들기

저에게는 절대로 제안이 오지 않을 것 같았던 T아카데미에서 Git강의를 제안 받았습니다. 처음에는 비개발자를 위한 Data Science에 필요한 Git 과 유사한 주제였는데, 제가 DS를 위한 Git을 잘 모르기도 하고, 협의를 통해 Git과 Git Page 개발 이라는 주제가 되었습니다.

그래도 2년 정도 깃헙 블로그를 사용했고, SW마에스트로를 하며 git이 조금 익숙해졌다 싶었는데 꽤 많은 부분의 어려움 점이 있었습니다.

  • 어디까지가 기초이고, 비개발자분들의 배경 지식은 어느정도인지 모르니 힘들었습니다.
  • Window 유저가 분명 더 많을 것이고 git bash를 써본 적이 없어 혼자 실습하는 데 시간이 많이 걸렸습니다. 처음으로 mac에 윈도우를 설치했습니다.
  • 본인이 CLI와 GUI를 번갈아 쓰고 있어 그런 부분에서 빠지는 부분이 없도록 개념을 정리하는 부분도 힘들었습니다.
  • 심지어 Windows와 MacOS의 SourceTree가 다른 것을 꽤 나중에 알아 매치시키는 것이 어려웠습니다.
  • 30분만에 Github 알기 등의 글들도 구글에 많아 5시간 동안 Git을 강의하는 것도 시간이 부족할 것 같았습니다.

약 3주 정도 자료를 만들고, 다듬고를 반복해서 만들었는데 내용이 조금 넘쳤던 것 같습니다. 시간이 부족했고, 강의를 하고자 했던 Github Page 부분이 빈약하게 되어 수강생분들에게 죄송했습니다. 제 부족함을 많이 느끼고, 그만큼 성장할 수 있었던 시간이었습니다.

스트레이트 5시간 실습 강의는 확실히 경험이 좀 더 필요한 것을 느꼈습니다. 그래도 스태프 요청에 바로 달려와준 과동기 @taebbong과 소마 팀원 @bhw1994 덕에 강의를 잘 마칠 수 있었습니다.

곧 유튜브에 영상이 올라가는데, 제가 너무 부족한 모습이 상상되어 부끄럽네요. ㅠㅠ

2020의 발표와 강의

  • 자료를 만드는 과정은 힘들지만 발표와 강의는 제가 하는 활동 중 가장 즐겁습니다. 내년에도 2달에 1개 정도는 발표나 강의를 할 수 있으면 좋겠습니다.

  • 자료를 만드는 속도를 조금 높이고자 합니다. 현재는 한 페이지에 오래 걸릴 때는 30분에서 1시간이 걸리고는 합니다. (Keynote에 손을 대는 순간, 완벽한 자료를 만들고 싶다는 생각이 들어서... ) 자료를 더 효율적으로 만드는 방법을 생각해봐야겠습니다.

ETC

학부의 마지막 1년

이 모든 과정은 학부 4학년을 다니며 진행했습니다.

  • 1학기 21학점(7과목), 2학기 8학점(3과목)
  • 졸업 영어 요건

졸업을 위한 영어 성적을 얻기 위해 시험을 치고 본인 영어 실력에 대한 회의감을 많이 느꼈습니다. 2020에는 영어로 포스팅을 하고, 영어로 발표를 할 수 있도록 영어 공부에 신경써야겠습니다.

No휴학 스트레이트4년 150학점의 후기는 졸업식 이후에 기회가 되면 써보도록 하겠습니다.

체력의 저하

6월부터는 바빠서 운동을 전혀 안하기도 했고, 1학기에는 평균적으로 4~5시간 취침시간을 유지하며 살이 찌고 피로가 몸에 쌓였습니다. 2학기부터는 하루 취침시간을 7~8시간으로 늘이며서 회복하긴 했지만 앞으로 그런 생활 패턴은 하지 말아야겠습니다. (다짐 또 다짐)

2020에는 항상 건강을 최우선으로 생활하고자 합니다. 운동도 다시 시작해야겠습니다.

계획이 없는 생활

많은 일들을 시작했고, 매 순간이 바빠 일정 관리를 전혀 못했습니다.
내년에는 보다 체계적으로 계획을 세우고 지내고 싶습니다.

Notion 등으로 캘린더를 관리해야겠습니다. 소프트 스킬 책에서 이야기하는 개발자의 모습을 가지기 위해 더 노력해야겠습니다.

2020의 시작

올 한해를 정리하는 글을 쓰니 1년동안 열심히 달렸고, 많은 사람의 도움을 받고 왔다는 생각이 듭니다. 가장 중요한 것은 사람이라는 말을 체감할 수 있는 1년이었습니다.

1월 초에는 카카오 엔터프라이즈에서 제 첫 인턴을 시작합니다. 인턴을 하며 어떻게 더 성장할 수 있고, 어떤 길을 가야할지 더 고민해볼 예정입니다.

다들 멋지고 행복한 2020을 응원합니다.


오랫동안 꿈을 그리는 사람은 마침내 그 꿈을 닮아간다