2021년을 돌아보며

2021. 12. 30. 22:23IT/Retrospective

블로그 망했나요?

아직 살아있습니다.. 아직은..

꾸준함. 내가 갖추지 못한 미덕이다. 이 블로그의 옛 역사를 훑어보면 정말 업데이트 주기가 엉망진창이었다. 어떻게든 글을 좀 자주 써보려고 블로그 글 쓰기 모임도 모집해봤지만 내가 리더였던 탓에 그 모임도 흐지부지 끝났다.

글감은 언제나 머릿 속에 넘쳐나지만, 그것을 행동으로 옮기는 게 쉽지 않다. 일단 글을 쓴다면 최소한의 성의는 들여야한다 생각하고, 그러다보면 글 하나 하나를 쓰는 작업 자체가 굉장히 고되게 다가오게 된다. 뻘소리를 늘어놓으면 알아서 그럴싸하게 포장해주는 앱이 절실할 정도다. 혹시 여기까지 읽고 내 MBTI가 혹시 예상이 되는가? 난 매우 전형적인 INTP 인간이다. 그런데 MBTI 과몰입을 싫어하는

기록은 자기 만족 수준을 넘어, 앞으로의 인생에도 큰 영향을 끼친다고 생각한다. 이후로도 최대한 유의미한 기록들을 어떻게든 남기려 발버둥쳐보려 한다. 그럼 이제 2021년 회고를 시작한다.

리팩토링을 합시다

2020년은 신규 서비스를 개발하는 팀에 참가하여 프로젝트를 궤도에 올리는 것을 주 목적으로 달려왔다. 반면 2021년은 그 프로젝트에 더 살을 붙이는 게 목적이었다.

예전에 어느 블로그에서 버전 2까지 만드는 게 진정한 개발자라는 이야기를 본 적이 있다. 서비스 하나를 런칭하는 것과, 이미 런칭 중인 서비스를 고도화하는 것은 또한 별개의 이야기라는 의미다. 새로운 서비스를 만드는 것은 늘 설레고, 재미있지만 그것이 단순 개발자의 자기만족에서 끝나면 안 된다. 런칭이 된 서비스를 지속적으로 유지 보수, 고도화하여 유저들의 경험을 최적으로 유지시키는 것이 제일 중요한 덕목일 것이다.

아 ㅋㅋ 돌아가면 됐지 뭘 더 바라냐고

우리의 프로젝트는 시간이 지나면서 근본적인 고민에 빠지게 되었다. 부족한 지식과 경험으로 일정에 쫓기며 만들다 보니 군데군데 바람직하지 못한 코드들이 산재해 있었다. 같은 동작을 하는 클래스 및 메소드가 2개 이상 있기도 했고, 자바 컨벤션을 정면으로 위배하는 코드가 보이기도 했다. 스프링에 대한 숙련도가 낮은 상태에서 시작했던지라 스프링의 철학에도 맞지 않는 코드를 볼 수 있기도 했다. 그 당시에는 일정이라는 압박이 있었기에 어쩔 수 없는 선택이었지만, 더 이상 미룰 수는 없었다. 그래서 프로젝트의 구조를 조금씩 개선해 나가고자 했다. 이 과정에서 난 클라이언트의 요구에서 벗어나 소스코드 자체만을 바라보며 작업을 할 수 있다는 점을 매우 좋게 여겼다.

아키텍처적인 고민

클린 아키텍처 공부해 본 사람은 지겹도록 봤을 그 과녁판

여러가지 개선을 했었지만 일일히 열거하기는 지면상 적절하지 않은 것 같아 몇 가지만 소개하고자 한다. 가장 의미있다 생각하는 성과는 아키텍처다. "어떠한 요구사항 변경에도 유연하게 대응할 수 있는 방법을 찾아보자"는 의견에 클린 아키텍처를 잠깐 살펴봤었다. 접하게 된 타이밍이 매우 절묘했다고 생각한다. 디자인 패턴과 객체 지향 프로그래밍 스터디를 끝냈고, 스프링에 대한 경험이 어느 정도(래봤자 1~2년 정도지만) 쌓인 상태에서 보게 되니, 적당하게 개념을 흡수할 수 있었다. 물론 아직도 모르는 것들 투성이라 중간에 막히곤 하지만, 아키텍처에 대한 기조가 전혀 없는 상태로 개발하던 것보다는 훨씬 나아졌다 생각한다. 이 아키텍처에 대한 고민은 작년 하반기에 새로운 팀(!)에서도 빛을 발했다. 새 팀 이야기는 후술...

알고리즘 개선 시도

자기가 가진 잔돈을 합치는 데도 수수료를 내야하는 뿅뿅한 화폐가 있다? 뿌슝빠슝 (출처 : https://river.com/learn/bitcoins-utxo-model/ )

비트코인 출금에 대한 알고리즘을 개선했다. 비트코인은 최초의 암호화폐이니 만큼, 지금 시점에서는 이해하기 힘든 스펙들로 구성되어 있다. 가장 대표적인 게 UTXO(Unspent Transaction Output)인데, 학부생들 시점에서는 "거스름돈 문제"로 잘 알려진 배낭문제식 딜레마를 담고 있다. 출금 기능을 내가 처음 맡아 개발할 때에는 알고리즘에 대한 면밀한 조사 없이 다른 사람의 코드를 옮겨 적기만 하다보니 드문 확률로 최적해 도출을 못 해 에러가 발생하곤 했었다. '더 좋은 방법이 없나?' 하고 고민을 하다, 내가 참조한 코드가 상당히 구 버전이었다는 것을 알았고, 이미 5년도 전에 누군가가 개선 방안을 논문으로까지 올려놓았던 것을 발견하게 되었다.

마크 에르하르트 선생님..? 이라고 부르는 게 맞나 싶지만 여하튼 감사합니다. 많은 도움이 되었습니다.

논문을 분석해본 결과 해결 방안 자체는 사실 지극히 간단했기에 다소 허무감을 느꼈다. 그 간단한 것을 깨닫는 데는 1년 정도가 걸린 셈이니. 처음부터 조사를 제대로 했으면 되었을 걸 하는 후회가 남았으나, 어찌되었건 1년간 앓던 문제를 결국에는 해결했다는 만족감이 훨씬 더 크게 느껴졌다. 나중에는 이 내용을 회사 내부 세미나에서 발표도 했다. 이 모든 과정을 서포트해주신 리드님께 이 자리에서나마 무한한 감사를 표한다.

제주도에서 한 달 일하기

원격근무 본격화됐다고 뉴스로 홍보하니 달린 댓글들. 보면서 가슴이 웅장해졌다.

노마드 코더 해커하우스 때도 그렇고, 디지털 노마딩에 관련된 부분에서만 운이 좋은 것 같다. IT 기업에 입사했을 때부터 이런 삶을 생각해왔었는데, 실제로 실현해볼 줄은 몰랐다. 덕분에 뉴스에 내 사진이 여러 장 올라갔다. 지금도 잊을만 하면 올라오고 있다.

이 때가 참 좋았지...

눕기만 하면 바다가 보이는 풍경이 참 좋았다. 코로나만 아니었더라도 조금 더 많은 사람을 만나보고자 했을텐데 아쉽다. 그런데 코로나 사태 아니었으면 아마 제주도에서 한 달을 일할 수 있는 기회도 없었을 거라 생각하니 조금 아이러닉하다.

이후로 라인에서는 근무지에 대한 제약이 없어졌다. 실제로 완전 재택 발표 후에 아예 제주도로 이사를 가버린 분도 계신다. 상황이 괜찮아지면 나도 다시 원격 근무를 시도해볼 생각이다. 언젠간 오키나와의 따가운 햇살 아래에서 근무할 수 있기를 바란다.

팀을 옮기다

작년 하반기에 다른 팀에서 추가 인력이 필요하단 소식이 들려왔고, 사정상 우리 팀에서 몇 명이 겸직을 해줘야만 했다. 마침 해당 팀에서는 코틀린과 스프링 웹플럭스로 프로젝트 개발을 진행할 것이라 했으며, 우리 프로젝트와는 달리 실제 라인 앱에 탑재되는 서비스를 타겟으로 하고 있었기에 관심이 있어 겸직에 지원했다. 그렇게 몇 개월정도를 겸직으로 일하다보니 선택의 순간이 다가왔다. 회사 내부 사정으로 인해 어느 한 쪽을 포기해야만 했었는데, 몇 날 며칠을 고민하다 결국 새 팀으로 넘어가기로 결심했다.

키워주셔서... 감사합니다!!

나에겐 나름 큰 이벤트였다. 스스로의 선택으로 소속을 바꾼 건 회사 생활은 물론이고 내 인생 전체에서도 별로 없던 일이었다. 특히나 이번 선택은 양 선택지가 모두 좋은 선택지였기에 더더욱 그랬다. 이전 팀에서는 많이 아쉬워하면서도 내 선택을 존중해주었다. 그래도 시니어 개발자 분들 이야기 들어보면, 결국엔 돌고 돌아서 또 다시 만나는 경우도 많다고 했으니, 앞으로는 이런 이별에 너무 연연해하지 않으려고 한다. 언젠가 서로 성장한 모습으로 만날 수 있기를 바랄 뿐이다. 이렇게 쓰고 짤까지 첨부해 놓으니 진짜 원피스같네.

라인 모듈 첫 데뷔

B2B 성격의 프로젝트에서 벗어나 B2C 프로젝트를 맡게 되니 느낌이 많이 달랐다. 프로젝트에 관여하는 팀의 범위가 넓어졌고, 그만큼 커뮤니케이션의 중요도가 매우 커졌다. 테스트용 폰도 신청했고, 베타버전 앱들을 열어보며 확인하는, 기존에는 없던 과정들이 생겼다. 내가 구성한 API를 통해 앱에서 실제 화면으로 나타나는 과정을 직접 확인하니 감개무량했고, 메신저 본체가 아닌 곁다리(?) 모듈임에도 상당한 양의 트래픽이 들어오는 걸 보게 되니 새삼 내가 있는 곳이 큰 회사라는 것을 다른 방면으로 느끼게 되었다.

하지메마시떼

일본 대상 서비스다 보니, 일본 법인 분들과 커뮤니케이션 할 일이 굉장히 많이 늘었고, 본의 아니게 내 본전공인 일본어학의 도움을 매우 매우 많이 받고 있다. 취준생 시절에 라인 재직자들에게 "저 일본어 그래도 좀 하는 편인데 입사에 보너스 있나여?"라고 물어보면 다들 하나같이 "아뇨 개발이나 열심히 하셈;"이라고 답변했었는데, 현재 상황을 보면 일본어 보너스 있어도 이상하지 않을 수준이다.

물론 슬랙이나 그룹웨어 등에 자동 번역이 달리고, 화상 회의에서도 통역사들이 참가를 하지만, 언어의 변환이라는 작업이 항상 가운데에 끼어있으니 커뮤니케이션 비용이 증가하는 건 어쩔 수 없는 것 같다. 같은 한국인끼리도 말 안 통하는 경우가 부지기수인데, 외국인끼리면 더 말할 것도 없다.

너 어느 회사 들어가고 싶어? "남조선 폭파집단"

여기에 언어 문화적인 요소도 무시할 수 없게 되는데, 번역을 거치면서 뉘앙스가 이상해지는 경우가 종종 있었다. 아래와 같은 경우가 내가 직접 목격한 경우다.

원어의 의도 전달된 의도
이 건은 맡기겠습니다 이건 알아서 하세요
검토해주실 수 없으실까요? 검토 안 하실거죠?
제가 맞게 파악했을까요? 틀림 없습니까?

??? : 제로벨님 이거 번역이 잘못된 거죠? 저한테 시비 거는 거 아니죠?

의미야 대체로 전달은 되지만, 알게 모르게 기분이 상하는 것은 어쩔 수가 없다. 실제로 동기들한테서 "이 분이 이런 메시지를 보냈는데, 어조를 모르겠다. 이 분이 지금 화를 내고 있는 것인지?" 식의 질문도 꽤 많이 받았다. 나야 언어를 배우는 과정 자체를 즐기는 입장이라 이런 다국어 환경을 좋게 느끼지만, 다들 업무에 100% 사용해야 할 리소스의 적지 않은 일부를 커뮤니케이션에 사용하는 걸 보고 있으면 조금 아쉽긴 했다.

최근에 좀 크게 다가왔던 사건이 하나 있었다. "키워드로 제목 검색이 가능해야 한다"는 스펙을 접수했는데, 당연히 일본어 검색이었고, 일본인들의 상식선에서는 검색을 할 때 "히라가나/가타카나"가 구분이 되지 않아야한다. 마치 우리가 영어 검색을 할 때 대문자로 검색하면 소문자 결과가 제외되어 나오는 게 이상하다 여기는 것처럼, 일본어에서도 히라가나/가타카나는 용도 구분이 있더라도 지칭하는 음은 같기에 검색에서 구분이 되면 안 된다. 나는 이 부분을 지적하여 적절한 대처를 했고, 팀에서는 "이거 몰랐으면 나중에 난감했겠다"는 반응이 돌아왔다. 동기들도 일본어를 모르는 상태에서 개발을 하다보니 비슷한 상황에 자주 직면하는 듯하다. 개인적으로는 나의 기여도가 높아지는 것 같아서 기분은 나쁘지 않으나, 애초에 이런 문제가 발생하지 않을 최선의 시나리오는 없을까 싶은 아쉬움은 남았다.

경품 복

참 많이도 받았는데, 아쉽게도 우리 지역엔 스벅이 없었다 (얼마 전에 생김)

우리 부서는 팀 게임을 정말 자주한다. 회고를 하기 전에도 초성퀴즈나 노래 제목 맞추기를 하고, 송년회에서도 이미지 퀴즈를 하고, 회식 때에는 어몽어스를 하고.. 이런 식이다. 그리고 모든 게임에는 상품이 걸려있는데, 최근에는 나의 승률이 매우 높았다. 덕분에 두둑한 배민과 스벅 포인트로 생계를 잘 유지했다(?) 게임을 잘 하면 돈을 준다니, 이게 오징어 게임이 아니고 무엇일까? 덕분에 자칫 지루할 수 있는 세션들을 항상 즐겁게 보낼 수 있는 것 같다. 늘 이런 이벤트를 준비해주는 인원들에게 감사할 따름이고, 올해도 열심히 이겨볼(?) 예정이다.

올해는 어떻게?

가지마! 가지마!

2022년, 나는 한국 나이 기준 20대의 마지막을 맞았다. 나이 먹는 것에 큰 미련이 없는 편이었는데, 20대가 올해로 끝난다는 것을 알게 되니 여러가지를 신경쓰게 된다. 그래서 올해는 좀 특별하게 잘 관리해서 마무리해보고 싶은 생각이 든다.

매년 띄워두고 애매하게 지키는 공약인데, 공부를 해야겠다. 그래도 재작년과 작년 초는 강제성을 띄는 스터디를 하다보니 어떻게든 공부가 진행이 됐는데, 작년 하반기 언저리부터는 뭔가 없었던 것 같다. 업무를 통하여 얻게 되는 것들은 굉장히 많았는데, 생계형 지식(?)일 뿐, 따로 시간을 내서 공부를 하진 않았기에 반성을 하게 된다.

공부의 성과는 대부분 바로 나타나지 않는다. 필요할 때가 되어서야 공부하면 늦는 경우가 많다. 업무를 하면서도 "아.. 내가 이걸 미리 배워놨더라면 지금 이 상황에 시도해볼만 한데"라고 생각하며 시도조차 못 해보고 접어야 했던 것들이 적지 않았다. 앞으로도 그런 후회를 하지 않기 위해서는 미리 공부를 해야만 한다. 이 공부는 비단 개발 지식뿐 아니라, 일정 관리 같은 외적인 것들도 포함을 하고 있다. 특히 개발 외적인 부분을 소홀히 해왔기에 앞으로는 비중을 높이고자 한다. 이렇게 시니어가 될 준비를 하나씩 해 가고 싶다.

운동 좀 하세요!!!

일평생 운동을 재미 들려서 해본 적이 없다. 그래도 남자들은 운동 안 하다가도 군대 들어가면 몸 좋아져서 나오는 경우도 적지 않은데, 난 군대에서 잦은 PX 방문으로 오히려 살만 10kg 가량을 더 찌워서 나왔다. 그런 환경에서도 운동을 안 했는데 밖이라고 할 생각이 들었을까. 그런데, 입사 이후로 건강의 중요성을 계속해서 깨닫고 있다. 개발자라는 직업은 앉아서 키보드만 두드리는 일을 하게 되니 의식적으로 운동을 해주지 않으면 몸이 망가지기 십상이다. 재택 이후로는 더 심해진 듯하다.

생존이라는 이유 외에도 올해는 운동을 해야하는 다른 동기가 생겼다. 다름아닌 내 내면에서 올라온 '너의 20대를 결국 뱃살돼지로 마감할 예정이냐?'는 일침 때문이다. 시니어 분들이 다 입을 모아서 하는 이야기가 "운동은 한 살이라도 더 젊을 때 시작하라"였다. 본인들의 경험에서 우러나온 걱정어린 조언일 것이다. 적어도 올해의 마지막은 베둘레햄을 떼어낼 수 있기를 바란다.

여러가지 경험을 해보자

머리 물들이기도 다 젊을 때 해봐야 하지 안큿나!

요 몇 년 사이에 생긴 모토가 있다. '할 수 있을 때 다 해보자' 세상 만사를 '해보고 싶은 것'과 아닌 것으로 나누는 것보다, '내가 할 수 있는 것'에 초점을 둬보기로 한 것이다. 지금 나에게 흥미없던 일들이라도, 나이를 먹고 나면 하고 싶어도 하기 힘들어질 수 있을 것 같다는 생각에 최대한 여러가지를 체험해보려고 노력했다. 그 중 하나가 소박하지만 '탈색하기'였고, 덕분에 파란머리 보라머리 초록머리 다양하게 갖고 놀아봤다.

안 하던 걸 하다보면 나도 주이 드샤넬 같은 연인을 만나게 될 수도 있지 않은가? (아님)

올 해에는 좀 더 과격한 것들을 시도해보려고 한다. 그게 무엇인지는 쑥쓰러우니 비밀

여하튼 다들 봉마니바드세여