2017년도 벌써 절반이 훌쩍 지났다. 올해 상반기는 나에게 중요한 변곡점이 된 시간이었다. MATHOLIC 에 입사했고, 내가 원하던 기술들을 실제로 사용했으며, 이 시대의 화두인 머신러닝에 대해서도 맛을 보았다. 또한 개발자로서 가까운 지인의 멘토가 되었는데 나의 일에 대해서 깊게 생각해볼 수 있는 계기가 되었다. 그 밖에도 많은 일들에 대해서 이번에 회고를 해보고자 한다.
직장
매쓰홀릭 입사
너무 운이 좋게도 열정 넘치고 실력있는 동료들과 함께 일할수 있게 되었다. 불편한 이야기이지만, 이전 직장과 비교하지 않을 수 없다.
1. 개발 몰입도
이전 직장과 비교하여 개발 외적인 일들(회의, 메일 작성하기, 기타 불필요 프로세스 등)이 없다. 개발 이외에 하는 일은 보드게임 정도. 그래서 개발 몰입도가 이전에 비해서 훨씬 높다.
2. 개발 환경
이전 직장에 비해서 지금은 개발환경이 최신이고 유연하다. 편리하고 유용한 최신기술을 쉽게 사용할 수 있다. 사실 이전 직장에서 일할때는 오래된 환경에서 일하는 것이 컴플랙스였다. 따로 공부는 하였지만 단순히 신기술 관련한 책을 읽고 코드 따라치는 것은 금방 까먹고 크게 도움이 되지 않았었다.
3. 개발 난이도
개인적으로 느끼기에 난이도가 굉장히 높아졌다. 그에 따라 나의 성장폭도 커졌다. 예전에는 큰 조직에서 부분적인 일을 했었다. 부분적인 일이라 함은 기술은 범위가 좁다는 뜻이다. 그러나 지금은 서버 인프라에서 프론트앤드까지 기술의 범위도 다양하게 일하고 있다. 그에 따라서 공부해야할 것도 많고 신경써야할 부분도 많다. 단적인 예를 들어서, 예전에는 쓰레드 프로그래밍을 할 일이 거의 없었는데, 지금은 생각보다 빈번하게 일어난다.
또한 딥러닝 등과 같은 웹 기술 이외의 기술에 대해서도 알아야해서 공부할게 많다.
4. 야근 및 스케줄
야근이 거의 없어졌다. 그러나 업무가 자유로운 만큼 스스로 스케줄을 관리하는것이 중요해졌다. 그래서 트렐로를 이용해서 개인적으로 스케줄 및 태스크 관리를 했는데 바빠지면서 대충 하게 되었다. 정신차리고 다시 시작해야겠다.
5. 동료
예전에는 기술 트렌드에 관심이 많은 동료들이 많지 않았지만, 지금은 다들 관심이 많고 관련해서 이야기도 많이 나눈다. 그리고 현재 동료에게서 정말 많은 노하우와 지식을 배웠다.
또한 따라하고 싶은 선배들이 생겼다.
결론
직장인은 삶의 대부분을 직장에서 보낸다. 직장은 옮기는 것은 삶의 대부분을 변화시킨다. 운 좋게도 나의 변화는 매우 긍정적이다.
공부
toby의 Reactive programming 동영상 시청 Study
상반기에 토비님이 유튜브로 강의하시는 동영상(5회 ~ 11회)을 같이 보는 스터디를 진행했다. 솔직히 시간이 지나 되돌아보니 내가 10%는 이해했나 싶다. 그래도 한번 회고를 해보고자 한다.
1. 비동기와 동시성 맛보기
내가 작성하던 자바 백앤드 코드는 리퀘스트가 들어오면 동기적으로 요청을 처리하고 응답을 보내는 식이었다. 그러나 토비님의 방송에서는 리엑티브 도구(Reactor
, RxJava
)들과 그 이전의 방법(Spring의 @Async
등)을 통해서 비동기로 응답을 처리할 수 있는지 볼 수 있었다.
2. 힙한 코드들?
스터디를 시작할 즘에는 java7, 스프링 2.5 환경에서 일하던 개발자였다. 그래서 토비님이 예제로 작성하시는 모든 코드가 나에게는 힙하게 느껴졌다. 예를 들어, 스트림으로 fluent하게 데이터를 처리하는 것, CompletableFuture
로 비동기 작업을 하는 것, Lombok @Slf4j
로 로깅하는 것 등을 보면서 따라하고 싶은 마음이 많이 생겼다. 실제로 그 이후에 회사에서도 자주 써먹었다.
3. 개발자들과 이야기하기
동영상 자체도 나에게 많은 지식과 경험을 전달해 주었지만, 스터디원들과 이야기하면서도 많은 것을 배울 수 있었다. 각자의 경험으로 새로운 지식을 이해하기 마련인데, 경험이 없는 나같은 경우는 겸험이 있으신 분의 이야기를 통해서 도움을 받을 수 있었다.
4. 장소 지원
신림 프로그래머 커뮤니티가 KOSSLAB에 등록되어 있어서 장소 지원을 받을 수 있었다. 그래서 토즈에서 시원한 음료수 마시면서 공부할 수 있었다.
5. 정리의 아쉬움
스터디를 통해서 얻은 지식들을 [github에 markdown으로 정리]((https://github.com/voyagerwoo/today-I-learned/tree/master/reactive-programming)했다. 동영상에서 나온 이야기들을 요약하고 스터디 중에 나왔던 자료 링크를 적어두는 방식인데 다시 보기에는 많이 불편했다. 한편은로는 제대로 이해하지 못했다는 반증이기도 하고. 만약 다음에 스터디를 리드한다면 스터디한 내용에 대해서 블로깅을 과제로 하는 것이 어떨까?
6. 아직 끝나지 않은 동영상
아직 동영상이 끝나지 않았고, 스프링 캠프에서 발표하신 동영상도 남아있다. 빨리 완주 해야지!
Docker Study
신림 프로그래머 커뮤니티에서 docker
를 주제로 스터디했다. 원래 내가 지원하진 않았는데 팀 동료에게 기회를 넘겨 받아서 하게 되었다. 너무 잘 써먹고 있어서 배우길 정말 잘했다는 생각이 든다.
- 책 정보 : http://book.naver.com/bookdb/book_detail.nhn?bid=11884948
- 정리 링크 : https://github.com/voyagerwoo/begin-docker
1. 열정적인 스터디원들
스터디 원들 모두 꾸준히 열심히 공부하시는 분들이라 자극이 많이 되었다. 유명한 개발자보다 주위에 열심히하는 개발자들이 훨씬 좋은 자극을 준다.
2. 개발 환경 격리
내 노트북에 깔고 싶지 않은 프로그램을 도커를 이용해서 설치 하고 실행할 수 있다. 예를 들어, tesseract
라는 ocr 프로그램이 있는데 설치하는 과정도 복잡하고 깔끔하게 지우기도 어렵다. 그래서 도커 파일로 격리된 tesseract
실행 환경을 만들어 테스트해 볼 수 있었다. 또한 이렇게 만들어진 이미지를 이용해서 ocr REST 서버도 만들 수 있었다.
3. 도커파일을 이용한 배포
도커 파일을 이용해서 배포하는 법을 알게 되었다.
4. 딱 책 2장까지만...
아쉬운 것은 딱 책의 2장 정도의 기술만 지금 사용하고 있는 것이다. docker swam
등의 기술은 아직 책만 살짝 보고 사용해보지 못했다. 좀더 공부해서 이를 활용한 배포 표준을 만들어 보고 싶다.
딥러닝 맛보기
naive bayes 를 이용한 텍스트 분류
1.회사에서 미션이 주어졌다. naive bayes 를 이용하여 텍스트를 분류하는 것인데 열심히 검색해서 datumbox 라는 라이브러리를 사용해서 개발했다. 우선 Rest API 까지 개발하는 것은 어렵지 않았는데, 서버가 실행되는데 시간이 오래걸리고, 메모리를 엄청 잡아먹었다. 그건 나의 엄청난 실수 때문인데, 바로 모델을 만드는 것과 사용하는 것을 분리하지 않았기 때문이다. 서버가 실행되면서 그때 학습을 하고 모델을 만들어 냈다. 그래서 당연히 느리고 메모리도 많이 먹었다. 사실 원인을 알고 있어서 배치로 학습하면서 모델 객체를 직렬화 해서 쓰고 서버를 실행할 때 읽으려고 했다. 그러나 모델 객체가 의존하고 있는 많은 것들이 직렬화를 지원하지 않았다. 그런데 막 이것 저것 해보다 보니 그냥 그 라이브러리에 파일로 쓰고 읽는 기능이 있었다. 이런...
어쨌든 naive bayes를 이용해서 분류기를 만들었다. 그리고 뭔가 되긴 되었다. 정확도가 70-80% 정도. 재미있는 경험이었다.
2. 딥러닝 기초 책 보기
두 권의 딥러닝 기초 책을 읽었다. 책을 통해서 기본적인 개념을 이해할 수 있었다. 그러나 수식 관련 부분들은 아직도 이해가 부족하다.
3. 딥러닝 관련 컨퍼런스 참여하기
처음에 충남대에서 딥러닝 관련 세미나를 참여했는데, 그때는 용어들도 잘 몰라서 많이 당황스러웠다. 특히 책에서는 번역된 단어를 사용하는데 참여자들은 그냥 영어 단어로 이야기해서 막 찾아보면서 들었다. 모르는 단어들을 찾아보면서 부분적으로 개념을 이해할 수 있었다. 또한 같이 갔던 팀원 분들의 설명도 도움이 많이 되었다. 정리하면 딥러닝 단어에 대해서 공부할 수 있었다.
그 다음으로 제주도에서 딥러닝 세미나에 참여했다. 이번에는 행사 자체가 영어로 진행되었다. 유명한 분들을 실제로 만날 수 있었다. 영어는 온전히 이해가 어려움으로 그림이나 차트를 통해서 최대한 이해하려고 노력했다. 여기서는 딥러닝 지식 보다도 공부에 대한 자극이 많이 되었다. 세계 각국에서 온 젊은 친구들이 딥러닝으로 프로젝트를 진행하는 것을 보면서 나도 할 수 있겠다는 생각이 많이 들었다. 또한 영어로 세미나가 진행되면서 역시 영어 공부를 해야겠구나 라는 깊은 생각을 많이 했다.
정리
개발자로서 정말 좋은 환경에서 일하고 있다는 생각을 한다. 훌륭한 동료들, 자유로운 업무환경 등. 시간 관리와 배우고 경험한 것을 잘 정리만 할 수 있다면 꾸준히 성장하는 발판이 될 수 있을 것 같다.