2022년을 돌아보며…

1. 프리랜서 + 투자 수익으로 생긴 경제적 여유

2022년 9월 말까지 프리랜서로 근무하면서 비교적 많은 수입을 챙길 수 있었다.
이렇게 벌어들인 수익으로 평소 관심 많았던 미국 주식에 적극적으로 참여한 결과, 생각 보다 많은 금액을 부수입으로 챙기게 되었다.

대외적으론 러우전쟁이 발발하고, 미국의 급격한 금리인상을 스타트로 인플레이션이란 단어가 여기 저기서 쏟아져 나왔다.
미리 경제에 대해 공부하면서 금리 인상을 대비했던 투자전략이 운이 좋게도 잘 통했다.

2. 개발자로서 성장에 대한 고민

금전적으로 여유가 생기니, 불현듯 미래에 대한 걱정이 들기 시작했다.
이런 고민을 하게 된 이유는 ‘프리랜서 계약을 연장하느냐, 마무리하느냐’ 라는 선택권이 나에게 있었다는 것이다.

이제껏 사수가 없는 환경에서 개발을 하다보니 극한의 자율성을 가지게 되었고,
내가 작성한 코드에 대해 평가받거나, 설계가 바람직한지 아닌지 판단받을 기회조차 없었다.

만약 이런 상태로 프리랜서 계약을 연장한다면?
경력이 쌓이면서 실력은 제자리 걸음을 할 게 뻔했고, 그런 상태가 된다는게 두려웠다.

개인적으론 ‘안정적이다’ 라는 생각이 드는 그 순간을 가장 경계해야 한다고 생각한다.
그 순간이 자신에 대해 관대해지는 시점이고, 고인물이 되어 썩느냐 마느냐 기로의 분기점이다.

많은 고민 끝에 프리랜서 계약을 연장하지 않는 것으로 결심하게 되었고
본격적으로 이직 준비에 전념하게 되었다.

3. 우테캠 Pro + 이직 도전

이직을 생각함과 동시에 개발자로서 한 계단 성장하기 위해 우테캠 Pro 에 지원하게 되었다.
과정 자체가 재직자 대상이기 때문에, 이직에 성공하더라도 교육과 병행할 수 있을거라 생각하고 대수롭지 않게 지원했다.
우테캠 Pro 에 지원하면 프리코스라는 사전 과제와 지원 자소서를 같이 작성해서 제출해야 하는데,
이 프리코스라는게 생각했던 것 보다 까다롭고, 시간이 많이 걸리게 되어 당황했었다..!

이직을 도전하자마자, 적절한 사수를 둔 개선된 환경에서 개발할 수 있는 프로젝트의 프리랜서 계약을 앞두고 있었다.
하지만 급격히 침체되는 경기사정으로 인해 프로젝트는 엎어지게 되었고, 졸지에 백수가 되었다….

한편, 지원했던 우테캠 Pro 과정은 합격하게 되어, 교육과정을 성실히 소화할 수 있었다.
백수로 지내는 시간을 ‘오히려 좋아!’ 라는 마인드로 적극적으로 참여하여 우수 수료생으로 선정된 것 만으로도
만족하며 이번 해를 잘 마무리 할 수 있었다.

Good

객체지향 개발자로의 성장

교육에 참여하면서 개발에 대한 정보들을 수집하기 시작했고,
여러 기술에 대한 개념들을 학습하기 시작했다.

그리고 드디어 그 유명한 토끼책(객체지향의 사실과 오해)를 접하게 되었고,
객체지향에 대한 생각이 180도 바뀌게 되었다..!

책에서 정의했던 객체지향이란 역할, 책임, 협력관점에서 객체지향을 바라보는 것이었다.
저자인 조영호님이 독자에게 물어보던 ‘객체지향이란 무엇인가?’ 에 대해, 나름의 답을 찾는 시작점이 되었다.

우테캠 Pro 를 수강 중 JPA, DDD 같은 개념도 학습하게 되었다.
공부하고 나니 내가 이해한 JPA, DDD 의 근본적인 개념에는 객체지향이 동반되어 있었다.

JPA는 객체지향을 조금 더 객체지향스럽게 쓰기 위한 기술이었고,
DDD도 개발자가 진짜 객체지향을 적용하기엔 현실에서 극복해야하는 문제점에 대해 해결책을 제시하는 것이라는 생각이 제일 먼저 들었다.

  1. 프로젝트 참여자 모두 동일한 도메인(객체)를 정의하고 공유하고 있어야한다.
  2. 그래야 서로 의사소통이 원활하고, 용어가 통일되며, 좋은 설계의 기반이 된다.
  3. 각 도메인에 대한 이해도가 높아질 수록, 바운디드 컨텍스를 명확하게 나눌 수 있는 근간이 되고
  4. 기타 등등…

이런 과정을 겪으며 객체지향에 대해 곰곰히 생각해보면서,
‘객체지향이란 무엇인가?’ 라는 조영호님의 질문에 내 나름의 답을 내릴 수 있게 되었다.

객체지향은 네트워크이다

객체지향의 가장 핵심적인 기능 중 객체 그래프 탐색이 있다.
그래프를 탐색한다는 것은 객체와 객체간 관계가 있기 때문이다.
(테이블도 조인이라는 기능을 통해 관계있는 테이블 간 탐색이 가능하다.)

거꾸로 생각해보면 관계를 가지는 요소들을 프로그래밍 세계에서 표현할 수 있는 가장 좋은 자료구조는?
바로 그래프 이다.

그래프는 점과 간선으로 이루어진 자료구조이다.
여기서 점은 객체로, 간선은 객체간 관계로 표현할 수 있다.
특히 객체 그래프의 관계라는 간선은 Association, Aggregation, Composition 등으로 분류할 수 있다.

시스템의 모든 객체 간 관계를 그래프로 그려보면, 그 계(System)는 하나의 네트워크로 구성될 수 있다.

따라서, 조영호님의 객체지향에 대한 정의에, 나의 생각을 가미하여 조금 더 확장해 보자면,
객체 각자의 역할과 책임을 가지고 자유롭게 탐색하며 협력하는 네트워크 시스템이 바로 객체지향이라고 말할 수 있다.

‘붕어빵 틀과 붕어빵’, ‘실세계를 기반으로 추상화한 설계’ 라는 객체지향에 대한 주입식 정의에서 벗어나서
진짜 객체지향을 접하고, 그 개념을 나름의 생각을 기반으로 정의해보았다.

정의를 내린 것에 의의를 두지 않고, 이렇게 생각을 확장해보는 과정이 매우매우 즐거웠다.

Bad

시간 돌려막기

돌이켜 보니, 개발자로서 가장 치명적인 습관을 가지고 있었다. 바로 ‘시간 돌려막기’이다.


경제적 자유를 얻기 위한 추상적인 프로세스는 다음과 같다.

  1. 돈을 저축한다
  2. 저축한 돈으로 투자한다
  3. 돈이 돈을 부른다
  4. 투자 수익금으로 다시 투자한다.

이 프로세스를 ‘학습’에 적용해도 동일하다. 다만, 학습에 필요한 자원은 시간이라는 점에서 차이가 발생한다.

  1. 시간을 확보한다
  2. 확보한 시간을 학습하는데 사용한다
  3. 학습했던 것들은 다른 개념을 학습할 때 시간을 단축 시키게 된다.
  4. 단축한 시간을 또 다른 것을 학습하는데 사용한다.

나는 학습 프로세스에서 1번도 제대로 지키지 못하고 있었다.
시간을 허비하면서, ‘아 내일 하지 뭐~’ 라는 시간 돌려막기를 하고 있었던 것이다.

2000년대 초반 카드 대란을 겪었던 근본적인 이유는
카드 돌려막기(일명 카드깡) 이었던 것처럼,

개발자에게 있어서 커리어를 가장 빠르게 망칠 수 있는 길은 시간 돌려막기라는 생각이 들었다.
(심지어 시간은 대출도 안됨)

해결책 : 내가 만약 국가대표라면?..

공교롭게도 2022년 카타르 월드컵이라는 또 다른 시간 돌려막기를 하던 중에 해결책을 발견하게 되었다.

월드컵을 조금 집중해서 보다보니 자연스럽게 손흥민과 그의 아버지 손웅정 감독님에게 관심이 가기 시작했다.
손웅정 감독님은 무엇보다 기본기를 중시했다. 또한 축구를 위한 몸의 밸런스, 볼 감각 세 가지로 압축했다.
이런 철학을 바탕으로 손흥민은 어릴때부터 리프팅, 간결한 볼 터치, 양발 사용, 등등…
나이에 맞는 체력훈련 등으로 세분화한 훈련을 받으며 조련됐다.

일례로, 어떤 훈련은 양발 리프팅으로 운동장 3 바퀴를 도는 게 목표였는데,
만약 한번이라도 공을 땅에 떨어트리면 다시 바퀴수 카운트를 0부터 시작하는 방식으로 훈련했다고 한다.

손웅정 감독님의 훈련 철학을 알게되고나니, 나의 모습이 더더욱 부끄러워졌다.

적어도 축구선수 라는 타이틀을 달고있는 사람들은 엄청난 양의 훈련을 매일 같이 똑같이 한다.
그렇다면 나는 개발자 라는 타이틀을 달만한 전문성을 띄고 있을까? 전문성을 위한 훈련을 어느정도 꾸준히 하는가?
이 질문에 당당하게 ‘그렇다.’ 라는 답변을 못할 것 같다.

모든 분야에 통용되는 말이지만 운동선수처럼 노력하면 어떤 것이든 성공할 수 있다.
그 과정에서 모두에게 똑같이 제공되는 자원은 바로 시간이다.

시간이란 자원은 절대 함부로 쓰면 안된다.

2023 목표!

사이드 프로젝트

투자를 위해 매일같이 확인하는 지표들이 있는데,
이런 지표들을 하루 하루 수집해서 장마감에 맞춰 메일로 보내는 배치프로그램을 작성하고 싶다.
웹으로도 간단하게 배포해서 ‘내가 필요한 서비스를 직접 구축’해보는 경험을 하고싶다.

글쓰기 연습

개발자에게 가장 필요한 능력을 두 개 뽑으라고 한다면,

첫번째로는 개발 실력이고
두번째로는 의사소통 능력이 가장 중요하다고 생각한다.

나는 두 가지 모두 향상 시킬 수 있는 방법으로 글쓰기를 선택했다.

글쓰기 연습 1) 기술 블로그

기술 블로그에는 앞으로 꾸준히 Back-end 기술 위주로 포스팅 할 예정이다.

이전에는 특히 Why 에 집중해서 글을 작성했었는데,
앞으로는 간단한 예제로라도 How 까지 작성할 예정이다.
또한 그 개념이나 기술에 대한 나의 생각 까지 가미해 보려고 한다.

글쓰기 연습 2) 개인 블로그

경제 관련된 포스팅 위주이긴 하겠지만, 여러 문학작품에 대한 후기, 개인적인 생각,
일기, 독후감 등등 다방면으로 포스팅을 해보려고 한다.

Spring 프로젝트 기여

가장 어려운 목표겠지만…
Spring 프로젝트 기여하는 것에 도전해 볼 예정이다.

우선, ‘Spring 에서 찾을 수 있는 디자인 패턴’ 시리즈로 글을 쓰면서
디자인 패턴도 공부하고, Spring 의 여러 프로젝트들을 찍먹해 볼 예정이다.

Spring-Projects Repository에는 무려 79 개의 프로젝트가 존재한다.
이 중에 내가 기여할 수 있는 부분이 1개 라도 있지 않을까? 🧐