명절 쇼핑 겸 회고

설을 앞두고 몸이 아파서 꼼짝없이 연휴내내 누워있어야만 한다. 밀린 코딩을 잔뜩 하면서 놀아보고 싶었는데, 일단 침대 밖을 나가기가 힘들다. 아쉬운 대로 미뤄뒀던 회고를 하고, 누워서 읽을 수 있는 전자책을 읽기로 했다.

그래서 잔뜩 전자책 명절 쇼핑을 함. 기술 자체를 다룬 서적보다(으흑 코딩 동시에 못하는 기술 서적읽기는 너무 감질나…) 소설처럼 읽을 수 있으며, ‘왜’를 깊게 다룬 책을 선정했다. 기술서적은 급한 경우에 찾아보지만, 이런 책들은 신경쓰지 않으면 안 찾아 읽게 된다. 이번 명절 셀렉션은

  • 해커와 화가
  • 신호와 소음
  • 폴리그랏 프로그래밍
  • 마스터 알고리즘

으로 완독은 못하더라도 일단 첫걸음을 떼어 놓으려고 한다.

그리고 내용이 높아서 지치면 요즘 고생하고 있는 기본기를 위해

  • 세상에서 가장 재미있는 미적분
  • 세상에서 가장 재미있는 통계학

을 읽으려구. 만화로 되어있다고 해서 두근두근.

그리고 시간이 남을때 가볍게,

  • 소프트웨어 장인
  • 소프트 스킬
  • 훌륭한 프로그래머 되는 법

을 비교해 가면서 읽을 예정. ‘Hello coding, 그림으로 배우는 알고리즘’ 완독하고 싶은데 이거 읽으면 코딩하고 싶어 간질간질 할 거 같아서… code complete 와 켄트벡 아저씨의 TDD 다시읽기는 몸이 나아지면 다음주 월,화쯤 읽어보려고 한다. 명절 또 있었으면 좋겠다. 잔뜩 책 읽고 싶어.


그리고 생각의 흐름대로 적은 회고 겸 단상. 일단 발행하고 정리해야지 뭐.

지금 다니고 있는 회사는

지금 다니고 있는 회사는 ‘빅데이터 분석(자연어 처리)’ 전문을 표방하는 곳이다. 때문에 외주프로젝트를 할 때에도 데이터분석과 연관된 프로젝트만 진행한다. 첫번째 맡았던 프로젝트에서는 데이터 수집 및 정제에 대해 고민을 하게 했고,
작년 맡았던 프로젝트에서는 오픈 API 개발과 데이터 시각화 UI를 맡으면서 사용자들이 분석된 데이터를 어떻게 활용하고 있는지 가깝게 관찰할 수 있었다. 그리고 제안작업을 함께 하면서, 내 파트 외에 분석, 자연어 구문처리, 정형/비정형데이터 처리에 대한 내용을 아, 이런게 있구나! 하고 알아갈 수 있었다. (세부적인 것은 모르지만, 적어도 키워드를 알 수 있으니, 나중에 더 학습이 필요할 때 찾아보기 쉽겠지! 전문가들이 주위에 있다는 건 치트키 같다.)

데이터 분석?

올해 초, 모두의 연구소 데이터랩에서 데이터 분석을 위한 기초통계학부터 배우면서 이 거대한 ‘데이터 분석’이라는 것은 어떻게 돌아가는 것인가에 대한 고민을 더 하게 되었다. 또 가볍게 머신러닝 기초 스터디를하고 있는데 결국 통계,확률,선형대수 같은 기본 구조를 무시하고 프레임워크 단위부터 하게 된다면, 제대로 된 분석을 어렵겠다는 생각이 들었다. 데이터 클렌징 - DW / 분산처리 - 데이터 분석 - 데이터 시각화 이 모든 걸 현업 수준으로 공부할 수는 없겠지만, 서버나 알고리즘 이해없이 좋은 웹개발자가 되기 힘들듯 교양쌓기 처럼 계속 공부하고 있는 중이다. (사실 여러 글로벌 회사에서 제공하는 API를 보면 어? 돈만 있다면 내부 인프라(전문 개발인력 찾거나, 기존 인원 교육) 구축하는 거보다 API로 분석하는게 훨씬 낫겠는데 라는 생각이 들긴 하지만, 깊게 들여다보지 않아서 잘 모르겠네. )

Civic Hacking

CivicHacking 은 내 개발의 지향점이라고 할 수 있는데, civichacking의 시작점은 ‘데이터 공개’라고 생각한다. 기관,국가가 독점하고 있었던 데이터를 시민에게 공개하면서, 다양한 움직임이 발생하게 되었다고 생각한다. 민간데이터도 있지만 역시 데이터 접근성, 퀄리티있는 원본데이터에 접근할 수 있냐는 점에서 아직까지 오픈 데이터를 따라가기 힘들지 않을까? 여기에 관심을 가지게 되면서 데이터를 어떻게 소화(가공,시각화,서비스)하느냐로 관심이 이어졌다. 요즘 인천 중구의 젠트리피케이션(홍대,북촌,상수동의 젠트리피케이션과 과연 비슷한 지점이있지, 젠트리피케이션이라고 분류하는게 맞는지는 의문이지만)의 자료를 조금씩 모으고 있다. 2015,2016년에 이 문제에 대해 이야기가 나오면서, 포럼 개최, 지역신문 칼럼 등으로 의견이 나왔지만 문화예술적(?)인 의견 외에 분석을 통한 후속연구가 있는지는 모르겠다. 서울시의 경우, 서울시발전연구원, 서울시 등 여러 공공기관의 분석이 이루어졌고 지금도 연구 중 인것으로 알고 있다. 하지만 지금까지 찾은 바로는 최근 2,3년간 인천의 공공기관 관련 연구 자료는 찾지 못했다. 무엇보다 인천에 젠트리피케이션 현상이 있는지부터 모르겠고, 예전에 있었던 구도심쪽은 도심재생에 좀 더 초점이 맞춰져 있는지라. 서울보다 접할 수 있는 자료가 부족해서 답답하다. 가장 주제에 맞은 논문은 시계열 분석으로 데이터분석해두었더라. 데이터가 풍부하면 데이터 시각화가 가능한데, 이런 경우처럼 원하는 데이터가 딱 떨어지게 나와있지 않은 경우, 데이터를 가공해야할 일도 생기는데 이걸 데이터 사이언티스트가 아닌 내가 가능할지는 모르겠다.

좋아좋아 덕질 좋아

최근에 SLiPP의 테스트기반개발 스터디를 시작했다. 행복한 칼퇴, 버그가 적어 안심되는 개발, 모니터링을 위해, 평범한 개발자로서 효율적인 개발 프로세스란 무엇인가에 대해 고민하고 더 나은 코드품질에 대해 고민하는 중에 눈에 띈 스터디였다. 겨우 3번째 스터디인데 자극을 많이 받고 배우게 된다. 다른 사람의 질문, 스터디 리딩하시는 도형형님의 인사이트에 매번 숨죽여 감탄(스터디 시간 당일에는 이해하지 못한 것도 있는데, 스터디 후에 여러 번 보면서 공부하면 그 깊은 내용에 감탄. 아니 그 단순한 구조, 문장에서 ‘아!’라는 감탄을 자아내게 하다니 엄청나다. 구리고 역시 크게 감탄하기에는 아직 쑥쓰러워서… 낯가림중.)

그리고 김창준님의 애자일 블로그, 팟캐스트 너무 좋아. 번역한 애자일 프랙티스를 읽으면서 덕질을 시작. 툴이 아니라 그 철학이 몸서리치게 좋다. 진정한 협업을 위해서 팀 차원에서 해야하는 것들이 많아서 슬픈 점도 있다. 스스로를 위해 할 수 있는 것을 하면서 때로는 직관적으로, 때로는 한 번 더 고민하게 해서 더 나은 길을 찾게 도와준다. 개인적으로는 옳게 가고 있는 것일까 고민이 깊어져서 지쳐있을때, 피드백과 회고를 통해 안정감을 찾게 되었다. 또 김창준님의 블로그에 소개되어있는 삽질일지, 하마터면 실수 일지 작성을 통해 삽질을 줄일 수 있었다. 특히 최근 프로젝트에서 도움을 많이 받았던 것은 ‘어떻게 공부할 것인가’ 강의에 소개된 구현 전에 단계별 밑그림을 그리기와 ‘지금 하는 일들을 절반의 시간에 해야한다면’ 에 소개된 방법을 사용해서 행복한 구현을 할 수 있었다. 가장 큰 성과는 전에는 멋있는 코드, 책을 읽으며 완성된 전문가의 모습만을 봤었는데 , 그렇게 되려면 전문가가 되기까지의 ‘과정’을 관찰해야한다는 걸 깨달았다는 거다. 멋있는 코드와 내 코드와의 백만년 넘는 거리, 따라쳐도 과연 내가 익히는 걸까? 개념과 실제 코드구현과의 거리감에서 좌절을 느낄때 중요한 포인트를 짚어 주었다. ‘과정’ 정말 목적에 맞는가, 더 적은 비용으로는 불가능한가, ‘왜’ 필요한가, 어떻게 다다를 수 있는가. 에 대한 고민을 시작하게 되었다는 것 역시 큰 성과. 역시 덕질은 몸과 마음에 유용합니다. 여러분!

회사 프로젝트로 돌아가보자면,

처음 맡았던 일은

  • 데이터 파싱 패턴을 사용해 원문에서 문단을 파싱하는 것으로, 스트링파싱과 다름없었다. 하지만 고객의 요구사항이 늘어나면서, 세부 항목 추출을 해야했고 정규표현식과 비정형 데이터 처리로 해보려고 했으나, 항목 추출률은 비참… 비정형 데이터를 기계적 패턴 추출로 뽑아낸다는 것 자체가 무리수였기때문에… 이 과정에서 xml 학습(하지만 주어진 데이터는 전혀 well-formed하지 않았다…), 정규표현식(오 너무 좋아 신세계야 왜 몰랐던거죠??)을 알게 되었다.

  • DB(쿼리) 단순확인용 조회 쿼리가 5시간이 되어도 결과값이 안나오는 상황을 겪으면서, join,인덱스 사용까지 관심을 가지게 되었고 이후 웹을 위한 조회쿼리 역시 속도가 너무 느려서(웹페이지 뜨는데 1분 이상) 고통을 받다가, 부장님이 튜닝해준 쿼리로 겨우 정상속도를 회복했다. 이 일을 겪으면서 쿼리사용 그리고 데이터모델링에 대한 기본기를 더 쌓아야겠다는 생각에 SQLD공부를 시작했고, 이를 토대로 중구난방으로 그때그때 실무지식을 익히는 것보다 체계적으로 익힐 수 있어서 좋았다.

그리고

도메인분야에 대한 관심

일을 할수록 데이터 자체에 대한 이해가 필요하다는 생각이 든다. 내 일만 쪼개놓고 생각해보면, 웹이나 데이터 파싱을 기술적으로 이해하면 되는 것 같지만, 회사 내에서 ‘지식구축’과 데이터분석을 하는 사람들과 가깝게 일을 하면 할수록, 데이터 분석에 대한 이해가 필요하다는 생각이 든다. 데이터를 이해하려면 도메인에 대한 이해를 함께 해야하듯이, 데이터 분석 전체 프로세스와 함께 그것이 사회에 어떤 영향력을 끼치고 있는가를 이해해야한다는 의무감(?)이 든다. 왜 이런 생각이 왜 들었는지는 잘 모르겠지만.

개발 프로세스, 행복한 개발자 생활이란?

외부개발자 인원변경때문에 만 육개월차 사원이 한 달동안 세 번의 인수인계를 (인수인계 받고, 하고, 받고, 하고) 거치면서 프로젝트 관리에 대해 고민하게 되고, 산출물이 아닌 개발자간 공유할 수 있는 ‘문서화’ 작업에 관심을 기울이게 되었다.

마감시간때문에 야근을 아주 길게 심하게 하게 되면서 (다 퇴근했는데, 나만 일해ㅠ) 이렇게 살 수는 없으니, 에버노트로 업무일지를 더 꼼꼼하게 작성하고, 그걸 토대로 한 일정산출을 시도했고, 전부터 관심을 가지고 시도는 했으나 말 그대로 시도에 그쳤었던 뽀모도로 기법과 트렐로를 활용한 칸반(개인적으로 하는 거니 칸반보다 개인 일정게시판 정도)이 업무습관에 스며들게 되었다. 회사에 매주 보고하는 문서인 주간일정보고서를 쓰면서 각 파트에 어느정도 시간을 쓰고 있는지, 어디에서 랙이 걸렸는지 파악할 수 있어서 도움이 된다. 또 다른 사람들이 파악할 수 있게 작성해야하므로, 내 일이 외부에서 봤을때 어떤지, 어떻게 기술해야 이해를 도울 수 있는지 신경써서 적게 된다.(역시 사람은 실전에서 닥쳐야 잘…)

앞으로는 최근에 시도하고 있는 실패일지, 삽질일지, 일일회고를 정착하는게 목표이다.

모던 개발환경

그리고 느꼈던 단점을 커버할 수 있도록 모던 개발환경(git을 사용한 이슈관리, 형상관리, docker를 통한 테스트환경, CI/CD)을 도입하려고 시도하고 있다. 혼자 담담하고 있는 모듈이 있어서 git, 이슈관리를 하고 있으나, 시야가 좁아서 힘들다. 그리고 책, article에는 나와 있지 않은 미묘한 context들(회사 내부 사정이므로 외부에 문의하기도 애매한)을 혼자 고민하다보니 한계가 왔다. 이건 어떤 돌파구가 있을까…

커뮤니케이션

가장 최근 프로젝트에서는 외부와 조율하고 소통해야할 일이 비교적 많아졌다. 여기서 내가 하는 일을 외부에 설명할 때, 다른 사람이 이해할 수 있을 정도로 명확하게 전달할 수 있는가를 배웠고, 조율을 위해서 상대의 입장을 한 번 더 생각하고 조율점을 찾기 위해서 서로의 상황과 접점에 대해 고민할 수 있었다. 그리고 선임이 외부와 커뮤니케이션 하는 방법을 가까이에서 관찰하면서 배울 수 있었다. 클라이언트와 함께하는 회의에 몇 번 같이 참여할 기회가 생겼었다. 예상되는 결과,과정을 논의하면서 효율적으로 세부 안을 조정하면서 윈윈할수 있는 최선의 결과를 이끌어내려는 모습이 놀라웠다. 아 이게 프로구나 하는 생각이 절로 들었다. 그리고 사람마다 커뮤니케이션 스타일이 다르니, 나에게 맞는 스타일을 찾아야겠다는 생각도 다시 한번 들었다.

또 여러 프로젝트를 동시에 맡게 되어서, 일정 조정때문에 다른 팀과 의사소통(서로의 입장을 관철시킬)할 상황이 생겼는데 처음엔 어마어마하게 스트레스를 받았지만 어떤 부분을 포인트로 잡아야 서로 조정이 될 것인가를 실전에서ㅠ 해볼 수 있었다… 외부 의사소통과 내부 의사소통은 약간 성격차이가 있는 것 같다. 그 미묘한 차이… 뭘까… 말로 정리되지 않는다…


15개월간의 회사생활을 돌아보니,

15개월간의 회사생활을 돌아보니, 여러모로 액티브하게 고민하고 배울 수 있는 환경이었던 것 같다. 무엇보다 프로젝트 중에도 칼퇴(늦으면 7,8시)가 가능해서 외부 스터디로 자극을 받으며 공부할 수 있는 기회가 주어졌다는게 크다. 또 프로젝트 특성상 외주 프로젝트임에도 몇 년동안 계속 연속적으로 개발,유지보수하면서 서비스로 성장과정을 지켜볼 수 있어서, 릴리즈하고 끝내는게 아니라 다행이라는 생각이 든다. (요구사항부터 내부 기획을 거쳐 디벨롭하는 서비스회사와 차이는 있는 거 같다) 인격적으로 존중받는다는 느낌을 받으며 일할 수 있어서 행운이었다. (개발환경과는 별도로)

다만 처음에는 개발자임에도 기획 단위를 고민할 수 있는 제안작업이 있어서 신났는데, 뭐랄까 점점 매너리즘(복붙)에 빠지는 거 같기도 하고. 무엇보다 요청제안서 분석을 하는 과정이 상당히 재미가 없다. 모호한 요구사항과 기본 정보 부족으로 그냥 페이퍼만 채운 거 같은 요청제안서들도 눈에 띄고. 제안 작업할때는 코딩을 하지 않는다는 불만족감(이 시간에 더 나은 코드 품질을 고민하고 싶은데. 더 나은 프로세스를 하고 싶은데)이 크다. 산출물도 이번에 단위테스트, 시스템 통합테스트, 시큐어 코딩, 웹호환성점검을 하면서, 코드 작성 외에 다른 파트에 대해 공부를 하게 되어서 즐거웠지다. 하지만 나중에 문서오피스 작업(엑셀,한글,파워포인트)을 개발보다 더 잘하게 되는게 아닐까 싶을 정도로 단순 문서작성(양식정리)에 드는 품이 너무 많이 들었다.
장단점이 있지, 하고 넘어가기에는 문제가 심각해서(개발시간 대비 기타 작업 시간 통계로 봤을때) 다른 돌파구가 필요하다.

외부 환경으로 보자면,

외부 환경으로 보자면, 모두의 연구소, SLiPP 스터디의 놀랍도록 좋은 leading이 있어서 즐겁게 할 수 있었다. 그리고 같이 스터디하고 있는 열정있는 동료 개발자들도 언제나 큰 힘이 된다. 스터디하면서 자유로운 질의응답을 하고, 궁금증을 함께 풀어나가는 노력을 하는게 얼마나 즐거운지! 매번 짜릿하다! 그리고 좋은 지식과 경험을 article, 책, 강의로 공유하는 선배-동료개발자들! 이것때문에 불필요한 삽질이 많이 줄었고, 더 나은 길을 비추는 등대같은 존재다.

개인적으로는

개인적으로는 무리한 스터디 일정으로 면역력이 떨어져 몸이 매우 아프기도 했고, 결국 스터디 중간에 중단까지 오기도 했다. 긴 출퇴근 시간때문에 피곤한 몸을 추스리려고 최적의 출퇴근 시간 찾기, 영양제 챙겨먹기, 명상, 간편식 아침 챙겨먹기, 늦은 스터디 시간이려면 카풀을 해서라도(유료 카풀서비스 이용함) 수면시간 보장, 청결한 환경유지(손세정제, 소독, 가습기, 청소), 아프거나 피곤함을 느끼면 모든 걸 중단하고 쉬기를 하면서 몸과 마음을 챙기게 되었다. (역시 여기엔 칼퇴와 연차 자유롭게 사용, 일과 중 자율적인 휴식시간 사용, 터치받지 않는 조용한 휴게공간 가능(길진 않지만 10~20분)한 환경이 있었기에 가능…) 그리고 식단조절과 가벼운 운동이라도 시작해보고 싶었으나, 유료 서비스(눔)를 구입하고도 완주하지 못했다. 하지만 이 프로그램을 하면서 건강한 간식을 챙겨먹는 습관과 적절한 식사량을 알게 되었다. 그리고 빼놓을 수 없는 아이패드 사용! 컨퍼런스 당첨되어서 받은 아이패드는 내 생활패턴을 바꿨다. 기동성이 좋아 가지고 다니면서, 코딩, 긴 글 기록, 책 읽기 가 너무 좋아졌다. 요즘은 기술책을 읽을때 여러 책을 동시에 읽으면서 같은 파트를 비교해가면서 읽는데 전자책을 사용하면 이게 가능하고, 화면이 커서 가독성도 높다. 괜찮은 블루투스 일체형 키보드를 구입하면서 기록도 가볍게(지금 이 글도 침대에서 아이패드로 작성 중이다). 코딩은 약간 애매한데 esc가 없어서 터미널 환경이 힘들고, 주피터 노트북 코딩은 가능한데 ide는 좀 무겁다. Aws c9 을 관심깊게 보고 있는데 자바 개발은 사실 급하지 않으면 그냥 노트북 가지고 다니면서 한다.

다음 목표는 건강한 음식 챙겨먹기 습관, 가벼운 운동습관 인데 살아온 구력이 있으니 쉽지만은 않을꺼다. 강압적으로 참기보다 즐겁게 자연스럽게 스며들어 갈 수 있는 방법을 연구 중이다. (물론 습관을 바꾸는데는 고통이 함께 하겠지만 적어도 그럴 꺼 같은 방법은 찾아놔야겠지)

Written on February 15, 2018