2021-01-01

욕심을 버리는 한 해가 되자.

올해에는 내 성격(조급한 마음, 예민한 마음, 서두르는 마음)을 고치자.

2021-01-02

새벽 배포 작업을 마쳤다.

2021-01-05

일단 결정했으면 오래 붙들고 있는 거, 대단한 능력이다.

2021-01-09

조급해하지 말고, 중요한 일을 제일 먼저 하자. 급한 일보다 중요한 일 먼저. 어렵지만 해보자. 할 수 있다.

지난 6개월을 돌아보니 와장창 실수 대행진과 자신감 폭락 뿐이었던 것 같은데, 가만히 생각해보니 좋은 일도 많았다. 내 두뇌가 안 좋았던 것들만 과장해서 회상하는 것 같다.

좋았던 일, 즐거웠던 일을 떠올리자.

2021-01-13

퇴근길. 윌라로 오디오북을 듣고 있다. 가입하면 한 달 무료. 넷플릭스 창업자 마크 랜돌프의 "절대 성공하지 못할 거야"로 첫 책 시작. 되게 흥미로운 제목인데 처음 온라인 비디오 배달 사업 구상을 할 때 랜돌프의 아내가 웃으면서 “절대 성공하지 못할 거야”라고 했던 말에서 나온 것이라 한다.

2021-01-14

불량 모니터 반품하고 새 모니터를 사서 설치 완료. 잘 나오니 상쾌하다. 좀 피곤하긴 하다. 책상과 방은 난장판이 됐다. 이제 치워야지.

2021-01-15

유튜브 "인기"를 눌러보면 재미없을 것 같은 영상들만 줄줄이 나오는데 내 취향이 트렌딩에서 많이 떨어져있기 때문인 것 같다. 아무리 스크롤을 내려봐도 보고 싶은 게 전혀 없음. 한편 홈은 내가 자주 찾아보는 영상과 비슷한 영상을 많이 보여줘서 별로 신선하지 않다.

새로운 영상을 발견하려면 어떻게 해야 하나? "최근 인기 동영상"도 쭉 내려 봤는데 모두 내 취향과 전혀 맞지 않아서 클릭하고 싶은 영상이 없다.

2021-01-16

어렸을때부터 게임을 참 좋아했고 아직도 게임을 많이 하고 싶은데 그러면서도 게임이 전혀 하고 싶지가 않다. 게임을 하면 불안할 것 같고, 마음이 초조할 것 같다. 내가 자기계발로 인한 불안감에 빠진 상태인 것 같다.

작년 7월 무렵부터 급격한 기억력 저하로 엄청난 스트레스를 받았는데, 최근 동료들에게 털어놓고 나서 마음이 조금 편해졌다. 동료들은 업무 스트레스 때문에 그런 거 아니냐고 걱정해주시던데 음 뭔가 부정적인 루프가 있었던 듯.

2021-01-24

오후 2시부터 3시까지의 낮잠이 몸과 마음의 건강에 도움이 되는 것 같다. 하루에 30분 이상 낮잠을 자려면… 회사를 다니면서는 힘들겠구나. 점심시간에 20분 정도 잠깐 자는 수 밖에는 없는 걸까.

2021-01-31

가슴이 답답하다. 나에게 부족한 것만 자꾸 생각하는 나날이다. 내가 이미 갖고 있는 것들, 행복한 것들을 생각하자. 나는 지금도 행복하다.

2021-02-05

FireFox의 vim 플러그인인 Tridactyl 을 쓰기 시작했다.

2021-02-11

산의 심장이자 보석 중의 보석인 아르켄스톤을 빌보 배긴스가 훔쳤을 거라고 의심한 소린이 빌보를 돌려세우자 빌보가 도토리 하나를 들고 있었다는 사실이 드러난 장면을 좋아한다. 고향에 돌아가면 이 도토리를 심어 나무로 기를 거라고 대답하는 그가 기억에 오래 남는다.

이때 빌보 배긴스가 진짜로 아르켄스톤을 간직하고 있었지만 어떠한 탐욕도 없었다는 것이 절묘한 점. 그러나 그렇게 순수한 마음과 우정을 지닌 그가 샤이어로 갖고 간 것이 골룸에게서 훔친 절대반지라는 것이 아이러니하다.

2021-02-13

개인 프로젝트 안 한지도 너무 오래됐다. 집에서 퇴근 후에도 회사 일만 하고 있는 자신을 인지할 때 현타가 오는데 뭔가 다시 몰두할 만한 걸 시작하고 싶다. 요즘은 그냥 블로그만 하네.

2021-02-19

"칭찬은 고래도 춤추게 한다"라는 말을 들을 때마다 생각나는 것이 있다. 아마 사기꾼은 다른 사람을 조종하기 위해 칭찬하는 스킬부터 익힐 거라는 거.

2021-02-20

듀오링고 777일 달성.

하루에 한 번씩은 블로그에 글을 쓰거나, 문단 하나 정도를 추가하거나, 있던 글을 수정하거나, 적어도 오타라도 찾아서 고친다. 이게 벌써 3년이 넘었네… 이젠 개발보다 블로그 관리가 더 재미있다.

생각해보니 그냥 블로그에 글 쓰고 오타 찾아서 고치고 하는 게 내 가장 큰 개인 프로젝트인 것이다. 별 거 아니지만 내가 행복하니 됐다.

2021-02-25

오늘은 너무 힘든 날이었다. 삶이 고단하다. 그러나 힘내야지.

불평하지 말자.

2021-03-01

귀멸의 칼날 무한열차 보고 왔다. 막바지에 눈물 펑펑 쏟았네.

2021-03-04

제대로 일하고 싶다 좀

2021-03-06

하루에 딱 한 가지만 하려 해야지. 여러 가지 하려다가 한 가지도 못 해내는 날이 수두룩하다.

2021-03-08

동료들과 이야기하다 내가 입사한 후 업무와 별개로 팀을 위해 내가 가장 노력했던 건 팀에서 관리하고 있는 코드의 하한선을 높이는 활동이었다는 것을 깨달았다. 그리고 상당한 수준으로 성공했다는 것도 깨달았다. 은연중에 알고는 있었지만 어쩌다 표현을 하고 보니 확 와닿았다. 해낸 것이다.

환상적이라거나 엄청 멋있는 일을 한 것과는 거리가 멀었다. 그러나 내가 한 일은 분명 가치있는 일이었다. 지난 1년 4개월은 헛되지 않았다. 조금 감동했지만 좀 더 생각해보니 엔지니어라면 당연히 해야 할 일이었다.

내가 해야 하는 업무와 별개로 그 하한선을 천천히 높여가는 같은 일을 다시 해야 한다면 더 잘 할 수 있을 거라 생각한다. 이미 해봤으니까. 어느 팀에 가건, 어느 회사에 가건 더 잘 할 수 있다고 생각한다.

내가 평생 바라는 것은 무언가를 해내는 사람이 되는 것이다. 나는 내 단점도 아주 잘 알지만 그래도 내가 만족한 하루를 얻었으니 오늘은 스스로를 축하하고 칭찬하며 잠들 수 있겠다. 걱정도 근심도 많은 요즘이지만 적어도 오늘 저녁 퇴근하는 동안 나는 내가 바라는 인물에 가까운 사람이었다.

2021-03-12

같이 일하는 동료가 나한테 잘해주면 내가 잘나서 그러는 게 아니라 그 사람 인품이 좋아서 그러는 것일 가능성이 높다는 것을 잊지 말자. 그리고 고마워할 줄도 알자…

고맙다고 말할 타이밍 놓쳤다고 잠자코 있지 말고 꼭 말해야지. 쑥쓰러워도 말할거야.

2021-03-16

듀오링고 800일.

2021-03-18

회사는 내가 시니어이길 바라는데 내가 생각하는 나는 시니어가 아니고… 조금 우울하군. 하지만 최선을 다 해야지.

2021-03-19

  • 온라인이건 오프라인이건 남을 무시하는 말을 하는 습관이 있는 사람을 조심해야 한다. 혹시 내가 그런 사람이 아닌지도 늘 생각하자.
  • 언젠가부터 휴대폰으로 게임을 전혀 하지 않는다. 다른 사람들도 그럴까? 일단 내 경우엔 유튜브와 전자책 앱이 게임 앱을 완전히 대체해버렸다.

2021-03-21

난 코딩하는 것보다 생각하는 것, 생각하는 것보다 공부하는 것을 더 좋아하는 것 같다. 충분히 생각하지 않고 바로 손을 올려놓는 코드 작성은 나에게는 그닥 속도가 안 나는 것 같다. 예전엔 안 그랬는데 이젠 성향이 바뀐 것 같기도 하다.

2021-03-23

김창준님의 더 많은 일을 하면서 더 빨리 하기는 벌써 꽤 오래된 글이지만 언제 읽어도 용기와 영감을 얻는다. 특히 나처럼 공부하는 사람에게 너무 좋은 글이다.

2021-03-26

10년 후에 나는 어떤 일을 하고 있을까? 지금 무엇을 해야 10년 후에 후회하지 않을까?

2021-03-28

명료하게 생각하고 싶다.

알고 있다. 내가 나 정도면 조금은 잘 한다고 할 수 있겠지.. 싶을 때가 제일 위험하다는 것. 다만 요즘 못하는 게 너무 많아서 시시각각 자괴감이 드는데 이런 하나의 감정이 몹시 소중한 것이다. 내가 코딩도 못하고 이것도 못하고 저것도 못하지만 이거 하나는 그래도 조금은.

그래서 회사생활이 두렵다. 어떤 마음가짐을 갖고 일하는 것이 좋을까? 떠날 곳이라 생각하고 일하는 것은 자본주의 사회 속 현대인의 상식이지만, "마지막 회사"로 생각하고 "내 회사"로 생각하고 일할 수 있는 곳을 과연 언젠가는 만날 수 있게 될까. 그런 회사는 만나는 것일까 만드는 것일까.

지금 회사로 이직하던 날 생각했다. 여기서는 얌전히 있지 말자. 그랬더니 회사가 바뀌어갔다. 나 혼자만의 힘으로 된 것은 아닐 것. 회사가 바뀌어가는 과정에 내가 입사했기에 그렇게 보인 것일 수도. 설령 인과 없이 수반된 사건이라 하더라도 내 행동에 따라 환경이 바뀌어가는 경험은 놀라웠다.

행복한 경험이다. 주목을 받게 되니 하는 일도 조금씩 바뀌어간다. 시선과 기대가 느껴진다. 회사에서 말을 가려 하는 것은 당연한 일이지만 한두 번씩 더 생각하고 말하게 되었다. 더 신중하게 행동할 수 있으면 좋겠다. 품위에 대해 생각한다. 장인의 품위를 갖고 싶다. 품위있게 일하고 싶다.

회사원으로서의 나는 일을 더 잘 하고 싶을 뿐이다.

2021-04-04

재미는 평균적으로 친절하고 재치있는 동료들에게서 얻는 경우가 더 많았다. 친절하고 재미있고 건강한 표현을 사용해 말을 하는 동료들이란 얼마나 소중한지.

하지만 지구상 어디엔가는 정말 재미있는 일을 하는 회사가 있지 않을까. 그런 회사를 한번은 다녀보고 싶다. 그런 회사는 어디에 있을까. 아 이런 생각을 하니 너도나도 자기네 회사가 재미있을 거라고 하는 거구나.

2021-04-05

스스로 자기 인성 나쁘다고 자랑스럽다는 듯이 말하는 사람과 어울릴 생각은 없다. 돌아보면 평생 너무 많은 시간을 그런 사람들에게 허비한 것 같다.

2021-04-06

마켓컬리 채용 설명회 라이브 유튜브에 출연했다. 나는 1:12:40 즈음부터 나온다.

2021-04-10

남들 다 하는 것 같다고 나까지 할 필요가 없었던 것들을 생각한다.

2021-04-15

나는 생각보다 중요한 사람이 아니며 주위 사람들은 내 생각보다 나에게 별로 관심이 없다는 것을 깨닫은 것은 중요한 일이지만 너무 잘 깨달아도 문제인 것 같다. 하지만 이걸 너무 늦게 깨달아도 곤란.

2021-04-24

스마트 민방위 교육을 들었다.

2021-04-27

4월 24일부터 Jim Gray의 1981년 The Transaction Concept: Virtues and Limitations를 읽고 있다. 유머러스한 설명이 있어 참 재미있다. Jim Gray의 실종이 안타깝다.

2021-04-28

자신을 프로라고 생각하고 프로답게 행동하자.

2021-05-01

전직장 여기저기에 문구가 붙어있었다. "나도 누군가에겐 회사다" 회사를 욕하는 사람들을 살펴보면 회사가 싫기보다는 상사나 동료가 싫은 경우가 꽤 있다는 데에서 착안한 문구라고 기억. 나도 누군가에겐 회사일 수 있으니 주위를 돌아보고 언행을 신중히 해야 한다. 회사는 나만의 공간이 아니다.

특히 회사 내에서 영향력을 가진 사람이라면 더더욱 주의해야 한다. 내가 던진 농담 한 마디는 내가 던진 "웃자고하는 이야기"가 아니라, 누군가에게는 회사를 평가하는 기준이 된다. "구질구질하고 혐오스러운 말이 오가는 이 회사 확 퇴사하고 말지…" 같은 생각을 하게 된다는 것.

판타지소설에 나오곤 하는 인과율을 생각한다. 영향력이 있는 인물일수록 원인과 결과를 고려해 말하는 이들이 존경받는 듯하다. 내 영향력이 작다면 인과율의 제약도 적다. 그러나 영향력이 크다면, 즉 이끄는 조직의 규모가 크다면 인과율의 제약을 고려해야 한다. 말과 행동에 원인이 있어야 한다.

2021-05-15

유명한 재벌2세에게 거대한 오토바이를 선물받아서 맨몸이어도 어려운 높은 계단을 오토바이로 부왕 올라갔다가 다시 내려온 꿈을 꾸었다. 오토바이 힘이 대단해서 평소 생각도 못한 계단 오르내리기가 되어서 신기했다. 헬멧이 없어서 집에 어떻게 가져가지 하다가 꿈에서 깸. 하하 개꿈이네.

2021-05-19

2017년부터 써온 맥북 프로의 usb-c 포트 4개 중 하나가 먹통이 됐다. 으어.

2021-05-30

중요하지 않은 것들을 적당히 무시할 수 있어야 현명하다.

2021-06-08

인터랙티브 디벨로퍼 김종민님의 “일은 배신하지 않는다”를 끝까지 읽었다. 읽으며 여러 감정이 밀려와 몇 번씩이나 눈물이 났다. 특히 마지막 401~463페이지가 참 좋았고 기억에 오래 남을 것 같다.

김종민 님의 구글 입사 과정은 놀라운 이야기였지만 일에 대한 자세와 접근 방법, 삶의 철학 등에 대한 그분의 이야기가 좋았다. 내가 할 수 있었던 일들과 내가 선택하지 않았던/못했던 것들을 생각해 본다. 내 주위도 둘러본다. 나 자신에 대해서도 다시 생각해 본다.

2021-06-11

하하 전문가가 되고 싶다.

2021-06-29

회사 동료가 내 블로그 rss를 구독하고 있다고 한다. 업데이트가 올라올 때마다 열심히 살아야지 한다고. 내가 뭔가 하고 있는게 다른 사람에게 의욕을 준다니 나도 포기하지 말고 열심히 살아야지.

2021-07-02

요즘 능력의 한계를 느낀다. 힘들다. 해낼 수 있을까. 이번에도 할 수 있겠지. 힘을 내자.

2021-07-04

취미를 생각해보니 듀오링고 뿐이어서 뭔가 서글프다. 예전엔 게임을 참 좋아했고 책도 다양하게 읽고 운동도 나름 열심히 했고, 영화도 열심히 보러 다녔는데.. 2011년부터 게임은 가끔 폰으로 퍼즐 게임이나 잠깐 하는 정도고 책도 대부분 개발책 뿐. 운동은 이제 거의 안 한다.

지인과 친구들도 많아 주기적으로 모여 이야기도 많이 했지만 살다 보니 연락이 많이들 끊겼다. 먹고 살기 위해 자기개발에만 집중하다 보니 많은 것이 풍화된 느낌. 전염병 시국이나 어서 끝났으면 좋겠다.

난 이야기하는 것을 좋아한다. 사람들이 내 이야기에 귀를 귀울여줄 때 대단한 행복감을 느낌. 2020년 판데믹 이후에 깨달은 것은 내가 스스로 내성적이라 생각했던 내 성격이 착각이었다는 것. 나는 사람들과 만나 이야기하는 것을 좋아한다. 몇달간 재택한 끝에 얻은 깨달음이었다.

그래서 대화하며 작업하는 짝코딩, 코드 리뷰도, 화이트보드에 낙서하며 같이 코드 디자인 궁리하는 것도 좋아한다. 같이 이야기하는 분이 생각을 구체화하기 위해 말을 멈추고 천장을 보는 순간 같은 것도 엄청 좋아한다. 어떤 이야기가 나올까. 회의를 하며 다른 분들 말을 기록하곤 한다.

요즘 괴로운 것 컨텍스트 체인지. 이거 했다 저거 했다 반복되는데 내 메인잡과 관련된 컨텍스트가 기억 안 남. 다른거 하고 오면 동료들은 이미 저만큼 작업해놓고 논의도 끝내놨음. 자괴감 생기고 동료들에게 죄송한 마음. 무능감 때문에 매일 감정이 바닥으로 떨어진다. 피터의 법칙 생각이 난다.

음~ 모르겠다. 이럴 시간에 공부를 하거나 문서를 읽자.

2021-07-05

지난 3달간 생각만 한 걸 이제 했다. wiki 디렉토리 하나에 모든 문서가 들어가 있는게 그동안 계속 신경쓰였는데.. 이제 서브 디렉토리를 만들 수 있게 작업했다. vimwiki까지 뜯어고치거나 포크해서 다른거 만들까 했었지만 커스터마이징 필요없었고 데이터 수집 js 파일만 몇 줄 고침. 후련하다.

이제 짬날 때마다 하나씩 하나씩 디렉토리 만들어서 옮겨야지. 하나하나 써온 블로그에 벌써 마크다운 파일이 581개. 관리하기 점점 힘들어졌는데 아주 조금만 고쳐서 이렇게 운영할 수 있어 기쁘다.

전혀 난이도 높은 작업이 아니었다. vimwiki는 이미 \[[dir/filename]]\[[/dir/filename]] 형태의 문법을 제공하고 있었고, jekyll 도 nested markdown 파일을 잘 빌드해 주고 있었다. 고쳐야 했던 건 내가 2017년에 짰던 코드들.

2021-07-07

듀오링고 913일째. 생각해보니 쓰기 문제에서는 키보드로 답을 입력하지 않고 아이폰의 "받아쓰기" 기능을 써서 타이핑하면 더 공부가 될 것 같아서 일주일째 해보고 있다. 어렵지만 꽤 괜찮은 것 같다. 요즘 좋은 자극이 되는 중.

한편 아무리 말해도 어려운 문제도 있는데 She is the fourth queen 같은 문장은 아무리 말해도 아이폰은 내 말을 She is the poor skin 으로 듣는다.. 그래도 하다보면 언젠간 늘겠지.

2021-07-10

블로그 카테고리랑 부모문서 링크 만들어주는 기능 다 뜯어고쳤다. 4년짜리 레거시라 속이 다 시원하군.

2021-07-12

오늘, 올해 첫 휴가다.

2021-07-14

벌써 내 블로그 사이트맵에 들어 있는 url이 600개구나. 걍 기억 보존용 개인 블로그가 여기까지 오다니 좀 신기하다. 20대때 만들었다 관리를 안해 결국 삭제하게 되었던 여러 블로그들을 떠올려본다.

그럭저럭 블로그를 오래 하다보니 황당한 일들도 가끔씩 겪는다. 그중 앗 이건 좀 그렇지 싶은 건 내 블로그의 Google Analytics ua 값을 그대로 사용하는 경우. google search console에 들어가면 내 블로그 통계랑 포크한 블로그들 통계가 함께 보인다. 아니 host 주소 검사 안하냐 구글?!

블로그 repository fork하는 분들 마음도 이해는 하는데, 내 자기소개 정도는 지우고 사용하셨으면.. GA ua 값도 자기 것으로 수정하셨으면.. 내 이름 한 글자가 들어간 파비콘도 수정하셨으면..

2021-07-20

오늘은 반차를 내고 좋은분(엔라이즈 CTO 김문수님과 백엔드 리드 하시는 분(성함이 기억 안남))들을 원격으로 만나 대화하는 시간을 가졌다. 대화를 하며 많이 배우기도 했고, 기분 전화도 되어 즐거웠다. 이런 시간이 더 많았으면 좋겠다.

2021-07-27

아내와 함께 두 시간쯤 걷고 돌아왔다.

둘 다 재택근무를 하고 있어서 함께 5일째 24시간 동안 한 시도 떨어져 있지 않았다. 오 약간 신기록 느낌. 평생 이렇게 누구랑 오래 붙어있는데도 계속 기분이 좋은 사람은 아무도 없었던 것 같은데. 지금은 거실에서 둘이 마주보고 메론 먹으며 이야기한다.

2021-07-28

요즘 듀오링고 난이도를 올리기 위해 타이핑 문제는 아이폰 받아쓰기로 하는데 오늘의 난관은 girl. “걸” 하면 call이 나오고 “거얼” 하면 car가 나와서 한참 고생했다. 10분 넘게 삽질한 후 루이님의 코칭을 받아 “글”이라 말하면 girl이 된다는 것을 알게 되었다. 오늘 하나 배운 것 같아 기쁘다.

걸과 거얼에서 아이폰이 거의 99% call 과 car 로 알아듣는 걸 보고 L과 R발음의 차이에 대한 공부도 되었음. 한편 내가 구사하는 한국어의 ㄱ발음은 내 생각보다 ㅋ에 가까운 발음인 것 같다. ㄱ+ㅏ 발음이 하 처럼 소리가 튀어나와 ca 처럼 되기 딱 좋은 느낌. “글”은 ㄱ이 낮게 흘러나오는 느낌.

2021-07-29

오늘의 듀오링고. 몇 주간 내가 “This is”를 하면 높은확률로 “DC”나 “Decision”으로 아이폰 받아쓰기가 알아들어 고생했는데, 어제 일로 얻은 깨달음으로 “디스 이즈”가 아니라 “드스 이즈”로 하니 갑자기 잘 알아듣기 시작. 와! 디스 이즈가 아니라 드스 이즈로 해야 받아쓰기가 잘 알아듣는구나!

2021-08-01

https://github.com/p0deje/Maccy

지금까지 mac에서 써본 중 제일 괜찮은 클립보드 매니징 앱 같다. 지금까지 몇 년간 hammerspoon으로 클립 보드 매니저를 만들어서 쓰고 있었는데 주저 없이 이걸로 갈아탔다.

2021-08-03

내가 지쳤다는 사실을 인정하니 다음 할 일이 보인다.

2021-08-05

손목이 좀 아픈 가운데 문득. 발로 키보드를 쓰면 발목 터널 증후군이 올까? 발목 터널 증후군이 없다면 연습해볼만한 가치가 있지 않을까?

2021-08-07

다음은 내가 트위터에 쓴 글을 옮겨온 것이다.

꽤 긴 타래가 될 것 같다. 자의식 과잉일 수도 있겠지만 생각을 말끔히 풀어내기란 어려운 일이고 나는 이야기를 풀어보며 상황을 객관적으로 돌아보고 싶다. 무엇보다 생각의 앞뒤를 정리하고 싶다.

2달 후면 개발경력 만 9년이 된다. 먹고살기 위해 꾸역꾸역 일하다보니 주위의 기대를 받고 있다. 시니어 소리도 듣고 있다. 당혹스럽다. 실력을 짚어보면 시니어라는 단어가 버겁다. 두렵다. 그러나 어떨 때에는 어디에 있는지도 모르는 스위치를 찾아야 한다. 그래야 어두운 방의 불을 켤 수 있다.

2019년부터 2020년까지를 돌아보자. 괜찮았던 일들의 연속이다. 회사에 합류한 이후 테스트 코드 도입하고, 코드 리뷰 도입하고, git 사용 방법을 밑바닥부터 바로잡았다. 나는 git을 아주아주 좋아하고, git의 내부 구조부터 설명하는 것을 즐긴다. 이런 설명이 꽤 쉽고 재미있었다고 한다.

한편 회사 기술 블로그를 다시 만들고 사람들을 격려해 글을 써서 올리기도 했다. 매주 세미나에 참석해 내가 아는 것들을 공유했다. 가능한 한 자세하고 친절한 문서를 작성하려 했다. 이런 일들이 많은 업무에 지쳐있던 동료들에게 신선한 자극이 되었던 것 같다.

입사한 지 한 달만에 연말 타운홀 미팅에서 상을 받았고, 다음해에는 승진도 했다. 그리고 연말에 상을 또 받았다. 감사하게도 내 의견이나 제안에 지지해주시는 분들이 많았다. 칭찬해주시는 분들이 많으니 자연히 우쭐해지게 된다. 그리고 기대에 계속 부응하고 싶어진다. 이제 문제가 발생한다.

누군들 안 그렇겠느냐마는 나는 한 번에 한 가지 일을 할 때 생산성이 좋다. 시간을 들여 도메인 지식을 파악하고, 앞뒤관계를 살피고, 촘촘하게 계획해서 일을 진행하는 것을 좋아한다. 이 맛에 일한다고 생각한다.

나는 어떤 일을 할 때 반드시라고 해도 좋을 정도로 문서를 작성하면서 업무를 진행하는데, 이런 업무 습관은 항상 좋은 평가를 받았다. 이것이 가능한 이유는 우습게도 내 기억력이 좋지 않기 때문이다. 나는 다음날엔 머리가 포맷이 된다. 문서를 남겨두지 않으면 다 까먹는 것이다.

그래서 문서에 대해 고민하며 살아간다. 아무것도 모르는 내일의 나에게 보내는 편지. 친절할 수 밖에 없는 것이다. 글 쓰는 것도 좋아한다. 그런 성향이 잘 맞았는지 동료들도 내 문서를 좋아했다. 문서화를 좋아하는 개발자가 드물다던데 나에게는 좋고 나쁨의 문제가 아니다. 문서화를 해야 한다.

당장 해야 할 일들의 컨텍스트를 일목요연하게 표현하고, 지나가면 히스토리가 되는 문서들은 나에게만 도움이 되는 것이 아니다. 적절히 쌓인 문서는 개발팀의 발 밑을 튼튼하게 다져준다. 회사의 자산이다.

나는 업무 신념 하나를 얻게 되었다. 내가 일을 잘 하게 만들기 위해 일하자. 팀이 일을 잘 하게 만들기 위해 일하자. 그러므로 나를 위한 문서를 작성하자. 누군가 회사를 떠나도 문서는 오래 남아 길잡이가 된다. 그런데 문제는 점점 예상도 못한 다양한 일이 할당되기 시작했다는 것.

갑자기 이런상황이 되니 두려운것은 시간. 끔찍하게 빨리 흘러간다. 업무 집중력이 떨어졌을 때에도 흘러가고, 누군가와 면담을 하고 있는 동안에도 흘러가고, 의사 결정을 하기 위해 문서를 작성하고 읽고 생각하는 동안에도 흘러간다. 문제: 하나라도 딜레이가 생긴다면 다른 모든 일이 큐에 쌓인다.

컨슈밍 속도보다 큐에 쌓이는 속도가 커져서 극복하기 힘든 상황이 되면 마음 속에 돌덩이가 생긴다. 재빠르게 동료와 상사에게 공유하고 해결해야 하는데 이것이 쉽지 않았다. 자신감이 말라붙다. 바보가 된 기분에 빠져 종일 우울하게 보내며 꾸역꾸역 일을 한다.

토비 맥과이어는 스파이더맨2에서 벽을 타지 못하는 피터 파커 연기를 했다. 그는 스파이더맨 코스츔을 입은 상태로 엘베를 타고 건물에서 내려가야 했다. 나는 요즘 그런 피터 파커를 자주 떠올린다. 많은 일이 즉흥적으로 결정되거나 내 시야 바깥에서 흐름이 바뀌지만 벽을 타고 내려갈 수 없다.

빨리 따라가야 한다고 생각하지만 초초하므로 다음 버스를 기다리지 못한다. 좋지 않은 선택이란 것을 알면서도 떠나간 버스를 계속 따라간다. 해법은 단순하다. 좀 쉬었다가 그냥 다음에 오는 버스를 타면 되는 것이다.

누군가는 앗 당신 번아웃이야 하고 이야기를 해줬다. 번아웃이라는 생각은 안 들었다. 일은 어떻게든 하고 있다. 다른 사람이 한 걸음 걸을 때 두 걸음 걸으면 따라잡을 거라고 생각했다. 하지만 굉장히 짜증이 났던 어느 날 오후. 기운이 빠지는 것을 느꼈다. 몸이 젖은 양말처럼 바닥에 늘어졌다.

어떤 일도 할 수 없었다. 그래서 반차를 쓰고, 그 다음날은 휴가를 썼다. 일 할 의욕이 어디에도 없었으므로 일을 할 수 없었다. 그게 2주 전이다. 코드도 안 나오고, 문서도 안 나온다. 손가락이 키보드 위에 멈춰 있다. 신기하게 회사와 관련 없는 코딩은 잘 된다. 이것을 뭐라 불러야 한단 말인가.

휴가를 충분히 내면 되는 걸까? 이직하면 괜찮아질까? 고민 끝에 팀을 이동해 보기로 했다. 현명한 선택인지는 모르겠지만 큐가 쌓여서 터진 거라면 재시작을 해야겠지. 또는 재시작이 가능한지 알아봐야겠지. 당장은 아니지만 팀을 이동해 보면 많은 것이 리셋되지 않을까.

내가 바라는 하나는 다시 일에 몰두하는 것이다.

그러고보니 올해 휴가 1.5일 썼다. 생각해보니 벌써 8월이다. 내년까지 20주 밖에 안 남았다. 남은 휴가가 13.5일이니까 마주 반차를 써도 휴가가 3.5일 남는다. 다음주에 좀 쭉 이어서 쉬어볼까…

이에 대해 다음과 같은 감사한 조언과 격려를 받을 수 있었다.

2021-08-08

하루에 두 번 자는 거 너무 좋다. 회사에서도 꼭 낮잠을 챙겨 자야 오후 일을 더 잘 할 수 있다고 생각해서 늘 점심먹고 낮잠을 잤는데 생각해보니 올해는 거의 낮잠을 못 잤다.

정정. 오후에 일을 더 잘 할 수 있다고 생각해서 => 오후 3시쯤 스멀스멀 brain fog 끼면서 아이큐 떨어지는 기분이 낮잠을 자면 안 느껴져서. 그게 그거 같긴 하지만 좀 더 개인적인 이유.

2021-08-10

그동안 매일 잔여백신 예약에 실패하다, 오늘 드디어 10부제 백신 예약에는 성공했다.

2021-08-15

오늘은 아내랑 종일 중요한 일 여러 가지를 처리했다. 깜빡하고 있었던 지방세도 냈고, 에어콘도 기사님을 불러 청소를 마쳤고, 집안 가구 구성도 여기저기 조금씩 위치를 옮겨서 집을 더 넓게 만들었다. 아 쾌적하고 재미있는 하루였다.

거실 한쪽 벽에 내가 좋아하는 마그리트의 그림을 걸었다.

image

TV가 있는 쪽 거실도 전선이 하나도 안 보이게 정리. 이사온 지 3년 만에 다시 이사한 것 같네.

image

2021-08-16

집안 정리를 하다 남는 매뉴얼이 있길래 매뉴얼 바인더를 꺼냈다. 가전이나 가구 등 각종 살림살이에 딸려온 매뉴얼을 보관하는 바인더. 하나하나 넘기며 둘러보는데 아내와 함께 고른 밥솥, 세탁기, 토스터, TV 등 설명서가 보인다. 당시의 웃긴 추억들도 떠올라 피식피식 웃는다.

내가 바인더로 매뉴얼 관리하는 방법은 하나다. "아이템을 집어넣을 때 제일 앞에 넣는다."

이 규칙을 지키면 새 매뉴얼은 앞에 들어간다. 그리고 문제가 생겨서 중간에 꺼내 읽은 매뉴얼도 앞으로 들어간다.

이러면 앞에서부터 넘겨보면 최근 문제가 있었던 가전/가구부터 하나씩 보게 된다.

보통 살림을 하면서 매뉴얼을 한 번 찾은 가전이나 가구는 또다시 찾게 될 가능성이 높으므로 이런 MRU 전략이 유용할 것이라 생각했다. 경험적으로도 검색하기 쉬워 좋았다.

이 방식은 클리어 파일로는 관리가 어렵다. 바인더가 쉽다. 한 번 읽은 매뉴얼을 비닐봉투째로 빼내어 읽은 다음, 제일 앞으로 보내야 하기 때문이다. 하지만 가전에 문제가 생겼을 때 매뉴얼을 못 찾아 겪는 수고로움을 생각하면 이 정도의 최근 히스토리 우선 인덱싱 관리는 감안할만 하다.

2021-08-27

지금 코딩하고 있는 프로젝트가 좀 재미있다. 거의 모든 클래스가 메소드를 딱 한개씩만 갖고 있음. 그래도 잘 돌아간다. 아직까진 깔끔하고 읽기 좋음. 프로젝트 후반에는 달라질 수 있겠지만, 일단 지금은 그동안 고민했던 것들을 잘 털어넣으며 개발중.

떠올려보면 1~2년차일 때 코드와 매우 다른 모습을 갖고 있다. 그때에는 클래스 하나에 메소드 수십개씩 쑤셔넣기도 했던 것. 생각해보니 그 때에는 쪼개는 방법이나 요령 몰랐고 왜 쪼개야 하는지도 생각하지 못했던 것 같다. SRP라는 좋은 힌트가 있었는데도 머리로만 알고 실천은 못했던 것.

그동안 작성했던 코드를 생각하니 아찔한 느낌도. 9년차가 되어서야 알던 것들을 알음알음 실천하게 되다니 싶어 부끄럽기도 하고, 이제서야 하는 게 어디인가 싶기도 하다. 한편으로는 지금 작성하는 코드도 미래의 내가 보면 어수룩하고 어리보기 같겠지. 다시금 겸손을 배우는 것이 중요하다 싶다.

아무튼 다른 회사는 몰라도 내가 일하는 환경에서는 쉬운 코드가 최고. 무조건 읽기 쉬워야 좋다. 읽기 쉬워야 뭘 추가할 때에도 아 여기구나 하고 빨리 찾고, 읽기 쉬워야 버그가 있어도 아 이거구나 하고 빨리 찾고, 읽기 쉬워야 다른 사람에게 인수인계해줄 때에도 아 그게 이거군요 바로 알겠네. 한다.

이건 내 성향이기도. 일단 돌아가게 만들고, 시간을 두고 조금씩 고쳐가는 게 재미있고 취향에 맞는다. 근데 코드를 알아볼 수가 없다면 시간을 두고 조금씩 고치는 게 삐걱거린다. 알아봐야 뭐든 한다. 성능을 향상시키려 해도 알아봐야 하고, 버그를 고치려 해도 알아봐야 한다.

2021-08-29

휴대폰에 오래된 광고 메시지가 너무 많길래 점진적으로 삭제해가기로 했다. 날 잡아서 한번에 정리하는 건 내 스타일이 아님.

  1. 광고 메시지 1개를 받으면,
  2. 방금 받은 광고 메시지를 삭제한다.
  3. 아무렇게나 스크롤을 내리다가 발견한 삭제할만한 메시지 1개를 삭제한다.

이걸 반복하면 되겠지.

  1. 광고 메시지가 아닌 메시지를 받으면?
  2. 메시지를 확인한다.
  3. 그리고 아무렇게나 스크롤을 내리다가 발견한 삭제할만한 메시지 1개를 삭제한다.

2021-08-30

술보다 안 좋은게 자기 자신에게 취하는 것. 특히 부정적인 의미의 자신에게 취하는 것은 그냥 안 좋은게 아니라 몹시 나쁘다. 이걸 깨달았을 때 알콜중독 치료하듯 털어내야 좋은 것 같다. 어떤 사람은 욕설을 잘하는 자신에게 취하고, 어떤 사람은 상점에서 무리한 요구를 잘하는 자신에게 취한다.

2021-08-31

나도 드디어 COVID-19 백신 맞았다. Pfizer.

2021-09-03

오늘 동료 두 명과(3명이 함께) Code with me로 작업하면서 엄청 들떴다. 다들 재밌어서 시간가는 줄을 몰랐음. 3시간 동안 10분 쉬었고, 밀린 일을 상당히 처리할 수 있었으며 너무 즐거워서 퇴근한지 3시간이 지난 지금까지 좀 들떠 있는 상태. 일정보다 훨씬 앞당겨서 일을 끝낼 수 있을 것 같다.

2021-09-06

요즘 회사일 재밌다.무조건 페어로만 코딩중. 나는 이 팀 도메인 지식이 부족해서 페어하면서 도움받고, 원래 팀에 계셨던 시니어 개발자님은 원래 나랑 서로 흠모하기도 했고 내 코드 디자인 스타일을 좋아하셔서 합이 잘 맞는다. 요즘 개발속도가 무지무지 빠르다. 3시간이 미친듯이 흐른다.

JetBrains의 CodeWithMe를 잘 쓰고 있다. 재택근무하는 3명이 함께 코딩을 하는데, 내가 테스트 코드 짜기 시작하면 한 명이 음성 대화하면서 fixture 만들고, 다른 한명이 구현체 시그니처 작성시작. 작업은 일단 내가 주로 주도하고 있어서 좔좔좔 끊임없이 계속 말해야 한다는 게 좀 피곤.

처음엔 둘이서 병렬로 두 개 파일 수정하는 게 빠를 거라고 생각했는데, 실제로 해보니 그렇지 않다. 두세 명이 파일 하나 열고 스워밍하면 순식간에 뚝딱. 그리고 다음 작업 대상으로. 스타크 저글링 무리 중 한 마리가 된 기분. 속도감이 장난아닌데 퇴근시간 알람 듣고 "벌써?" 하고 놀란다.

그런데 CodeWithMe 문제 많다. 특히 여러 명이 같은 파일을 작업할 때 제일 윗줄 편집하던 한 명이 엔터치면 밑에 줄에 난리가 난다던가.. 컴퓨터 배터리도 엄청 잡아먹는다. 아답터 연결하고 작업중인 맥북 배터리가 줄고 있는 걸 보고 경악. 메모리 누수도 있는지 5시간 작업 후에는 재부팅해야했다.

작업은 이렇게. Slack hurdle로 내 모니터 화면 공유하면서 내 컴퓨터를 CodeWithMe 호스트로 삼아 동료 둘이 접속. 먼저 작업 요구사항과 TODO를 문서로 정리해 놓고, 문서의 체크리스트를 체크해가며 내려가는 식으로 함께 작업. 방심하면 목이 쉬니 옆에 생수통이랑 물컵을 필수로 갖다놔야 한다.

함께 작업하니 주의가 분산되지 않는 것이 가장 좋다. 혼자 작업하면 코딩하다 마음에 안 드는 부분 나타나서 파고들어서 코드 읽고 아 여기 이번에 고칠까 다음에 고칠까 지워버릴까 이런 고민하다가 시간이 무심히 흐르는데, 여럿이 하니 이런 일이 없다. 멍때리는 시간이 사라져서 몰입도 잘 된다.

2021-09-07

일렉트론 기반 데스크탑 앱들 리소스 사용량 때문에 스트레스. 슬랙만 써도 메모리 낭비가 어마어마. 일렉트론으로 인한 탄소 발생량도 엄청나겠지.

2021-09-11

크레이그 라만의 책을 읽다가 "갯수"라는 단위를 영어로 어떻게 표기하는지 찾아보는 중인데, "ea"가 "갯수"를 표현하기에 적합하지 않다는 글이 여럿 있다. 4개 != 4 ea. 그런데 그 대안이 뭐가 있는지 써놓은 글은 아직까지 못 찾았네. 이렇게 하면 안된다는 글만 잔뜩. 더 찾아봐야겠다.

2021-09-17

요즘 레거시 하나 각잡고 리팩토링하는데 무척 재밌다. 계속 테스트 작성하고 고치고 테스트 작성하고 고치고.

2021-09-20

낙서와 메모가 있는 중고책을 읽을 때에는 속으로 열심히 1 챕터만 참고 읽자고 생각한다. 2챕터부터는 낙서가 현저하게 줄어들고, 3챕터부터는 거의 새 책이나 다름없어지는 경우가 많다.

2021-09-23

또 세면대 물이 천천히 내려가길래 아침에 각오를 단단히 하고 세면대 밑 배관을 풀어 깨끗하게 청소를 했다. 지옥에서 올라온 것 같은 덩어리를 한주먹 만큼 빼냈고 이제 물이 콸콸 잘 내려간다. 매번 비용을 써서 뚫곤 했는데 이젠 내 손으로 할 수 있다. 스스로 할 수 있게 된 것이 가장 기쁘다.

탄산을 쓰는 미스터 펑이니 하수구 뻥 용액 등 이젠 안녕~ 특히 용액을 쓰는 건 환경에도 나쁘지 않을까 하는 걱정이 많았는데 이젠 그냥 배관을 풀어 내부를 긁어내고 다시 조이면 된다고 생각하니 기분이 좋다.

2021-09-24

나는 월간 기록을 매월 말일이 아니라 다음달 1일에 한다. 이유는 매월 말일이 매번 달라지기 때문. 어떨 때에는 31일이고 어떨 때에는 30일이고, 어떨 때에는 28일이고… 매월 1일에 지난 한 달을 기록하면 뭔가 좀 더 규칙을 지킨 느낌이 좋다. 이것도 강박일까. 아무렴 어때 내가 기분이 좋은데.

2021-09-25

마인드 스톰 완독. 아침에 읽기 시작해 방금 다 읽었네. 오래간만에 하루 안에 책을 다 읽어 뭔가 보람찬 기분.

2021-09-29

요즘은 출근하면(물론 대부분 재택) 리팩토링 6시간, 기능 추가 2시간씩 하는 것 같다. 코드가 몹시 복잡해 혼란스럽지만 그래도 나름의 보람이 있다. 코드의 산더미 속에서 이제 정돈된 구획이 하나씩 생겨난다.

2021-10-03

해냈다 듀오링고 1000일!

듀오링고 1000일 달성한 이미지

2021-10-04

블로그 문서가 600개가 되었다.

2021-10-05

나도 드디어 COVID-19 백신 2차 맞았다. 이번에도 Pfizer.

2021-10-07

요즘 현관에서 루이님 신발을 볼 때마다 루이님이 바깥으로 신고 나가기 편하게 문 쪽으로 신발을 돌려놓는 습관을 들이고 있다. 신발장 정리는 덤. 아주 작은 일인데 흐뭇하고 좋다. 출근하실 때 1초 정도 조금 더 편하고 조금 더 기분 좋으시겠지.

결혼 생활이 행복하다.

2021-10-08

짝 코딩에 뒤늦게 푹 빠졌다. 시간이 엄청 빠르게 흐르고 일도 엄청 빠르게 쳐낸다. 짝이 있어 다행이다. 다음 회사를 고를 땐 꼭 짝 코딩 가능한지를 봐야지.

2021-10-10

시험 없고 과제 없고 일정 압박이 없으면 공부가 즐겁고 재미있다. 그래서 앞으로도 평생 즐겁게 독학을 할듯.

마음껏 공부할 수 있도록 상당한 여유 시간이 있다면 좋겠다.

2021-10-11

10년전에 산 "패턴을 활용한 리팩터링"을 지난 일주일간 다 읽었다. 그땐 어려워서 1챕터 읽다가 포기했었는데, 이제는 재미있게 읽어서 일주일간 무척 즐거웠다. 다행이라 느끼는 한편, 이런 내용을 나만 몰랐다가 이제야 알게 됐겠구나 싶어 서늘하기도 하다.

아무튼 다 읽어서 상쾌하다. 아직 오후 5시 밖에 안 됐으니 다음 책을 읽도록 하자. 다음 책은 그레이트 코드 3권. 2권은 구하지 못해 아직 못 읽었지만 언젠간 기회가 오겠지.

2021-10-12

요즘 떠오른 아이디어가 하나 있어 컨트롤러 클래스 패키징을 실험적으로 배치해보고 있다. 아이디어는 이렇다.

  1. 컨트롤러 하나가 API URI 하나를 담당하게 한다.
  2. URI 경로를 그대로 패키지 경로로 사용한다.

배드 아이디어일 수도 있지만 나름의 장점이 있다고 느껴 기록해본다.

보통은 컨트롤러 클래스 하나가 여러 엔드포인트를 갖게끔 코딩을 해왔고, 그런 코드를 많이 봤다. 하지만 이 방법은 조금 다르다. 가령 상품과 관련된 컨트롤러가 있다고 하자. URI가 /shop/product/ 라고 할 때 패키지를 아예 web/shop/product 이런 식으로 만들고 이 안에 컨트롤러를 배치한다.

그리고 그 컨트롤러는 해당 URI에 대한 HTTP method 처리만 한다. (처음 컨셉은 이랬지만 지금은 이것도 분리했다) 만약 다른 URI가 필요하다면 해당 URI에 맞춰 패키지를 구성하고 새 컨트롤러를 그 위치에 만들어 준다.

이렇게 하면 컨트롤러 하나가 엔드포인트 딱 한개만 담당하게 된다. 그리고 URI와 패키지 경로가 일치하기 때문에 IDE 안에서 디렉토리 구조만 보고 해당 컨트롤러 클래스 파일을 찾아내기가 무척 쉽다.

그리고 그 컨트롤러에서만 필요로 하는 리퀘스트 객체와 리스폰스 객체도 package private으로 만들어준다. 이렇게 해보니 엔드포인트 관리가 꽤 쉬웠고, RestDoc 테스트코드를 작성할 때에도 테스트 파일의 사이즈도 이전에 비해 많이 작아졌다.

한편 URI 구성에 대해 계층구조로 표현한 명사의 집합관계라는 컨셉을 분명히 인식하며 URI를 디자인할 수 있었다. 자원의 아이디로서 계층구조의(/로 구분된) URI를 제공한다는 걸 동료들과 함께 인식하니 커뮤니케이션도 편리했다.

아직까지 단점은 거의 못 느끼고 있다. 패키지가 깊어지고 각 컨트롤러 클래스에 메소드가 한두개만 있다는 정도? 난 이건 오히려 장점이라고 생각한다. 패키지가 깊어져도 URI만 알아도 컨트롤러를 금방 찾아서 문제가 안 된다. 그리고 일단 배포하면 URI는 바꾸는 일이 드물기 때문에..

web 패키지 하위의 패키지들은 거의 불변으로 가져가게 된다. 만약 어떠한 URI를 더이상 서비스하지 않게 된다면 해당 패키지(와 그 안의 클래스)만 삭제하면 된다. 여러 URI를 리커시브하게 삭제할 일이 있어도 상위 패키지(디렉토리)만 삭제하면 된다.

URI에 버저닝이 포함되어 있는 경우도 마찬가지. 다음과 같은 API를 사용하는 업무 환경이라면

  • web/v1/product/product-a
  • web/v2/product/product-a

패키지 이름을 보고 아직 v1 이 남아있다는 걸 알 수 있고, 얼마나 v1에서 v2로 넘어왔는지도 쉽게 파악할 수 있다.

이 아이디어를 떠올린 건 2년 전에 로이 필딩의 논문을 읽었을 때였는데, 차일피일 미루며 의견을 이야기하지 않고 있었다.. 하지만 이번에 팀이동을 한 김에 이렇게 해보고 있는데 나도 대만족, 같이 페어 프로그래밍하는 최선혁님도 대만족. 선혁님은 이런 생각을 왜 못했을까 하며 싱글벙글.

요즘 리팩토링하고 있는 프로젝트가 구조가 상당히 복잡했는데 이 방법을 도입하면서 컨트롤러를 하나씩 이 방법으로 발라내면서 관련 로직도 리팩토링하는 중. 리팩토링 진행도를 디렉토리 구조를 통해 파악할 수 있다는 장점도 있다. 결과가 눈에 보이니 작업도 즐겁고, 이동 방향도 가시적.

로이필딩 논문 이야기를 한 김에. 로이 필딩은 자원의 표현형을 전달하는 방식(REST)에 대해 이야기할 때 식별자가 중요하다는 말을 한다. 웹은 본래 다른 컴퓨터의 리소스를 이 컴퓨터에서도 조회하기 위해 만들어진 것. 자연스럽게 "/" 기호로 구분된 디렉토리/파일 구조의 식별자를 사용하게 됐다.

따라서 내 컴퓨터의 파일을 잘 찾기 위해서는 디렉토리 구조를 잘 갖추고 파일을 적절한 위치에 잘 저장해두면 도움이 되는 것처럼, 남의 컴퓨터의 자료도 디렉토리 구조가 잘 갖춰져 있으면 탐색용이성이 높아진다. 따라서 URI-디렉토리-집합의 개념은 모두 관계가 있다.

즉 이상적인 URI는 모두 /생물/동물/척추동물/포유류/강아지와 같은 주소의 이념을 바탕으로 설계된다. 왼쪽으로 갈수록 상위 집합이며, 오른쪽으로 갈수록 하위 집합이다. 많은 URI가 이런 구조를 갖는다. 다음 URI도 하나의 트윗에 도달하기 위한 계층구조를 갖고 있다.

나는 이 지점에서 이 아이디어를 얻었다. 이런 식으로 URI를 구성하는 이유 중의 하나는 탐색 용이성 때문이다. → 그렇다면 컨트롤러를 배치할 패키지를 구성할 때에도 똑같은 방법을 사용하지 못할 이유는 무엇인가?

그래서 해보니 나름의 장점이 있고, 요즘 즐겁게 코딩하고 있다는 이야기.

아 맞다 남현우 님을 만났을 때 이 이야기를 했는데 리치 히키가 네임스페이스에 대해 한 이야기를 알려 주셨음. 인상깊고 즐거운 대화였다.

2021-10-14

아이폰 13 미니가 배송됐다. 오 그동안 써온 아이폰 7보다 조금 더 작네?

2021-10-15

오늘 페어 프로그래밍 동료 선혁님께 매우 즐겁고 행복한 말을 들었다. 같이 코딩하는 게 너무 좋아서 휴일에도 평일이 되기를 기다리셨다고. 이후 고맙고 배우는 것이 많다고 서로를 칭찬했는데 기분이 아주 좋았다. 오늘도 계속 주절주절 대화하며 사흘치 작업을 하루만에 끝냈다. 페어 코딩 짱.

선혁님은 나보다 7년 정도 더 나이 많은 시니어이신데 무척 겸손하고 팔로워십이 있으셔서 내가 어떤 선택을 해도 탄탄하게 뒤를 받쳐주심. 코드 디자인에 대해 가끔 태클 거실 때에는 이유가 충분해서 계속 신뢰가 쌓인다. 손발도 잘 맞고 성격도 잘 맞으니 작업 속도도 잘 나와서 스포츠카 타는 기분이다.

한편 요즘 두 번째로 많이 하는 이야기는 패턴에 대한 것들. "패턴 도입"이 아니다. "패턴을 걷어내는 작업"을 하는 대화라는 것이 중요. 레거시 프로젝트에 패턴 과잉이 보여서 패턴을 하나 하나 걷어내 "충분한" 정도로 리팩토링을 하고 있는데 이 과정에서 패턴 이름이라는 도구가 참 효율적이다.

한편 Java/Spring 하면서 가장 지겨운 건 컨트롤러-서비스-리포지토리를 맨날 만든다는 건데, 이건 본인이 만들고 있으면서 지겹다고 투덜대고 있는거라 누굴 욕할 수도 없는 일. 그래서 요즘은 코딩 짝과 함께 별로 새로울 것 없는 새로운 시도를 해보고 있다. 메소드를 딱 한 개만 갖는 서비스 클래스.

가령 게시판을 만든다고 하자. 1~2년차의 나는 BoardService 이런걸 만들고 이 녀석에 모든 메소드를 쑤셔넣고, 클래스가 600줄 넘어가도록 불안하게 방치하곤 했다. 그 외의 방법이 떠오르지 않았다. 5년차의 나는? 이걸 둘로 쪼개고 command, query로 나눴다. 반으로 나뉘었을 뿐 큰 차이는 없었다.

그 이후로도 크게 다르지 않았는데, 어느날 단일책임원칙은 좀 지키고 살아야 하지 않겠나 하는 생각이 들었다. 그래서 그냥 서비스 하나가 퍼블릭 메소드 하나만 서비스하도록 해봤더니 생각보다 괜찮았다. 테스트 클래스도 메소드 하나만 테스트하는 내용으로 채워지게 되어서 제법 읽기 좋았다.

그리고 서비스 이름에 모두 er 을 붙였다. 엘레강트 오브젝트 읽은 분들은 어 그러면 안 좋은데.. 라고 조언해주셨지만, 난 객체지향 별로 안 좋아하고, 내가 좋아했던 Go에서는 인터페이스 이름에 er 붙이는 게 당연했는데 뭔 상관인가 하고 걍 서비스 이름을 그렇게 지었다.

게시판 서비스 예제로 돌아가보자. 이렇게 하면 서비스가 촘촘하게 분리된다. BoardCreator, CommentCreator, CommentDeleter, … 같은 녀석들이 서비스가 된다. 메소드가 하나이기 때문에 이 클래스들은 사실 메소드 하나를 제공하기 위한 껍데기일 뿐이다. 그리고 이름만 봐도 용도가 뻔하다.

클래스 하나가 30줄을 안 넘으니 파일 열어보면 오래 걸려도 5초 안에 뭐하는 파일인지 바로 파악이 된다. er 달린 녀석들끼리 이름으로 구분이 되니 읽는 사람의 마음속에서 er-layer 가 구분된다는 것도 특징. 테스트 코드도 심플해진다. 파일이 많아지는 건 단점일 수도 있는데, 난 신경 안 쓴다.

그리고 레거시에서 DTO 레이어마다 일일이 new 생성해서 들려보내는 걸 보는 것도 너무 짜증나는 일이라, 레이어별로 콘크리트 클래스를 받지 않고 전부 인터페이스로 받게 바꾸고 적당한 팩토리 하나 만들어서 new DTO를 볼 때마다 삭제해버렸다. 팩토리는 내부에 프라이빗 구현체 하나 갖고 있고 용도별로 호출할 수 있는 이름 적당한 메소드 여러개를 서비스하는 방식. 이렇게만 해도 파일을 많이 지울 수 있었기 때문에 er 클래스로 파일이 늘어나도 삭제한 게 많아서 거기서 거기인 느낌.

그래서 이번 프로젝트에서는 service 포스트픽스가 붙은 클래스가 1개도 없다. 이런 서비스 클래스 패키지 경로 전략도 철저하게 탐색 편의 위주로 고려했기 때문에 /생물/동물/포유류/강아지 이런 식의 개념적 계층화만 염두에 두고 만들어서 찾기도 쉽다. 이러면 접근권한 붙이기가 좀 짜증나는데

내가 자바에서 항상 필요하다고 생각하는 건 하위 경로에만 열려 있는 recursive private 인데, 사실 자바의 패키지 접근권한 개념은 내가 바람직하다고 생각하는 것과 개념이 달라서 이건 앞으로도 추가될 일이 없을 것 같다. 아무튼 그래서 클래스는 default 아니면 public으로만 쓴다.

한편으로는 퍼블릭이어도 큰 문제가 없는 구성이라 생각. 클래스 이름으로 용도를 광고하고 있는 메소드 딱 한 개만 지원하는데 퍼블릭이면 어떻단 말인가 하는 생각. 패키지 접근제한으로 멍청한 개발자를 방지하는 건 자바의 철학이지만, 나는 가독성이 개발자의 아이큐를 끌어올린다고 생각한다.

javadoc을 좋아하고 성실히 적으려는 이유도 같은 근거. 테스트 코드에서는 필요하다면 한글도 최대한 쓴다. 픽스쳐 이름도 한글로 지어버림. 알아보는 게 제일 중요하다. 계속 옆 동료에게 쉽게 읽히냐고 물어보고 잘 모르겠다고 하면 기각하고 다른 걸로. 코드 모양에 대한 내 고집은 덜 중요하다.