2020년을 맞이하며

2020. 1. 2. 02:13Random

들어가며

출처 연합뉴스

2020년 한라산의 일출은 매우 아름다웠다는 소식을 들었다. 하.. 작년은 코빼기도 안 비치더니..

2019년이 의미 깊은 해였던 만큼, 올해도 그만한 가치가 있는 한 해가 되었으면 한다. 19년 회고는 지난번에 올렸으니, 20년 맞이 다짐을 작성하고자 한다.

더 좋은 개발자가 되고 싶다.

역량은 탄탄한 기초지식에서 나온다.

DB를 배우자.

오라클에 넘어갔으니 이름을 바꿔야하지 않나 싶다. 이름은 "느그SQL" 정도가 어떨까.

직장 생활에서 가장 처음 느꼈던 점은 "DB는 내 상상보다도 더 까탈스럽다"는 점이었다. 그냥 학부생 시절에 배운 정규화, 락, 인덱스, 트랜잭션에 대한 기초적인 지식들만 있으면 될 줄 알았는데, 막상 실무에서 발생하는 이슈들은 이런 레벨보다 아득히 아래에 있는 부분에서 발생하는 것들이었다. 문제의 발생 원인을 쫓다보면 아예 MySQL의 특정 버전에서, 특정 조건에서만 발생하는, 굉장히 마이너한 이슈인 경우들이 있었다. DBA 없는 회사였으면 이런건 어떻게 찾아냈을까 싶었을 정도. '프로그램이 안 돌아간다면 보통은 개발자 잘못'이라는 생각이 박살이 나는 순간이었다. DB는 생각보다 결함이 조금 있는 놈이구나.. 라는 것을 알았고, 이와 더불어 DB를 기존 지식만으로 접근해서는 안 되겠다는 생각이 들었다. DB는 어떠한 메커니즘으로 정보를 저장하고 있을까. 이를 토대로 어떻게 사용해야만 할까. 앞으로 이를 공부해야할 것 같다.

Kafka를 배우자.

Apache Kafka는 이제 대규모 서비스라면 거의 다 사용하는 메시지 큐이다. MQTT를 써본 사람한테는 똑같은 pub/sub 방식의 메시지 큐라서 친숙하게 느껴질 것이고, 리액트 개발자라면 토픽을 정하고 필요한 곳에서 가져다 쓴다는 점에서 redux와 유사함을 느낄 수 있겠다. 뭐, 어디든 규모가 커져가는 상황 속에서 정보를 '잘', '정확하게', '빠르게' 전달하고자 한다면 메시지를 전담하는 컴포넌트를 고안하게 되는 것 같다.

개인적으로 Kafka를 공부하면서 느꼈던 점은, 대기업에서만 사용하는 녀석이라 그런지 다양한 사용방법에 대한 자료는 잘 얻을 수 없었다는 점이다. 튜토리얼이나, 공식 documentation 정도는 있는데, 이를 가지고 여러가지 상황 속에서 어떤 식으로 활용하면 되는지는 스스로 고민해야 했다. 어딘가에 숨겨진 카프카 마피아가 있어서 서로 비법 공유하는 것을 엄격히 감시하고 있는 것만 같았다. 좋게 생각하면 앞으로 꾸준히 고민해서 잘 활용해낼 수 있다면, 그렇게 습득한 노하우가 나의 무기가 될 수도 있겠다는 생각이 든다. 잘 공부해야겠다.

소통하고 지내요~

아니, 이 소통이 아니다.

스스로 '말을 못 한다'고 생각해본 적이 별로 없었는데, 적어도 업무 환경에서 내 소통능력은 영 별로라는 것을 실감했다. 어쩌면 내가 애플에 있었으면 내 개발자 인생은 엘리베이터에서 마주친 스티브 잡스의 "요즘 뭐하고 있냐"는 질문 하나에 쫑났을 지도 모르겠다.

모든 대화는 맞는 맥락이 있다. TOEIC같은 시험에서도 듣기에 자주 나오잖나. "이 세제 드럼세탁기 용인가요?"가 들렸는데 답안에 "다이소"가 아닌 "레스토랑"을 체크해버리면 바보가 되는 것이다. 나는 그 반대로, 레스토랑에서 "이 세제는 통돌이에만 쓸 수 있는 세제입니다"라고 말하는 쪽이었던 것 같다. 일상적인 자리에서 대화는 얼마든지 길어져도 되고, 얼마든지 다른 곳으로 주제가 통통 튀어도 된다. 그러나 업무상 대화를 그렇게 접근해서는 안 된다.

??? : (프로젝트 어떻게 되어가요? 라는 질문에 답하며) 그러니까 이 패키지의 이 클래스의 메소드가 원래는 a 라이브러리를 쓰고 있었는데, a 라이브러리의 스테이블 버전이 4년전 빌드가 마지막이더라구요. 실제로 a 라이브러리를 쓰면서 아쉬운 점이 많았는데 이 참에 b 라이브러리로... 저기요, 진행도 보고 끝나려면 아직 1시간 더 남았어요.

개발자끼리의 대화, 팀 내부에서의 대화, 옆 팀과의 대화, 비개발자와의 대화 등 직장에선 여러가지 맥락을 마주하게 된다. 그럴 때마다 대화 속에서 사용되어야 할 어휘와, 설명 방식이 달라져야만 한다. 그리고 제한된 시간 내에, 상대방이 꼭 원하는 정보만을 제공할 수 있어야만 한다. 이를 능숙하게 하기 위해서는 머리 속으로 이를 정제하는 훈련을 해야하는 것이고. 알짜배기가 되려 노력해야겠다.

기억보단 기록을

우아한형제들에 재직 중이며, 질 높은 블로그 글로 유명한 동욱님의 블로그 제목이 "기억보단 기록을"이다. 그만큼 기록의 중요성을 강조하신 듯하다.

헝가리 출신의 철학자 마이클 폴라니가 말하길, 지식은 "암묵적 지식"과 "명시적 지식"으로 나뉠 수 있다고 했다. 암묵적 지식은 머릿 속에는 들어있으나, 남이 확인할 수 있는 형태로 기록되지 않은 것을 뜻하고, 명시적 지식은 기록으로 남아 여럿이 공유할 수 있는 지식을 의미한다. 거두절미하고 본론만 말하자면, 원활한 개발을 위해서는, 암묵적 지식 → 명시적 지식 전환이 활발하게 일어나야만 한다. 그 이유는

  • 나조차도 내가 뭘 아는지 모르는 경우가 많다. 이를 메타인지라고 부르는 데, 이 부분이 빈약하면 소통 과정, 개발 과정에 실수를 유발할 가능성이 매우 높다. 이를 미연에 방지하는 것은 글로 써서 정리하는 것이다.
  • 프로젝트는 계속 되지만, 그것을 이끄는 사람들은 시시각각으로 변한다. 극단적으로는 어제 일하던 동료가 내일 옆 건물로 출근할 수도 있는 것이다. 팀의 구성이 바뀌다보면 지식의 단절이 발생할 수 있다. 단절된 지식을 다시 불러오려는 시도는 쓸데없이 시간을 잡아먹는다. 이 또한 적절한 문서화가 선행되어 있지 않으면 발생할 수 있는 문제다.

특히 '내가 뭘 아는지 모르는 경우'를 종종 마주했었는데, 이러한 상황 때문에 커뮤니케이션 미스를 자주 일으켰던 것 같다. 문서화를 통해서 소통 능력을 뒷받침할 수 있겠다는 생각이 든다. 이를 위해 UML 다이어그램 같은, 중간 산출물을 효과적으로 작성하는 방법을 배우고 싶은 욕구가 생겼다.

내 최종 목표는, "내가 만든 프로그램을, 코드 없이 한 번의 설명만으로 상대방에게 이해시킬 수 있는 경지"에 다다르는 것이다.

재미를 위한 코딩을 하자

취준생 시절에는 "포트폴리오 작성"이라는 명목 하에 사이드 프로젝트를 여러번 벌였었다. 혼자 하는 것도 있었고, 팀끼리 하는 것도 있었다. 그러던게 입사 이후에는 "회사에서 코딩했으면 됐지"라는 변명과 함께 자연스레 사이드 프로젝트를 밀어내게 되었다. 

상반기에 잠깐 반짝했던 커밋.. 잔디밭이 갈라진 대지가 되었다.

초심으로 돌아가야 할 것 같다. 일 외적으로도 내 재미를 위한 코딩을 해야할 것 같다는 생각이 들었고, 시도해보고는 싶으나 업무환경에서는 해볼 수 없었던 여러가지를 사이드 프로젝트를 통해 실험해 봐야 할 것 같다는 생각도 들었다. 그리고 이러한 활동들이 또 언젠가 나의 무기가 되기를 바랄 뿐이다.

더 좋은 인간이 되고 싶다.

책! 책! 책! 책을 읽읍시다. 20세기 명저 100선 읽어보기

나는 한 때 계왕들만 드나들 수 있다는, 바깥과의 시간의 흐름이 다른 특수한 곳, "정신과 시간의 방"을 다녀온 적이 있다. 사람들은 그 곳을 줄여서 "군대"라고 불렀는데, 이곳에서 나는 정신력 수련을 하면서 독서를 했었다. 시간은 충분했으나 내가 나태했던 탓에 결국 목표하던 권수를 못 채우고 다시 현실세계로 돌아와 버렸는데, 올해 다시 도전해보고자 한다.

흔히 "뉴욕 타임지가 선정한 20세기 명저 100선"으로 잘못 알려진 책 목록이 있다. 원본은 99년도에 한겨레에서 선정한 것으로, 양질의 책들을 골랐던 것만큼은 구라가 아니었기에 여러 학교에서 인용되고는 했다. 어째서인지 나는 '현대 시민으로서 이런 책들조차 읽어보지 않았다면 교양이 없는 것 아닐까?'하는 강박에 사로잡혀 어떻게든 읽어야만 한다는 사명감을 느끼고 있었다. (물론 안 읽어봤다고 현대 시민 못하는 건 아니다..)

해가 갈수록 1년에 1권의 책을 읽는 것마저도 버거워하는 지경에 왔으므로, 갑자기 1년에 100권을 몰아본다는 것이 가당키나 할 지는 모르겠다. 그러나 되는 데까지는 해봐야지.

TMI지만 자막 제작자 분 학교 선배님이셨더라.. 뭐하고 계실지 궁금하다.

Yes, I can speak

Q. 1가지 언어만 사용하는 사람을 부르는 말은? A. 미국인

자멘호프가 세계 공용어랍시고 에스페란토를 열심히 만들어줬지만 안타깝게도 언어계의 기축화폐는 아직도 영어다. 이런 상황에 불만을 느끼지는 않는다. 오히려 기축화폐 역할을 하는 언어마저 없는 상황이 더 혼란스럽겠지.. 나는 한국을 참 좋아하지만, 동시에 세계를 누비고 싶은 욕망도 있다. 세계와 이어지는 수단은 역시 영어가 될 수밖에 없다. 일본어학을 전공하게 되면서 영어를 자연스레 멀리하게 되었는데, 이제 다시 당겨올 때라고 생각한다.

꾸준히 합시다. 블로깅

참 감사하게도 작년에 생각보다 많은 분들이 내 블로그를 방문해 주셨다. 라인 인턴이나 네이버 핵데이 후기로도 들어오는 경우도 있었고, 파이썬 소켓 프로그래밍이나 라즈베리 파이로 서버를 구축하는 등의 개발 stuff에도 많은 조회수가 기록이 되었다. 덕분에 애드센스 수입도 몇년만에 상승세를 탔다. 하지만 무엇보다도 댓글에 "앓던 문제를 해결했다" "잘 설명되어 있어서 좋았다" 등의 반응이 온 것이 제일 보람찼다.

작년 하반기는 회고만 주구장창 썼는데, 이제는 기술 관련 글들도 다시 이어서 써보려고 한다. 앞으로 더 많은 사람에게 도움이 되었으면 한다. (그리고 더 많은 광고 수익도...)