2023 Retrospective

9 분 소요


시간이 너무 빨리 지나간다. 작년 회고 글을 작성했던 게 아직도 엊그제 같다. 짧은 것 같지만, 많은 변화가 있었던 작년 한 해에는 무슨 일이 있었는지 기록을 남겨보자.

새로운 가족, 토리

새로운 가족이 생겼다. 이름은 토리. 지금 와이프 배 속에서 무럭 무럭 자라고 있다. 23년 8월쯤 애가 생겨서 올해 6월 출산 예정이다. 지금도 가족 모임이 있으면 주아 혼자만으로 온 가족 웃음 꽃이 핀다. 여기 토리까지 합세하면 우리 가족에게 어떤 행복함을 가져다줄지 상상이 안 된다. 사실 주아 동생은 올해 초부터 준비하기로 계획했었는데 불쑥 먼저 찾아왔다. 토리도 주아처럼 건강하게 태어나길..

주아는 이제 두 살이 되어 간다. 태어나기 전엔 내가 아빠 노릇을 잘 할 수 있을까 걱정했지만, 생각보다 잘 하고 있는 중인 것 같다. 나는 사실 일 핑계로 서포트만 하고 와이프가 거의 혼자서 주아를 전담 마크한다. 애기 하나만으로 부모 둘이 녹초가 되는데 애기가 둘일 때 난이도는 어떨지 잘 모르겠다. 예전 동료 분께서 둘째는 발로 키운다고 하셨는데, 과연?

작년 나의 목표

나는 작년에 정했던 나의 목표를 얼마나 달성했을까? 의식적이든 무의식적이든 내가 설정한 방향대로 인생이 흘러갔는지 살펴보자.

1일 1커밋 - 성공

뿌듯하다. 대부분의 커밋이 블로그에 글을 쓰거나 예제 코드를 작성한 것들이지만, 하루에 조금씩이라도 쉬지 않고 공부했다. 목표 달성에 대한 성취감은 24년을 더 가열차게 보낼 수 있는 나의 원동력이 될 것이다. 올해도 다시 나의 페이스 메이커가 되어줄 목표로 삼을 생각이다.

StackOverflow 활동 - 성공

작년에 비해 명성(reputation)이 조금 올랐다. 검색하다 우현히 만난 질문들 중에 내가 알고 있거나 해결했던 내용이라면 답변을 달았다. 23년엔 6개 답변, 1개의 질문을 했다. 이전에 썼던 글로 명성만 올랐으면 실패이지만, 활동은 했으니 성공으로 봤다.

이전 블로그 글 최신화 및 내용 정리 - 성공

작년 회고 글을 쓸 때 이 목표를 잡은 이유는 예전에 쓴 글들이 조잡하거나 어리숙하다고 느꼈기 때문이다. 글 실력이 늘었는지 예전 글들을 읽다보면 글의 구조나 쓰임이 어색하고 내용이 부실하다는 인상을 받았다. 현재 내 블로그엔 336개 글이 있고, 그 중 약 80여개 정도를 다시 정리했다. 올해도 계속 미숙한 글들을 정리해나갈 예정이다. 이번엔 개수를 카운트해 봐야겠다.

읽었던 책 다시 읽고, 요약과 독후감 작성하기(한 달에 한권) - 실패

다 읽었던 책을 다시 보고 독후감을 쓰려고 했지만, 실패했다. 책을 다시 읽어보려 했던 의도는 경험상 한번의 정독으로 책의 지식이나 인사이트가 내 것이 되지 않았기 때문이다. 집중력이 좋을 땐 책의 내용이 마음 깊이 공감되면서 오래 기억에 남기도 하지만, 어떨 땐 방금 읽은 이전 페이지 내용이 생각나지 않아 지금 내가 무슨 내용을 읽고 있는지 모를 때도 있었다. 작년 익스트림 프로그래밍을 몇 번이고 읽으면서 애자일이라는 방법론에 대한 깨달음을 얻거나 나의 가치관이 싹 트는 경험을 했기 때문인지도 모른다.

독후감을 써보려했던 이유는 머리 속에만 있는 내용을 글로 표현하기 위해 정리하다보면 읽을 때와 다른 깨달음을 얻기 때문이다. 나는 다른 사람들이 이해하기 쉽도록 지식을 전달하기 위한 행동들이 자신을 얼마나 많이 성장시키는지 알고 있다. 대학, 회사 생활 모두 그런 경험을 했다. 블로그 글을 쓰면서 매일 느끼고 있다.

좋은 목표라고 생각했지만, 실패했고 그 이유를 돌이켜 생각해 봤다.

  • 기술에 대한 지식이나 다른 분야의 인사이트를 넓히고 싶은 조바심에 계속 새로운 책들을 찾게 된다.
  • 한번 스치 듯 읽은 책의 인사이트를 어설프게 글로 쓰고 싶지 않았다.

올해도 다시 목표로 삼고 싶은데, 이대로면 보나마나 실패할 것 같다. 어떻게 이 문제를 해결할 수 있을지 고민해봐야겠다.

새로운 책 읽기 - 성공

회고 글을 작성할 겸 읽은 책을 세보니 17권 정도 읽은 것 같다. 책에 표시나 다른 곳에 기록해두지 않으니 정확하게 몇 권을 읽었는지는 모르겠다. 앞으론 어떤 책을 읽었는지 주간 회고에 메모해둬야겠다. 일년에 책을 이 만큼이나 읽다니.. 어린 시절 만화책이 아니면 눈길도 주지 않았던 내가 정말 많이 변했다. 온-사이트로 일하는 프로젝트에 참여할 땐 출퇴근 길에 꼭 책을 읽었다. 작년 목표로 선정한 책들 중 일부만 읽었다. 그럼에도 이 목표를 성공으로 생각한 이유는 목적 자체는 독서를 통한 배움이기 때문이다. 권 수로만 따지면 더 많은 책을 읽었으니 목표는 이뤘다고 본다. 목표로 설정한 책들은 대부분 기술 서적들이었지만, 읽은 책들 중 절반은 투자나 자기 개발서였다.

다음은 인상 깊게 읽은 책들이다. 한번 더 정독하고 책에서 얻은 인사이트를 나만의 표현으로 다시 정리하고 싶다.

  • 실용주의 프로그래머
  • 가상 면접 사례로 배우는 대규모 시스템 설게 기초
  • 데일 카네기 자기 관리론
  • 돈의 속성
  • 돈의 심리학

프로젝트

작년 세웠던 목표가 소박했던 탓인지 대부분 잘 이뤄냈다. 이번엔 작년동안 어떤 프로젝트에 참여했었는지 돌이켜본다. 매 프로젝트가 끝날 때마다 회고 글을 쓰기로 마음 먹었는데 제대로 해내지 못 했다. 한 해를 모두 보내고 나서 흐릿한 기억을 돌이켜보는 일이 나의 발전에 도움이 될까 싶다. 그래도 못 했던 프로젝트 회고를 년말 회고에라도 정리해둬야겠다.

Frontiers

22년 회고 글을 작성할 때까지만 해도 이 프로젝트에 참여하고 있었다. 다행히 프론티어즈 팀과 함께한 경험은 회고 글로 잘 작성해뒀다. 프로젝트가 끝날 당시만 해도 고객사 팀원분들이 헤매진 않을까 걱정했지만, 걱정이 무색하게도 너무 잘하고 있다는 소식을 들었다. 기쁘다. 앞으로도 눈부신 발전을 기원하며 그 밑바탕에 나의 기여가 있었다는 사실이 자랑스럽다.

Elders

23년 6월쯤 한 고객사의 문제를 함께 해결하기 위해 4주 정도 도우미 역할로 프로젝트에 참여했다. 짧은 시간이었지만, 좋은 인연들과 함께 했다. 랩스에서 아직 한번도 함께 일 해보지 못 했던 팀원분과 함께 일한 것도 좋은 경험이었다. 나와 다르게 차분하고, 논리적인 설명을 할 수 있다는 점이 본받을만 했다.

이 프로젝트는 시간이 굉장히 촉박했다. 프로젝트에 투입된 시점엔 정확한 요구사항이나 개발 스코프가 정해지지 않은 상태였다. 결국 프로젝트 기간 중 일주일은 개발할 스코프를 정확하게 진단하고, 스토리 준비를 위해 사용했다. SOAP 통신을 구현할 뻔 했지만, 다행히 프로젝트 스코프에서 제외됐다. 프로젝트 시작 전에 SOAP 통신에 대한 이야기를 들었을 때 미리 탐구하고 몇 개 애플리케이션들을 개발해 통신시켜봤기 때문에 큰 문제는 없었을 것 같다. 최근 일본 쪽 프로젝트에서 또 다시 SOAP을 만났는데, 오래된 레거시 시스템들은 여전히 만연하다는 걸 새삼 느낀다.

남은 3주 동안엔 쉬지 않고 개발했다. 우리와 함께한 개발자 분들도 페이스를 맞춰 개발해주셨다. 나는 일에 몰두하는 경향이 있어서 일하는 중간에 잘 쉬지 않는다. 혼자 일하면 상관 없지만, 우리 조직은 항상 페어 프로그래밍을 한다. 이 부분은 피드백을 자주 받았고, 고치고 싶지만 잘 되지 않는다. 함께 페어링하신 분들께 죄송하다. 프로젝트를 배포까지 지켜보진 못 했지만, 일정 내로 마무리 지을 수 있는 기반을 만들고 다음 프로젝트로 떠났다. 프로젝트 기간동안 우리와 함께 일 하면서 많은 것들을 배우고 있다는 고객사분들의 피드백들은 내가 개발자라는 업을 즐길 수 있는 원동력이 되어 줬다.

보통 랩스가 떠나면 조직 분위기에 휩쓸려 테스트 코드 작성이나 페어 프로그래밍 같은 플랙티스들이 잘 지켜지지 않는다. 대기업의 경우 그런 특성이 강한데, 엘더스 팀원분들은 최근까지도 TDD, 페어프로그래밍 같은 플랙티스를 지키면서 개발한다는 이야기를 들었다. 몹(mob) 프로그래밍에 대한 질문도 하고, 우리에게 배운 개발 방법론을 새로운 프로젝트에도 적용해보려 한다는 이야기를 듣곤 기뻤다. 랩스와 함께한 경험이 상당히 인상 깊었다고 나는 믿고 싶다.

EXPO

올해 대부분은 엑스포 프로젝트와 함께 했다. 세 차례 걸쳐서 프로젝트를 진행했다. 처음엔 랩스 팀원들끼리, 두, 세번째는 일본 고객사분들과 일했다. 모바일 웹 애플리케이션으로 기능 자체는 단순하지만, 이 프로젝트를 통해 웹 개발의 매운 맛을 경험했다. 이 프로젝트는 낮은 버전의 사파리와 iOS를 사용하는 아이폰과의 싸움이었다. 브라우저마다 스타일이 깨지는 문제도 있었지만, iOS 버전에 따라 애플리케이션 스타일이 다르게 동작했다. 가진 폰도 제한적이어서 테스트가 어려웠다. 큰 회사들에 QA 팀이 따로 있는 이유를 알 것 같다.

디자이너분들은 구린 애플리케이션을 싫어한다. 디자이너분들과 페어링할 땐 눈이 너무 아프다. 내 눈엔 보이지 않는 픽셀 어긋남, 색상, 질감 차이를 기가 막히게 찾아낸다. 그럼에도 함께 일하면 작은 요소가 프로덕트에 미치는 영향과 완성도 차이들을 피부로 느낄 수 있어서 좋다. 나도 프로로써 완성도 높은 제품을 사용자들에게 딜리버리(delivery)하고 싶은데 이를 가능하게 만들어주는 디자이너분들께 항상 감사하다. CSS, 애니메이션 처리하는 스킬도 정말 많이 늘었다.

이 애플리케이션엔 다양한 애니메이션들과 많은 이미지, 그래픽들이 사용됐다. 리소스(resource)가 많은데 앱을 사용하는 장소의 네트워크가 좋지 못하다보니 이런 문제를 해결하기 위해 고민하면서 새로운 것들을 배웠다. 캐시 컨트롤(cache control), CSS 코드 최적화, 리액트 메모리와 렌더링 속도 최적화, 라이트하우스(lighthouse)를 통한 성능 분석 방법 등 배운 내용들을 블로그에 정리하면서 내 것으로 만들기 위해 노력했다.

첫번째 프로젝트에선 서버가 없었고, 두번째 프로젝트부터 백엔드 애플리케이션을 개발했다. 엘더스 프로젝트가 끝나면서 이 프로젝트 중간에 다시 합류했다. 코틀린, 스프링으로 개발 중이었는데 코틀린으로 딜리버리한 적이 없어서 걱정했다. 급작스럽게 투입되었기 때문에 프로젝트 투입 전후 2주 정도를 밤 세워가며 코틀린을 공부했다. 문법이 간결해지는 장점은 있지만, 아직까지 난 자바가 좋다. 코틀린으로 백엔드 애플리케이션을 딜리버리할 수 있는 경험은 굉장히 좋았다.

세번째 엑스포는 프로덕트를 확장하기 위한 고민을 많이 했다. 고객사분들도 단발성 애플리케이션이 아니라 비즈니스가 있는 플랫폼을 만들길 원했다. 도메인과 패키지를 정리하고, 기능 확장이 예상되는 부분은 인터페이스로 추상화했다. 프로덕트 결이 완전히 달랐기 때문에 공통으로 사용하는 사용자 도메인과 인증, 인가 처리를 합치는게 문제였다.

  • 2차 프로젝트 때 사용자 도메인에 너무 많은 기능들이 모여있었다. 일회성 행사였기 때문인지 몰라도 도메인 설계에 대한 고민이 거의 없이 설계된 상태였다. 얽히고 설킨 엔티티 의존성을 뜯어 내는 작업에 손이 많이 갔다.
  • 기존 AAD(Azure Active Directory) 로그인 기능을 위해 애저(azure)에 특화된 spring-cloud-azure를 사용하고 있었다. 라인 로그인 기능이 추가되면서 이 의존성이 문제가 됐다. 스프링 OAuth2 클라이언트로 마이그레이션하기 위해 내부 코드를 살펴보면서 설정과 스프링 빈들을 정리했다.

프로젝트 내용과 별개로 일본 출장도 좋은 경험이었다. 일본 현장에서 고객사분들과 함께 일하니 언어의 중요성을 새삼 깨달았다. 영어, 일본어에 모두 능숙힌 랩스 팀원분들이 계셨는데 보면서 대단하다고 느꼈다. 외국어를 잘하는 것이 커리어 발전으로 이어진다는 확신도 들었다. 나의 활동 무대도 한국에 한정되지 않는다는 점이 매력적이다. 24년 말에는 영어, 일본어 모두 지금보다 더 나아지도록 노력해야겠다.

블로그

23년엔 118개 글을 작성했다. 한 달에 평균 10개 정도씩 올린 셈이다. 이제 3년 정도 운영했지만, 글 쓰는 일은 아직도 어렵다. 짧게는 3~4시간, 길게는 8시간 정도 걸리다보니 본업과 가정이 있는 나로써는 정말 시간을 쥐어 짜면서 블로그를 운영하는 셈이다. 블로그 성장률을 보면 작년에 비해 낮다. 오히려 연말에는 사용자 수가 더 줄었다.


글 솜씨는 점점 좋아지는 것 같은데 문제가 뭘까? 나는 블로그를 운영하면서 몇 가지 실험을 해본다. 작년엔 외국쪽 사용자 유입을 늘려 보고 싶어서 글 제목이나 내용 헤더는 모두 영어로 써봤다. 효과는 그다지 없었다. 올해는 다른 실험을 해볼 생각이다. 원래는 경어체(-입니다)로 글을 작성하고 있었는데 올해는 평어체(-이다)로 써볼 생각이다. 최근 집필 중인 책의 내용을 평어체로 쓰면서 나의 경험이나 지식을 자연스러운 흐름으로 표현하기 편하다는 느낌을 받았다.

블로그는 시간을 들이는 것에 비해 선순환 피드백이 느린 것 같다. 정말 많은 시간을 블로그와 함께 보내지만, 애드센스 광고도 별 볼일 없는 수준이고 글을 읽은 사용자들의 피드백도 많이 없다. 그래도 종종 링크드인 메시지나 블로그 댓글로 “도움이 된다”, “감사하다”는 피드백들을 받을 때면 정말 뿌듯하다. 내가 소프트웨어 개발자로 살아가고 있다는 발자취가 여기에 쌓이고 있다는 느낌을 받는다. 호랑이는 태아나서 가죽을 남기고 사람은 태어나서 이름을 남긴다는데 나는 블로그를 남겨야겠다.

앞으로

마지막으로 올해 계획을 정리한다.

책 집필

최근 스프링 시큐리티(spring security)를 주제로 책을 쓰고 있다. 블로그 글을 통해 출판사로부터 연락 받았다. 강의나 책 집필 제의 같은 것들이 종종 블로그 글을 통해 오긴 하지만, 모두 거절했다. 주제가 너무 어렵거나 시간을 할애하는 것이 부담스러웠다. 스프링 시큐리티에 대한 책 집필을 수락한 이유는 여러 프로젝트를 통해 경험을 쌓았고, 예전에 스프링 시큐리티를 분석하면서 써놓은 글들이 있었기 때문이다. 요약해서 말하면 만만히 봤다.

요즘 나는 책 쓰는게 어렵다고 와이프에게 매일 같이 징징거린다. 블로그 글처럼 작은 주제로 쓰는게 아니다 보니 매일 머리를 쥐어 짜고 있다. 12월은 매니저님이 배려해주신 덕분에 바쁜 일정 없이 책에만 집중할 수 있었는데, 아직도 한참 멀었다. 내 책장에 꽂힌 모든 책들의 저자 분들이 존경스럽다. 직접 경험해보니 책으로 내 이름 석자를 남기는 일이 얼마나 어려운지 새삼 느낀다. 그래서인지 좋은 책을 읽다보면 작가에게 감사함을 느낀다. 이 책을 집필하기 위해 얼마나 많은 시간과 노력을 녹여 냈을까. 나도 올해 안에 남들에게 감동을 줄 수 있는 책을 한 권 써내고 싶다.

주 단위 회고

엘더스 프로젝트 인연으로 고객사 데브 세션에 참여했는데, 거기서 그렙(Grepp) CTO 한기용님이 진행하신 세션이 너무 좋았다. 8월 말에 들었던 것 같은데 아직도 내 기억 속에 남아 있는 것을 보면 굉장히 인상이 깊었던 것 같다. 한기용님은 회고의 중요성을 강조하셨는데 여기서 나는 이런 인사이트를 얻었다.

잦은 회고를 통해 나 자신을 탐구해라.

프로젝트도 잘 진행해보려고 주 단위로 회고하는데, 어째서 난 연말이나 프로젝트가 끝날 때만 회고했을지 의문이다. 올 한해를 보내면서 내가 성장을 느끼는 순간엔 항상 꼬리에 꼬리를 무는 생각을 하고 있었던 것 같다. 내가 진짜 모르는게 무엇인지, 내게 지금 필요한 것은 무엇인지, 내가 장기적인 관점에서 봤을 때 부족한 것은 무엇인지. 앞으로 움직일 방향은 어디일지. 내가 어떤 사람인지 인지해가면서 강점을 살리고 부족한 점을 채우려고 움직일 때 큰 배움을 느낀 것 같다.

주기가 긴 피드백은 적절한 때를 놓치게 만든다. 매주 짧은 시간을 통해 스스로를 돌아보면서 발전할 수 있는 가능성을 내 안에서 찾아볼 생각이다. 길고 거창하게 할 필요는 없을 것 같고 프로젝트처럼 간단한 템플릿으로 매주 회고할 예정이다. 시간이 된다면 블로그에는 월 단위 기록을 남겨야겠다. 25년 1월 1일에 내 회고록 저장소에 52개 기록이 남아 있길 바란다.

짧은 주기의 피드백을 통해 삶을 Build, Measure, Learn

1일 1커밋, StackOverflow, 독서 그리고 블로그

성공한 작년 목표들은 올해도 이어서 한다. 금연도 1년만 한다고 성공이 아니지 않은가. 평생할 수 있어야 성공이다. 다만 내년엔 정확한 수치를 알 수 있도록 기록을 남겨야겠다. 주 단위 회고를 잘 해낸다면 저절로 이뤄질 것 같다.

  • 어떤 책들을 통해 무슨 인사이트를 얻었는지
  • 다시 정리한 블로그 글들은 무엇인지
안녕히 가세요. 2023년. 어서 오세요. 2024년.

카테고리:

업데이트:

댓글남기기