2020년을 왜 돌아보지 못했을까? 무슨일이 있었던 걸까? 2021년을 중심으로 회고를 해본다. 기억을 마구 되짚어서 2020년까지 한꺼번에 해보자.

miLab Viewer와 함께한 2020년

2020년 상반기에는 프로토타이핑에 가까운 개발을 했었다. 반면, 하반기부터는 이 프로토타이핑된 프로젝트의 기능들을 세분화하는 작업을 했다.

프로토타이핑

첫 삽을 떴던 것은 Albert였다. 그리고 무슨 이유에선지 기억이 정확히 나진 않는데, 내가 담당하게 됐다. 그게 시작이었다. gin-gonic과 React를 사용한 이 프로젝트는, 현재 시점으로 약 2년간 내 전담이 되었다. 험난한 여정이 될 것이란걸 모른 채(…) 그 때의 나는 굉장히 재미있어하며 개발에 몰두했었다. 분명하게 정해진 요구사항도 없었기 때문에, 내 마음대로 개발할 수 있는 기회였다. 필요하다고 느낄만한 기능들을 하나 둘 넣기 시작 했고, 수많은 버그를 만들어냈다.

상반기까지 내 쪽은 평화로운 편이었다. 임베디드쪽은 여전히 바쁘게 돌아가고 있었고, 다른 팀원 두분에게 코드리뷰까지 받기에는 그들의 시간이 별로 여의치 않았다. 그래서 테스트에 꽤 많은 관심을 기울였던 것 같다. 비교적 여유가 있던 초기에는 TDD를 진행했었다. Annotator를 개발했던 당시에 투자한 React 유닛테스트 경험을 최대한 녹여내려 했다. 가끔 더디게 만드는 경우가 있었지만, 그 전에 비하면 괜찮았다.

좋았던 점

  • 정해진 요구사항이 없이, 내 마음대로 UI와 기능들을 넣을 수 있었음
  • 작년 대비 HW의존성이 없어서 제약에 신경쓰지 않아서 마음이 가벼웠음

아쉬웠던 점

  • UI를 내 마음대로 정하다보니, 고민하는 시간이 다소 길었음

새로운 시도

유닛테스트보다 더 확장된 테스트도 해보려고 애썼다. Selenium과 Cypress를 도입하려고 검토했고, Cypress쪽이 생산성이 더 나은 것 같아서, 눈도장을 찍어뒀다. 적용하기 위해서 필요한 몇가지 수정을 정리했으나, 얼마 지나지 않나 개발에 치여 기억에서 사라졌고, 2년이 지난 지금도 손을 못댔다(…). 여기저기 주워듣고 다시 생각해보니 혼자 감당하기엔 좀 벅찼을것 같다는 생각이 조금 든다.

메인데이터는 파일이기 때문에, 이용자간 동시접근을 막기 위해서 웹소켓을 사용했다. 실시간 동기화가 여기서도 필요하게 될 줄은 몰랐다. 막 엄청나게 많이 이용되는 기능이 아니라서 조금 귀찮은 기분도 들었다. 이렇게까지 해야되나? 라는 생각이 들었는데, 되돌아보니 이건 타팀에서 들어온 요구사항이었구나.

좋았던 점

  • 새로운 기술을 사용해 볼 수 있는 기회는 설렌다.

아쉬웠던 점

  • 다소 엉성하게 도입했는데, 그대로 고착화되어버렸다. 예쁘게 다듬지 못한 부분이 아쉬웠음

고객이 나타났다

아직도 기억난다.

상대: “이거 고객사에 전달하려는데 9월까지 개발되죠?”

나: (당시 6월)“이거 지금으로는 9월까진 안되고, 저 포함해서 3명이면 6주 가능할 것 같아요”

상대: “거의 다 됐잖아요? 지금이랑 많이 달라요?”

나: “아뇨, 겉으로는 다르지 않은데 내부적으로 손보고 테스트해야할 부분이 많아요”

상대는 마케팅팀이었고, 테스트버전을 데모용으로 공개해둔 것을 사용해 본 상태였다. 유명한 대형 고객사에게 어필하던 중, 미적지근했던 반응이 데모용 Viewer를 보더니 갑자기 돌변해서 계약 가능하냐고 했단다. 그래서, 개발팀(나)에게 알리기도 전에 구두로 약속을 잡아버린 것 같은 정황으로 추측된다.

지금 생각해보니, 왜 팀리더들이 중간에서 중재를 안해줬나 싶은데, 다들 큰 기회라 생각해서 그 쪽으로 의견이 기울었던 것일까… 여튼 나의 일정예측 따위는 철저히 무시되고, 계약을 위해서 개발이 진행되었다. 개발해야할 내용은 로컬시스템에서 돌아가는 Viewer를 AWS에서도 동작하게 하는 것이었다.

문제는 역시 메인데이터가 파일이라는 점이었다. EC2의 EBS로 담기에는 데이터 용량이 TB가 넘어갈 상황이었기 때문에, 당연하게 S3를 사용해야 했다. 그러려면 백엔드의 데이터입출력 클래스에 S3어댑터를 넣고 검증해봐야 했는데, 동작은 고사하고 한 샘플당 4GB인 데이터의 입출력속도를 S3에서 잘 소화하는지 체크도 해봐야했다. 게다가, SSL인증서도 먹여야 할텐데 이런걸 어떻게 지원할지, 온프레미스 지원이 처음이라 너무나도 두려웠다.

안정성이나 속도 측면에서 조금 불안한 리뷰가 많았지만, s3fs라는 S3마운팅 프로그램을 사용해서 적당한 수준으로 시간 내에 구현할 수 있었다. 인증서는 필요가 없게 됐다. 사내 네트워크 안에서만 운용하기로 했기 때문이었다.

12월까지 유럽의 고객사와 메일을 주고받으면서, 차근차근 개발과 설치를 수행했다. 재미있고 신기했었던 것은, 그 회사의 보안PDF메일과 데이터 import 과정이었다. 보안메일은 상대방에게서 PDF가 오는데, 이 PDF에 ID/PW를 입력하면, 유저인증을 고객사 서버에서 수행하여 PDF가 열리는 시나리오였다. PDF문서 안에서 온라인인증이라니 ㅋㅋ 이것이 21세기인가!! 보안이 매우 엄격했던 고객사이기 때문인지, 데이터 import는 여러단계를 거쳤다. S3(write전용)-S3(queue역할)-S3(read전용), 이렇게 3개의 S3를 연결해서 데이터흐름을 단방향으로 구성했다. 이 또한 처음보는 형태라서 재미있었다.

좋았던 점

  • 누군가 사용하게 될 것이라는 두근거림
  • 내가 만든 것에 의해서 회사고객이 생겼다는 것에 대한 뿌듯함

아쉬웠던 점

  • 갈리고 갈려버린 나의 정신과 체력
  • 일정에 대해 강력하게 주장할 근거를 마련하지 못했음

본가는 안녕하신가

일정이 잠깐 비던 6월, 임베디드 개발에 들어갔었다. QtUI를 오랜만에 만져보니, React에서 쉽게 만들 수 있는 컴포넌트도 Qt를 이용하니 여간 번거로운게 아니었다. 그래도 다시보니 반가워서 몰입했던 것 같다. 가장 맘에 들었던 것은 토스트 컴포넌트를 만든 것이었다. UI가 대부분 정적이었는데, 동적 컴포넌트를 넣었더니 뭔가 돋보이는 느낌이었다.

좋았던 점

  • 나갔다 오니 개선할 부분들이 보임

아쉬웠던 점

  • 퀄리티있는 코드를 만들지 못하고 바쁘게 작업한 결과물

너무나도 많은 일들이 벌어진 2021년

2021년 상반기는 마음이 어지러워서 그런지, 계획같은걸 세울 정신이 없었던 것 같다. 때문에, 개발을 하면서도 구체적인 그림을 그리기보다는 구현을 먼저 시도했던 것 으로 기억한다. 당시에는 그럴 수 밖에 없었기 때문에, 그렇게 진행하고 마쳤었는데, 회고를 쓰는 시점에서 다시 돌아보니 이게 마구잡이로 개발했다는 것이 눈에 보인다. 내가 짠 코드를 내가 보는데에도 이렇게 느낌이 확실하게 오는데, 다른사람들이 보면 얼마나 더 명확하게 보일지 생각하면 부끄러움이 제일 먼저 다가온다.

위 문단을 쓴 시점은 지금으로부터 6개월 전이었는데, 새로오신 구성원분이 Viewer코드를 보시더니 똑같이 얘기하셨다(…)

회사생활 일부

작년 하반기부터 올 한해까지, 회사의 많은 사람들에게 신세를 졌다. Eugene, Albert, Daniel, Chang, Jon, Jun, Ashley, Esther, Zoe, Chloe, Suzan을 포함해서, 그 외에도 많은 동료들에게 나의 정서적 힘듦을 공유하고 위로를 받았다. 회사라는 단체 안에서 이런 좋은 동료들을 만날 수 있는 기회가 또 올 수 있을까, 라는 생각이 들 정도로 고마운 사람들이다.

마케팅셀에서 홍보를 위해 전시회 부스를 종종 마련했었는데, 올해 초에는 이 Viewer설치를 해주러 지원을 나갔었다. 안내문서를 만들어서 보내줬었는데, 코엑스 전시장의 네트워크가 뭔가 제한이 걸려있었다. 한참 고생하시다가 잘 안됐는지 나를 호출하셨고, 오후 적당한 시간에 코엑스에 가서 장비의 네트워크를 설정해주고 돌아왔다. 오랜만에 출장같은 느낌도 들고, 서울공기도 쐬고, 기분전환이 되었던 것 같다. 가끔 나가는건 좋다.

연초에는 소중하게 생각했던 팀리더가 퇴사하시는 바람에 마음이 많이 힘들었다. 내 시선에는 오해로 시작된 일이었던 것 같아서 더 마음이 아팠다. 정서적으로도 힘든 시기였어서, Albert의 퇴사는 나에겐 꽤나 큰 충격이었다. 당시 Eugene에게 “나도 나가겠다” 하고 말했던 걸 되돌아보면 말이다.

좋았던 점

  • 나는 굉장히 좋은 환경과 동료에 둘러싸여 일을 하고 있다는 점
  • 1년에 한번 정도 하는, 기분전환 출장

아쉬웠던 점

  • Albert의 퇴사

클럽하우스, 불멸방과 친구들

2월의 설연휴 즈음, 트위터에서 종종 들려오던 클럽하우스를 Zoe의 초대로 가입했다. 쭈뼛쭈뼛 방을 돌아다니다가 이름이 독특한 ‘불멸방’이라는 곳에 다다랐는데, 이 방이 생각보다 매력적이었다. 너무나도 다양한 사람들이 20살이라는 컨셉으로 반말을 하는 곳이었다. 처음에는 벌벌떨면서 말도 못했었는데, 한번 입이 트이니 한참을 빠져들어서, 처음에는 밤새도록 그 음성채팅에 빠져 정신을 못차리다가, 시간이 흐르고 흘러 지금은 따로 몇몇 친구들만 꾸준히 만나는 소규모 그룹으로 남게 되었다.

이 친구들하고는 퇴근 후 계속 얘기를 하다보니, 내 절친들보다 더 많은 이야기를 하게됐다. 기간은 10개월인데, 마치 5년은 이미 함께한거 같다. 가끔 “밥먹고 와”, “응 다녀와” 같은 말들을 하고있노라면, 마치 메타버스세계에서 20명의 친구들과 동거하고 있는 느낌이 들기도 한다. 나이들도 분포가 엄청 다양한데, 그냥 반말하고 있으니 다들 동갑내기 친구들 같다. 가끔 우리나라에 이런 문화가 많이 퍼졌으면 하는 생각도 든다.

처음엔 어떻게 짤로만 얘기했는지 신기한 웃음보따리 공감왕 밀리, 은둔형으로 살던 나를 발굴(?)하고 티키타카가 재밌는 루미, 병약하고 듬직한 오빠느낌 성대모사 건우, 송중기보면서 내 프사 그려준 걱정인형 찬희, 연애 못하는거 아니고 안하는 선넘지마 성현이, 일관성있는 리액션의 무한체력 동각이, 술만마시면 잠재워야하는 호박고구마 선희, 맨날 내가 얄밉다고하는 나만그래 세레나, 긍정왕이면서 가끔 애들 찔러보는 봉원이, 섬세하고 눈치빠른 정보추적자 우토포스, 맨 처음 내 프사 그려준 다정하고 칼같은 짱이엄마 영조, 얼마전까지만해도 울산사는줄 알았는데 구미에 사는 천사표 한나, 문덕스승님이면서 잘 웃어주는 피리쟁이 미현이, 43살이라고 말하고 다녀서 다들 진짠줄 아는 칭찬대장 혜영이, 비폭력대화의 심볼이자 야근요정 아노, 방송국에서 남다른 시간대를 살고있는 용진이. 그 외에도 다 적지 못한 친구들이 너무 많다. 고마워 올해의 나를 지탱해주고 웃겨주고 응원해준 귀요미들아.

이 친구들이 재미있는게, 개발자라는 직업이 나밖에 없어서 그런지 초반에 나에 대해 굉장히 신기해하는 것 같았다. 최근에야 아노문이 자주 들어오기 시작해서 같은 업계 동질감을 느끼고 있는데, 여전히 비슷한 것 같다.

좋았던 점

  • 내 이야기를 가감없이 나눌 친구들을 만난 것
  • 새로운 형태의 플랫폼을 경험

아쉬웠던 점

  • 사람이 많아지고 시간이 지나니, 사회와 비슷하게 갈등이 생기기 시작하고, 이탈하는 친구들이 생김
  • 술도 잘 못하고 거리가 있다보니 모임에 가기가 어려움

Viewer 새 기능 개발

기존 Viewer는 말라리아 전용이었다. 하반기에 BCMA라는 프로젝트를 새로 시작한다며, 임베디드 장비와 더불어 Viewer까지 개발범위에 포함되어 시작하게 됐다. 기존 컴포넌트와 함수들을 재사용할 수 있게 바꾸고, 새 뷰와 API함수들을 생성하는게 전부였다. 와.. 4개월가량 작업한 내용이 한줄로 설명이 되네… 이번 개발이 조금 더 수월했었는데, 그 이유는 UI 디자이너가 목업을 전달해줬기 때문이었다. 상세하게 작성된건 아니었지만, 기본적인 사항들만 정의해서 전달해주는 것 만으로도 굉장히 큰 도움이 되었다. 디자이너가 있는게 이렇게 편한거였는데, 작년에는 왜 그 고생을 했었던 것인가..ㅠㅠ

중간에 매개데이터 형식이 변경되는 일이 일어났었다. 먼저 납품되고 업데이트를 하지 못하는 장비들은 구버전 포맷을 써야했고, 새로 나가는 장비들은 신버전을 사용해야 했다. 덕분에 데이터 하위호환성에 대한 걱정을 하게 됐다. 아마 순수 웹서비스에서는 고려하지 않아도 될만한 문제일텐데, 나는 대부분의 문제를 다 경험하는 상황에 처해있는게 아닌가 하는 성찰의 시간을 잠깐 가졌었다. 근데 이거 별거 아닌 것 같은데도 굉장히 골치아팠다. 왜 PS4가 하위 PS의 게임들을 지원하지 않느냐던 불평을 했던 과거의 나를 잠시 나무랐다.

좋았던 점

  • 새로운 기능을 추가하면서, 기존코드를 재활용 가능하게 리팩토링할 기회를 얻음
  • UI디자이너가 있다는게 이렇게 좋다는걸 깨달음

아쉬웠던 점

  • 요구사항이 몇차례 변경되어 개발기간이 늘어남
  • QA팀이 테스트할 대상에서 제외되어 개발자테스트만으로 커버해야 해서 조마조마했음

운영

Jenkins서버가 바이러스에 감염됐었다. 이전 회사에서도 비슷한 양상이 발생했었다. 그 때는 CPU사용률이 100%를 차지해서 SSH접속도 안됐던 반면, 이번에는 어떻게 꾸역꾸역 접속은 됐다. 구글링으로 대충 바이러스를 제거했는데, 리눅스의 안티바이러스는 처음 써보는지라 일단 돌렸더니 감염된 파일들이 삭제(…)되어버렸다. 물론 그 중에는 crontab 같이 중요한 sysbin 실행파일들도 포함되어 있었다. 결국, 새 인스턴스로 교체했다.

좋았던 점

  • 없음

아쉬웠던 점

  • 원인을 좀 더 파볼 걸, 그냥 덮어버린게 아쉬움

내가 이젠 면접관이라니

2020년 8월부터 장장 16개월동안 상시채용을 했다. 약 100명가량의 이력서와 10회가량의 인터뷰를 했다. 지금 돌아보니 생각보다 많은 이력서를 검토했고, 생각보다 적은 수의 인터뷰를 했다.

이력서를 검토하면서 자주 들었던 느낌은, 일단 넣고보자 하는 경우가 많았다는 것이었다. 어림잡아 절반정도는 “왜 지원한거지?”라는 느낌을 줬던 것 같다. 특별히 무기가 없어보이는데다 기본요건도 충족하지 않는 이력서도 있었고, 자기가 원하는 방향이 우리회사와 다른데도 당당하게 써놓은 이력서도 있었다. 최근에 가까워서는 너무 혹해보이는 git리포와 이력서를 꽤 받았었는데, 경력이 거의 없는 지원자인걸 보고 단기수강을 통한 케이스라는걸 알게 되었다. 우리의 경우는 어느정도 경력이 필요한 상황이었기 때문에 대부분 탈락이었다.

이력서 다음은 회사양식의 지원서를 받았었는데, 이게 굉장히 허들이 높았던 것 같다. 자기소개를 포함해서 회사고유의 질문사항들이 있었는데, 이 부분때문에 다수가 지원서를 제출하지 않았던 것 같다. 기록을 보면 알 수 있을텐데, 느낌상으론 30%정도는 이 부분 때문에 지원을 철회한 것 같다. 나라도 귀찮다는 느낌이 들 것 같은데, 반면에 회사에는 진심으로 지원하고자 하는 분들을 알 수 있어서 좋았던 것 같다. 이럼에도 불구하고, 재지원을 하신 분들이 몇몇 계셨었다.

기술면접을 실제보다 더 많이 수행한 것 같은 느낌이 든 것은, 아마도 그만큼 힘들어서였기 때문이 아닐까 싶다. 체감상으론 20명정도 한 것 같은 느낌인데 말이다. 매번 면접관으로 들어갈 때마다, 지원자를 판단하는 기준이 흔들릴까봐 걱정했다. 사람을 대면하면, 그 사람이 주는 분위기나 말투, 행동에 의해서 판단이 달라지는 것 같은 느낌이 들었기 때문이었다. 한편으로는 다양한 생각과 이력들을 직접, 그리고 조금 더 깊은 이야기를 들을 수 있다는 자리가 재미있었다. 물론, 가장 힘들었던 것은 그 짧은시간 안에 우리 상황에 맞는 사람인지를 판단하는 것이었다.

현재는 좋은 기회를 통해서 다수의 개발자분들이 들어오셨다. 오시기 전에는 걱정을 했었는데, 오시자마자 활약하시는 모습들을 보고 너무 행복했다.

좋았던 점

  • 다양한 사람들을 만나 그들만의 이야기를 들어볼 수 있었음
  • 면접관으로 있다보니, 면접에 어떻게 응해야 할 지 조금 더 감을 잡은 것 같다.

아쉬웠던 점

  • 채용방향을 잘못 정한 것인지, 너무 오랜기간 시간을 소비한 것.. 하지만 결과가 좋았으니 아쉬운점이 아닌가?
  • 적절한 질문과 코딩문제들을 준비하지 못한 것 같은 아쉬움

소소한 일들

회사가 상장했다. 내가 다니는동안 회사가 상장을 할 줄은 몰랐다. 그리고, 상장을 하면 기존 직원들은 엄청난 혜택을 받는 줄 알았는데, 막상 보니 그런 것 같지도 않아서 조금 김이 샌다.

소중한 친구가 결혼했다. 언제 연애하나 걱정을 하게 만들었던 친구인데, 올해에 들어서 결혼했다. 결혼식에 가서 사진찍는데 나도모르게 함박웃음이 나면서 기분이 너무 좋았다.