[회고] 2024년 회고 및 2025년 목표 설정
매 년 회고 포스팅을 작성할때면 연말이 되었음을 실감하곤 합니다. 2024년은 다양한 경험들을 바탕으로 인간적인 성숙함을 많이 기를 수 있었던 한 해 였던 것 같습니다. 올 한 해를 돌이켜보면서 2025년 역시 어떻게 헤쳐나갈지 고민해보도록 하겠습니다.
1. 2024년 회고
[ 2024년의 학습과 자기개발 ]
2024년에는 다음과 같은 학습을 진행했다.
- 1월: 자바 웹 프로그래밍 next step & 김영한의 실전 자바 기본편 & 책은 도끼다
- 2월: 코틀린 쿡북 & 백명석의 클린 코더스 & 행복의 기원
- 3월: 코틀린 인 액션
- 4월: 이펙티브 코틀린
- 5월: 구글 엔지니어는 이렇게 일한다 & 1만 시간의 재발견
- 6월: 좋은 코드, 나쁜 코드 & 조영호님 DDD의 사실과 오해
- 7월: 오브젝트
- 8월: 프로그래머, 열정을 말하다 & 인프콘
- 9월: 스트리트 코더
- 10월: 파이브 라인즈 오브 코드(five lines of code) & 어떻게 사랑할것인가
- 11월: 단위 테스트
- 12월: 스프링 공식 문서 & 전진의 법칙
토스로 이직을 하게 됨에 따라 회사의 기술 스택 중 하나인 코틀린 숙련도를 높이고자 했고, 책 3권과 공식 문서 그리고 코프링 관련 영상들을 보면서 학습을 진행했다. 그리고 관련 내용을 정리한 코틀린 입문 포스팅 역시 작성했다.
확실히 자바에 비해 코드가 간결해지고 작성에 편리한 부분이 많다. 하지만 보편적이지 않은 코틀린 특수 문법들을 과도하게 사용하면 코드를 읽는 사람으로 하여금 인지 부하를 초래할 수 있는 요소들이 많이 생기게 되었다. 누군가는 코틀린스럽지 못하다고 이야기 할 수 있겠지만, 내가 원하는 것은 읽고 이해하기 쉬운 코드이므로 지나치게 코틀린 특수한 지양하고 있다.
코루틴에 대해서는 단순한 사용법 외에 깊이 있는 학습을 거의 하지 못했다. 학습할 대상은 본인의 상황과 환경에 따라 달라져야 한다고 생각하는데, 현재 업무에서는 코루틴을 사용할 일이 거의 없었다. 이론적으로 학습하더라도 이를 실무에 적용하는 것이 어려운 상황이라, 코루틴을 학습하는 것은 실용적이지 않다고 판단했다. 물론 틈틈이 관련 내용을 살펴보고 있기는 하다.
이전과 다르게 올 해에는 비개발 서적들도 많이 보았는데, 자세한 내용은 아래에서 살펴보도록 하자.
[ 교양쌓기 ]
초기에는 피드백 내지는 본인의 무지함 등에 대해서 수용성을 높이고자 했지만, 실제로 읽었던 책들이 목표에 부합하는 책들이 아니였기에 목표한 것들을 얻지는 못했다. 대신 해당 책들로부터 개인의 성향은 유전적 요인들과 더 연관이 있겠다는 생각을 했고, 이를 얻으려면 또 다른 의식적인 수련이 필요하겠다는 결론에 이르렀다. 목표 달성에는 결과적으로 실패했지만 다수의 비개발 서적들을 접하며 처음 북카페를 가는 취미도 가져보고, 서점도 자주 들르면서 색다른 한 해를 보냈던 것 같다.
최근에도 사내 라이브러리에 잘못 알고 있었던 내용이 있어서 다른 개발자분께서 이를 알려주었다. 그래서 해당 코드를 뜯어보고 알게된 부분과 수정 예정임을 공유했는데, 그 내용을 작성하는 과정에서 감정이 참으로 오묘했다.
진짜 별 내용 아님에도 불구하고, 이를 인정하는 과정에서 무지함에 대한 부끄러움 내지는 내가 모르다는 것에 대한 부정 등 복합적인 생각이 있었던 것 같다. 하지만 이를 긍정적으로 인정하고 수용해야만 새로운 정보를 상대방이 공유해주면서, 나에게 선순환의 굴레가 생길 것이므로 계속된 수련을 계속 이어나갈 계획이다. 그리고 나 역시도 지금처럼 다른 사람에게 무지함에 대한 비난보다는 공유와 격려의 방향으로 계속해서 접근해야겠다.
[ 루틴 최적화하기 ]
2024년에는 목표로 했던 두 가지 루틴을 정립하지 못했다.
- 주말에도 규칙적인 생활 패턴 갖기
- 영어 학습 시간 확보하기
영어 학습 시간이야 확보하지 못할 것으로 예상하고 있었고, 주말의 규칙적인 패턴을 가지는 것이 제1의 목표였는데, 이 역시도 쉽지 않았다. 원인을 분석해보니 고질적인 불면증으로 인해 평일에 수면을 적절하게 취하지 못하고, 평일에 못잤던 수면을 주말에 몰다보니 불규칙적인 생활을 계속 하게 되었다. 결국 핵심은 평일의 수면인데, 어떻게 하면 잠에 잘 들 수 있을지 모르겠다. 수면 환경을 조성하는 방향으로 생각중인데, 조금 더 고민이 필요할 것 같다.
[ 리마인드 적극 활용하기 ]
리마인드의 활용은 올해 나에게 있어 큰 깨달음 중 하나이다. 매일 아침, 헷갈리거나 체득하지 못한 부분들을 다음과 같이 리마인드하여 연습을 독려하고 있다. 이 중에서 체득한 부분은 지우고, 새롭게 알게 된 것들로 교체하면서 내용을 갱신하고 있다. 올해 읽었던 비개발 서적인 1만 시간의 재발견에서 얘기하듯이 의식적인 연습(deliberate practice) 없이 똑같은 것만 반복해서는 발전할 수 없는데, 이러한 리마인드는 내가 부족한 부분을 채울 수 있도록 하는 훌륭한 보조 수단이다.
[ 스스로에 대해 알아가기 ]
저명한 사회심리학자 팀 월슨(Tim Wilson)은 그래서 우리는 자신에게도 “이방인” 같은 낯선 존재라고 했다. 모든 것을 안다고 생각하지만, 사실은 정말 모르는 게 자기 자신이라는 것이다. 멍청해서가 아니고, 우리의 많은 선택과 결정은 의식을 거치지 않고 진행되기 때문이다.우리의 머리에 떠다니는 생각은 쉽게 보이는 부분이지만, 그것이 우리 행동의 주원인이 아닌 경우가 많다. 행복의 기원 p22
내가 스스로를 너무 모르다보니, 불현듯 내가 이러한 사람이구나 깨달을때면 그 내용들을 정리해두고 있다.
하나 크게 깨달았던 것은 내가 오랜 시간 신중하게 판단한다는 것이다. 예를 들어 아침에 운동을 갈 때에도 “운동 진짜 지금 해야하나?” 혹은 “매일 갈 수 있는 상황인가?” 등을 고민하다가, 내적 확신이 들면 진행하였다. 물론 누군가는 그냥 하면 되는 것을 왜 이렇게 결정 못하냐고 할 수 있지만, 비교적 오랜 기간 고민했고 확신하기 때문에, 한번 결정한 부분은 지속성이 매우 높은 장점이 있었다.
나를 알게 되는 것이 나 뿐만 아니라 다른 사람들과의 사회적 활동에 있어서도 대화를 원활하게 만드는 등 다방면에서 효과가 있었던 것 같다. 앞으로의 인생에서도 스스로를 찾아갈 예정이다.
[ 코드 스타일 ]
이전 직장이었던 네이버에서는 BE 개발자들끼리 모여서 하나의 기능을 구현하는 기능 조직에 있었다면, 토스에서는 하나의 비즈니스 목적을 달성하기 위해 FE, FE, Android, IOS와 같은 개발자들을 포함하여 PM, PD(Product Designer) DA(Data Analyst)가 한 팀으로 모인 목적 조직에 속하게 되었다.
개인적으로는 기능 조직에 속했던 것이 업무적 만족도가 높았던 것과는 다르게, 목적 조직에 속하면서 개발자로서의 가치관을 더욱 굳건히 할 수 있었다. 팀마다 다를 수 있지만, 내가 겪었던 목적 조직은 특히나 기민하게 움직이기를 원했고, 그래서 코드를 빠르게 파악하고 작업을 할 수 있어야 했다. 김범준님께서 EO에서 얘기했던 개발자라고 하면 단순히 코딩하는 사람이 아니라, 코드를 작성하여 주어진 비즈니스 문제를 해결하는 사람이라는 부분을 특히나 실감할 수 있었다. (영상 내용이 좋으니 한번쯤 봐보기를 추천한다.)
빠르게 비즈니스에 기여할 필요가 있었고, 개발자에게는 코드가 그 수단이기 때문에 크게 2가지가 필요했다.
- 원하는 코드를 빠르게 찾기
- 찾은 코드를 빠르게 이해하기
결국 코드가 비즈니스를 표현해야 하고, 그 코드를 바탕으로 커뮤니케이션 해야 함을 다시 한번 깨달았다. 개발 대가인 켄트백의 설계 규칙 내용을 보면 이러한 부분이 특히 드러나고 있다.
- Passes the tests(테스트를 통과한다)
- 가장 중요한 규칙으로, XP는 소프트웨어 개발에서 테스트를 일류 활동으로 끌어올린 혁신적인 도구였기 때문임
- 소프트웨어의 가장 중요한 목표는 의도한 대로 작동하는 것이며, 이를 보장하기 위해 테스트가 존재함
- Reveals intention(의도를 드러낸다)
- 커뮤니케이션은 익스트림 프로그래밍의 핵심 가치이며, 코드가 이해하기 쉬워야 한다는 뜻임
- 코드의 작성 의도를 독자가 이해할 수 있도록 그 의도를 코드에 표현하면 이해를 도울 수 있음
- No duplication(중복 제거)
- "중복 금지"는 모든 것은 "한 번만"이라고 말해야 하며, DRY 또는 SPOT으로도 표현되는 개념임
- 많은 프로그래머가 중복을 제거하는 연습이 좋은 디자인을 이끌어내는 강력한 방법이라는 것을 관찰했음
- Fewest elements(적은 요소)
- 앞의 세 가지 규칙에 부합하지 않는 것은 모두 제거해야 한다는 규칙임
- 미래의 요구사항에 대한 유연성을 높이기 위해 아키텍처에 요소를 추가하는 것이 실제로는 시스템을 수정하기가 더 어렵고 유연성이 떨어지게 만들었음
토스에서의 경험을 통해 기존에 갖고 있던 경향성을 다음과 같이 다듬고 정리할 수 있었다. 구현 수준에서 살펴보면 비즈니스적으로 존재하지 않는 Command-Query 계층, 도메인 이벤트 내지는 추상화까지 기본적으로 사용을 지양하며, 가치 판단을 통해 도입을 고려하는 것이다.
- Simple: 간단한 코드가 읽기 쉽다.
- Pragmatic: 불명확한 미래의 변경을 위해 과도한 엔지니어링하는 것은 당장의 시간 낭비다.
- Represent Business: 코드는 커뮤니케이션 수단이자 비즈니스에 기여하는 도구이므로 비즈니스를 표현해야 한다.
토스 외에도 이를 되새김질 하게 되었던 이유는 여러 가지 멘토링을 하면서 였다. 멘토링을 했던 코드들을 보면 “비즈니스를 구현한다”는 본분을 잊고 작성된 코드들을 여럿 접했는데, 주객전도가 되지 않도록 주의할 필요가 있을 것 같다.
[ 도움을 주는 것은 밑지는 일이 없다 ]
내가 살아 보니까 내가 주는 친절과 사랑은 밑지는 적이 없습니다.
내가 남의 말 듣고 월급 모아 주식이나 부동산에 투자한 것은 몽땅 망했지만,
내가 무심히 또는 의도적으로 한 작은 선행은 절대로 없어지지 않고 누군가의 마음에 고마움으로 남아 있습니다.
소중한 사람을 만나는 데는 1분이 걸리고 그와 사귀는 데는 한 시간이 걸리고 그를 사랑하게 되는 데는 하루가 걸리지만,
그를 잊어버리는 데는 일생이 걸린다는 말이 있습니다.
그러니 남의 마음속에 좋은 기억으로 남는 것만큼 보장된 투자는 없습니다.
사람은 단지 인에서 끝나지 않고 인간, 즉 사람과 사람 사이의 관계가 형성되어야 의미가 있습니다.
- 어떻게 사랑할 것인가, 장영희 -
올해 읽었던 또 다른 비개발 서적 중 하나인 장영희 교수님의 “어떻게 사랑할 것인가”라는 책에 나오는 내용이다.
나는 내가 다른 사람에게 피해를 주거나 빚을 지는 것은 매우 싫어하지만, 다른 사람으로부터의 도움 요청은 가능하다면 기꺼이 받아들여준다. 대학교때부터 회사 생활 그리고 멘토링과 같은 외부 활동 등 인생 전반에 있어서 가능하다면 도움의 손길을 뿌리친 적은 거의 없다. 그러다보니 위의 문구에 많은 공감을 했고, 최종적으로 도움은 양방향이 아니라 쌍방향으로 이루어지는 상호작용임을 깨달았다. 상호작용을 하면서 나 역시 부족한 부분을 채우거나 도움을 받았던 사람들의 선의 그리고 감사함 등을 받으면서 나의 인생은 한껏 풍요로워졌다. 앞으로도 다른 사람들을 도우면서 풍요로운 인생을 이어가야겠다.
[ 기타 등등 ]
위에 것들 외에도 다 적지 못할 정도로 올해는 여러 가지 시도들과 경험들로 다채로웠다. 2025년에도 다양한 인생의 경험을 할 수 있는 한 해가 되기를 기원한다.
- 다양한 멘토링 활동
- 토스 테크 블로그 작성
- 수영 배우기
- 팀의 일하는 방식 개선 시도
- 팀 이동 및 금원 장애
- 남의 눈치를 안보는 선행 목격(한강 공원에서 떨어진 그림을 줍기)
2. 2025년 목표
[ 기초를 탄탄히하기 ]
2025년에는 다음과 같은 내용들을 바탕으로 학습할 계획인데, 요약하면 "기초를 보다 탄탄히 다지는 한 해"가 될 것 같다. 이러한 학습들은 추후에 역할이 확장될 기회가 오거나 문제 상황에서의 대처 능력을 크게 향상 시켜 줄 것이라고 기대한다.
- 책
- 자바
- 모던 자바 인 액션
- 기본기가 탄탄한 자바 개발자
- JVM 밑바닥까지 파헤치기
- Crafting Interpreters 로버트 나이스트롬의 인터프리터 in Java, C
- 레디스
- 개발자를 위한 레디스
- 실전 레디스
- 공식문서
- 스프링
- 스프링 부트 공식문서
- 비개발
- 도둑맞은 집중력
- 88연승의 비밀
- 자바
- 강의
- 김영한 고급 자바 2편
- 기초 탄탄! 독하게 시작하는 Java - Part 1
- 기초 탄탄! 독하게 시작하는 Java - Part 2
- 오브젝트 기초편
- 토비의 스프링6 이해와 원리
- 객체지향 프로그래밍 입문
[ 템플릿 프로젝트 및 샘플 코드 작성하기 ]
2024년에는 감사하게도 여러 기회들을 통해 많은 멘토링 활동을 진행했었는데, 서로 다른 멘토링 활동이였음에도 불구하고 비슷한 내용들을 반복 설명하는 경우가 많았다. 정답이 있는 (지식에 가까운) 영역들은 포스팅으로 작성하여 이해를 도울 수 있도록 했다. 하지만 아키텍처 패턴이나 DTO 구성 등과 같이 정답이 없는 영역들은 포스팅에 작성된 단편적인 내용이 아니라 하나의 교보재 프로젝트를 보는 것이 훨씬 효율적일 것이라는 생각이 들었다. “프로그래머의 뇌”에 따르면 풀이된 예제(worked example)가 제공된 경우에 학습이 훨씬 효율적이었음을 설명하고 있다. 실제로 나의 개발 커리어 초기에도 가장 어려웠던 부분들이었고, 참고 자료 역시 많지 않아서 경험적으로 학습할 수 밖에 없었는데, 교보재를 작성하여 제공한다면 이러한 니즈를 충족시켜줄 수 있으리라 생각한다.
교보재를 위해서는 템플릿 프로젝트를 생성하여 이를 활용하고자 한다. 새로운 서비스를 시작한다고 하면 중복되는 @Configuration 구성 코드부터 application.properties 프로퍼티까지 다양한데, 이를 공통적으로 관리할 수 있는 프로젝트와 이에 대한 레퍼런스를 달아두고자 한다. 이를 통해 어느 회사의 어느 팀에서건 공통적으로 도움이 될 법한 부분들을 작성 및 관리할 수 있을 것이다.
[ 유산소 운동하기 ]
올해 말에 대상포진이라는 질환에 걸렸고, 찾아보니 몸이 맛이 갔을 때 걸리는 질환으로 대게 40~50대 이상이 많이 걸린다고 한다. 감사하게도 통증이나 합병증은 크게 없었어서 약 복용과 함께 넘어갔다.
회사 업무 외에 멘토링과 자기 개발 및 사회 생활 등으로 무리 했다는 핑계를 대고 싶지는 않다. 왜냐하면 나의 몸은 오래 전부터 신호를 보내 왔고, “헬스장가니까 괜찮을꺼야” 라며 특유의 낙관적 자세로 애써 무시하고 외면해왔기 때문이다. 체력의 중요성에 대해서는 드라마 미생에서 나온 문구가 인상적인데, 나의 경우 특히나 뒷심이 부족한 경험이 많았어서 가슴에 와닿았다.
결국 문제는 체력인데, 헬스장에서도 근력 운동 만을 하는 것에 대한 문제 의식은 어느 정도 있었다. 그래서 올해 수영을 잠깐 배우다가 날씨가 쌀쌀해지며 감기와 함께 그만 두게 되었다. 따라서 새해에는 풋살 또는 수영 등의 유산소를 통해 체력 향상을 꾀할 생각이다.
올 하반기에 로제의 APT.라는 노래가 전세계를 뒤흔들었다. 각종 차트 1위는 물론이고 각종 기록들을 써내려가고 있다. “노래 좋네”하고 별 생각 없이 들었는데, 나중에 다음과 같은 내용을 공유받았다.
이미 블랙핑크라는 그룹으로 누군가에겐 충분할 수 있는 성공을 이루었는데도 불구하고 로제는 멈추지 않았다. 그리고 누군가에게는 운으로 보일 수 있는 성공 역시 로제에게는 오랜 인고의 시간 그리고 준비된 결과물이었던 것이다.
우리가 하는 자기 개발 역시 비슷하다고 생각한다. 우리가 투자하는 시간들이 당장의 성공이나 뚜렷한 성과가 없어보일 수 있어도, 부족한 부분을 채우며 꾸준히 준비하다가 시기가 적당히 맞물려지면 분명 빛을 보는 수간이 올 것이라고 생각한다. 때로는 스스로 하는 자기 개발이나 노력들에 확신이 없을 때에도 인내하고 시기를 기다리다 보면 빛을 보는 순간이 올 것이므로, 내년에도 모두 각자의 방식으로 의미있는 한 해를 보냈으면 좋겠다.
다들 2024년에도 고생 많으셨고, 2025년에도 같이 화이팅입니다:)