기타

2019년을 회고하며..

TwinParadox 2020. 1. 1. 19:34
728x90

반오십(25)

반오십은 이렇다고 한다. 어...

생각보다 반오십은 나에게 크게 다가오지 않았다. 스무 살을 시작하자마자 망가져 버렸던 몸이었기 때문에 오히려 20대 이래로 가장 몸 상태가 좋은 편에 속했을 정도였다. 체력적인 저하가 조금 오긴 했지만, 반대급부가 세게 오던 지난 20대의 삶보다는 훨씬 나은 상태였다. 지금의 상태를 잘 유지하고 체중 조절도 좀 해나가면서 건강 상태를 조금이라도 더 나아지게 하는 것을 최선의 목표로 하고 있다.

 

 

민간인일 수도, 아닐 수도 있습니다. 자세한 건 병무청에...

9월까지는 요즘 논란이 많은 사회복무요원 신분이었다. 복무 생활하면서 지금 논란이 되는 급의 문제는 없었지만, 이래저래 허술한 부분들이 없지 않아 있는 것 같다고 생각하고 있다. 각설하고, 일단 출퇴근하면서 대체 복무를 하는 상황이었기 때문에, 현역 군인들과는 다른 상황에 놓여 있기 때문에, 이 상황을 최대한 이용하는 방법을 생각하지 않을 수 없었다.

 

 

남들 다 하는 것을 해보자.

정말 복학이 얼마 안 남았다는 생각이 드니까, 다시 준비해야겠다는 생각보다는 이제 놀 수 있는 날이 더는 남아 있지 않다는 생각에 약 8개월간의 복무기간에는 그렇게 밀도 있는 삶을 살지는 않은 것 같다. 그래도, 이대로 아무것도 하지 않고 학교로 돌아가기엔 나 자신에게 너무 미안해져서 남들 다 해보는 것부터 다시 시작하기로 했다. 토익과 한국사, IoT지식능력검정이 눈에 들어왔다. 토익 공부는 여름즈음부터 다시 시작을 했다가 복학 하고 너무 바빠 중단했다가 최근에 다시 시작해서 겨울이 가기 전에 끝을 낼 계획이고, 한국사 능력 검정은 2월에, IoT지식능력검정은 5월에 끝을 냈다.

 

 

재미로 시작한 영상처리(OpenCV)와 .NET

휴학 전에 재미로 .NET Framework로 윈도우 응용프로그램 만드는 것에 빠져 있었다. 쉽게 버튼을 만들고 내가 원하는 대로 동작시키는 것에 맛이 들려, 평소 유틸리티 프로그램들을 사용하면서 아쉬웠던 기능을 다시 개량한 프로그램도 만들어보고, 주위의 요구사항에 맞춰 Windows API까지 다루는 프로그램도 만들어봤다.

 

좌 ColorPicker(WPF) / 우 DirectoryCleaner(Winform)

 

영상처리와 OpenCV 같은 경우는 거대한 목표의식을 가지고 시작한 게 아니었다. 우연히 지나가다가 발견한 캐니 엣지(Canny Edge)를 보고 매력을 느껴 이미지의 윤곽선을 따서 장난치는 시도만이라도 공부해봐야겠다는 일념으로 차근차근 공부를 시작했다.

 

커뮤니티에서 한창 유행이었던 이 사진을 장난스럽게 변형하려고 영상처리를 공부했다.

무슨 생각이었는지 모르겠는데, 포토샵이 아니라 OpenCV로 저 사진을 재밌게 변형시키는 것을 목표로 공부를 했다. 당시에는 어떤 책을 사서 공부한 것도 아니고 이곳저곳 퍼져있는 블로그의 글과 동영상들을 참고해서 공부를 진행했다. 윤곽선을 따보고 여러 가지 변형을 통해서 주변 사람들에게 재미를 가져다주는 초기 목적을 달성하고 공부를 그만뒀다.

 

단 한 순간도 놓지 않았던 알고리즘 문제 풀이, 편식이 심한 것이 좀...

알고리즘 문제 풀이를 즐기는 편이다. 코딩 테스트를 대비하는 차원인 것도 있지만, 가끔 프로젝트를 진행하다가 막힐 때 분위기 전환 겸 문제를 풀어주면 주의를 환기할 수 있기 때문이다. 이것은 내가 복무 중인 것과 무관하게 계속 이어졌다. 알고리즘 문제는 주로 백준 온라인 저지를 이용했고, 이외에도 기업 코딩테스트 기출문제나 SWEA의 문제도 가끔 풀곤 했다.

 

Solved.ac에 있는 난이도, 편식이 심했다.

2018년 12월 31일 나는 BOJ에서 653문제를 풀었는데, 지금 이 스크린샷을 캡쳐한 현재 총 819문제를 푼 것으로 기록되어 있다. 166 문제를 풀었으니 2~3일에 한 번꼴로 문제를 푼 셈이다. 문제는 난이도 편식인데, 분포를 봐도 브론즈~실버 난이도에 몰려있는 것을 볼 수 있다. 이제는 난이도 편식을 그만둬야 할 때라서, 2020년에는 아마 골드~플래티넘 구간의 문제를 주로 풀지 않을까 싶다. 

 

 

 

눈앞에 다가온 복학

이렇게 하고 싶은 대로 막살다가 2학기 복학 신청 공지가 올라오면서 갑자기 앞날이 캄캄해졌다.

 

당시 내게 보였던 앞날

사실 마음대로 하고 사는 그 순간에도 학교에 돌아갔을 때 어떻게 흐름을 따라가야 할지 많이 고민했다. 신년부터 해오던 고민이었는데, 결론은 연구실이었다. 연구실에 눌러앉아 학과의 흐름에 올라탄 상태에서 기회를 얻고, 개인적인 노력을 더해 개인의 성장을 멈추지 않는 것이 좋겠다는 판단이 섰다. 여러 방면으로 빈자리가 있는 연구실을 수소문하던 끝에, 마침 자주 연락하던 동기가 새로운 연구실이 생겼다고 하여 그 연구실에 들어가기로 마음을 먹고 여러방면으로 이야기를 나눴고, 복학 신청을 하러 가던 7월 말 연구실 지도교수님과 상담하고 소속 연구실을 정했다. 소속을 정하고, 복학을 준비하는 동안 나는 파이썬과 라즈베리파이를 약 7주 동안 다시 갈고 닦았다.

 

 

 

예상은 했지만 이정도일 줄이야

휴학하고 1년이 지나니, 더 이상 학교 소식에 대해 궁금하지 않아 학교 자체의 소식은 듣지 않고 있었는데 그 나름의 이유가 있었다. 1년 동안 지켜본 결과 별다를 게 없었고, 더 이상 달라질 게 없는 것처럼 보였다. 하지만, 이것은 완벽히 내 착각이었고 학교는 2019년 되면서 언제 그랬냐는 듯이 학교는 변화하고 있었다. 그리고 그것이 온전히 나에게 영향을 미쳤다.

 

머신러닝이요? 들어도 봤고 시도는 해봤습니다만...

이거 아닙니다.

1년도 채 지나지 않아서 학교에서는 머신러닝/딥러닝/빅데이터 관련 교육을 개설하는 움직임을 보였다. 우리 학과도 빠지지 않았다. 커리큘럼을 개편해서 새로운 강의를 신설하고, 방학 동안의 특강을 진행하면서 학번 별로 꼬여버린 커리큘럼을 만회하려는 시도도 진행된 것으로 알고 있다. 학과에서는 7월 내내 특강과 교육이 진행되었는데, 나는 타지에 있었고, 복무 중이었기 때문에 참여할 수 없었다. 휴가를 최대한 아끼고 아껴도 8월 말부터나 학교에 갈 수 있는 상황이어서 더욱 암담해졌다.

 

https://www.youtube.com/watch?v=BS6O0zOGX4E&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm

머신러닝이라는 단어는 일면식이 있는 단어였다. 그것도 자그마치 4년 전 홍콩과기대 김성훈 교수님의 특강에서 이야기를 들었고, 시간이 좀 더 흘러 이세돌과 알파고의 대결을 목격하고 나서는 정말 이게 무엇인지 궁금해서 김성훈 교수님의 '모두를 위한 딥러닝' 강의를 들어보고, 텐서플로우를 설치해서 코드도 따라 쳐보기까지 했었다.

 

문제는 거기까지였다는 것이다. 내가 그 당시 따라쳤던 코드는 극히 일부분에 불과했고, 그나마도 중간에 동기부여에 실패해서 완주하지 못한 상태였다. 그런 상태에서 어떠한 준비도 없이 복학하자마자 정규 편성되어 있는 머신러닝 강의를 듣고 과제와 시험, 텀프로젝트를 수행해야 했고, 연구실에서는 한 술 더 떠서 딥러닝 학습을 진행했다.

 

 

고장 예측을 통한 Predictive Maintenance 시스템

뭐 어떻게 달려왔는지도 기억이 안 날 정도로 정신 없이 공부를 했다. 중간중간 과제도 있었고, 시험은 중간과 기말로, 이론과 실습 모두 다루고 있었다. 게다가 피날레로 2~3명이 하나가 되어 진행하는 팀 프로젝트까지 있었다. 프로젝트 주제는, 스마트 팩토리나 자율 주행 두 가지 주제 중 하나의 주제를 잡고 머신러닝을 활용한 일종의 솔루션을 개발하는 것이었다. 나와 다른 동기 한 명으로 구성된 우리 팀은 머신러닝을 활용해서 기기의 고장을 예측해 유지보수를 진행하는 Predictive Maintenance 시스템을 개발했다. UI/UX 부분에서 조금 더 개선이 필요하지만, 지금껏 다른 프로젝트들을 그냥 돌려보는 것이 전부였던 것을 벗어나 뭔가 직접 만들어낸 것 같아 나름 만족스러웠고, 성적 역시 나쁘지 않았다.

 

 

장난스레 시작한 영상처리(OpenCV)를 끝맺다.

혼자 책도 없이 영상들을 참고하면서 하다 보니까, 영상이 아직 제작 중이거나, 글도 작성되다 만 경우가 흔해서 더 이상 진도가 나가지 않은 상태였다. 이대로 끝날 순 없는 상황이고 프로젝트를 진행하거나 GAN을 하다 보면 OpenCV를 하지 않을래야 않을 수 없어서 학습의 끝을 맺어야 했다.

 

 

FFT, IFFT
FFT, IFFT

처음에도 C++로 OpenCV 시작했기 때문에 C++로 쓰여진 책을 하나 정해서 학습을 시작했다. 단순 재미를 위해 학습하면서 무심코 지나쳤던 내용들까지 학습하면서, 책을 완독하고 나니, 정작 프로젝트에 빠르게 구현하여 적용할 수 있는 건 파이썬이라서, 파이썬으로도 재차 복습하는 과정을 거쳤다.

 

 

그 외의 학교에서 했던 것들과 결말

소켓 프로그래밍을 활용해서 간단한 게임도 만들어봤다. 게임 퀄리티 자체는 높지 않지만, .NET을 활용해 간단하게 팀 프로젝트를 수행해봤고, 연구실에서 가시광통신 관련 실험을 하면서 송수신단 코드도 작성하고, 실험을 수행하는 과정에서 송수신부 설정 문제로 온갖 고생도 해봤고, 파일럿 프레임과 통신 채널 싱크의 중요성을 몸소 체험해보기도 했다. 또, GAN을 활용한 프로젝트들(SRGAN, CycleGAN, Pix2Pix 등..)을 직접 돌려보면서 해당 모델의 구조가 어떻게 되어 있고 이 모델에 대한 수학적인 내용들에 대해 공부하는 기간을 가졌다. 아직 부족한 부분들은 많지만 조금 더 채워 넣을 부분들이 많은 것 같다. 이외에도 한 것들이 더 있는 것 같은데 막상 쓰려고 보니 기억이 나지 않는다.

 

학점 방어에 성공했다!

 

 

학교 밖에서의 활동

도서 리뷰와 베타 리딩

한빛미디어 나는 리뷰어다, 4월부터 11월까지 활동은 계속되었다.

1년 내내 책이 끊이질 않았다. 기회가 닿아 한빛미디어의 '나는 리뷰어다 2019' 리뷰어로 선정되어 달마다 신간들을 리뷰할 기회를 얻었다. 꽤 많은 전문서를 읽어봤기 때문에 다른 전문서와 비교해봤을 때 이 책이 어떤 부분이 더 좋은지 비교하는 방식으로 책을 읽어보는 색다른 경험을 해봤다. 나는 개인적으로 만족스러운 경험이었지만, 한빛미디어에 큰 도움이 되었는지는 잘 모르겠다. 만약 그렇지 않았다면... 죄송합니다

 

 

쉽지만은 않았던 경험..

제이펍의 '8기 베타리더스'로 활동해서 아직 출간되지 않은 도서를 미리 읽어볼 수 있는 기회도 얻었다. 베타 리딩은 도서 리뷰랑 다르게 이미 출간된 책을 읽고 서평을 작성하는 게 아니라, 책의 내용을 세심하게 살펴 내용에 오류가 없는지 오탈자가 없는지 확인하는 과정이다. 다른 책보다 어떤 점이 나은지 비교해가며 읽는 도서 리뷰와는 다르게 이 내용이 과연 옳은 내용인지 확인하는 과정이 훨씬 어려웠고, 아직 출간되지 않은 책을 읽고 있다는 데에서 오는 책임감도 느꼈다.

 

앞으로 살아가면서 내게 이런 기회가 주어질까 싶을 정도로 남다른 경험이었다. 내가 잘 알고 있는 내용을 다룬 책도 혹시나 틀리지 않았는지 다시 한 번 확인했을 정도로 읽고 또 읽었으며, 도중에 모르는 내용을 만나면 제대로 된 내용을 찾아가면서까지 내용을 검증했다. 그럼에도 불구하고 학생의 서투름이 남아 있는 것 같아, 다른 개발자분들에 비해 제대로 된 피드백을 주지 못한 것 같아 아쉽다. 이 부분에 대해서는 출판사와 관련 담당자, 저자분께 죄송하다고 말씀드리고 싶다.

 

 

개발자 컨퍼런스, 세미나, 커뮤니티

2018년에는 개인 연가를 사용해서 넥슨 개발자 컨퍼런스(NDC)도 참여하고 대전에서 열리는 언리얼 서밋도 참가했다. 그리고 지역의 우분투 커뮤니티에서 주최하는 Ubuntu Fest in Daejeon에도 참여해 다양한 이야기를 들을 수 있었다. 2018년에 참가한 컨퍼런스나 모임은 어떻게 개발자가 되기 위해 무엇이 필요한가에 초점을 두기보다 다른 사람들은 어떻게 하고 있으며, 각 분야마다 어떻게 돌아가고 있는지 알아보는, 식견을 넓히는 과정이었다.

 

안타깝게도 2019년에는 좀처럼 그런 기회를 잡기가 어려웠다. 일단은 복학을 위해 개인 연가를 다 소집해제 직전까지 다 미뤄놓은 상태라서 물리적으로 불가능한 경우가 많았다. 다행히도 2019년이 가기 전에 NHN에서 창원지역에 몸소 내려와 NHN FORWARD를 개최해주었다.

 

NHN FORWARD >>

서울에서만큼 큰 규모로 진행된 것은 아니었지만, 주니어 개발자와 개발자 지망생을 위한 스몰 스텝이라는 뜻깊은 세션이 있었다. 정말 많은 내용들에 대해서 들었고, 정말 귀에 쏙쏙 들어올 수 있게끔 이야기를 해주셔서, 세션이 끝났음에도 불구하고 연사분들의 말씀이 뇌리에서 떠나질 않았다. NHN FORWARD는 2019년에 내가 참석한 유일한 컨퍼런스였지만, 가장 유의미한 컨퍼런스였다. 기념품까지 유의미했다.

 

 

그래서 새해 목표는?

2019년은 목표 없이 살았던 한 해였다. 새해가 되자마자, 부질 없는 한 해가 되도록 노력하겠다고 우스갯소리로 이야기하고는, 정말 살고 싶은대로 살았다. 그래서 그런지 계획 없이 일만 벌려놓고 그것이 훗날 업보로 돌아와 나를 고통스럽게 만들기도 했고, 그 중에는 결국 다 가져갈 수 없어 포기하게 된 일도 있었다.

 

만다라트 계획표

2020년의 목표는 '조바심 내지 않고 모든 걸 다 해내자.'가 내 모토다. 뭘 해내야 하는지 간혹 잃어버리는 경우가 있어서 이번에는 만다라트 계획표도 작성했다. 아직 내용이 구체화되지 않은 내용도 있고, 정말 개인적인 내용도 있어서 내용을 전부 공개하지는 못하지만 이 안에 있는 것들을 모두 이루고서 2020년에는 또 다른 스토리를 가지고 회고를 쓸 수 있었으면 좋겠다.

 

 

728x90