레이블이 끄적이다.인 게시물을 표시합니다. 모든 게시물 표시
레이블이 끄적이다.인 게시물을 표시합니다. 모든 게시물 표시

2024 first snow


2024-11-27 올해 첫눈이 왔다.
(1~2월에 눈 온게 올해 첫눈 아닌가 라는 생각을 하지만 이런 딴지는 접어두고...)

제법 눈이 많이 쌓였다. 아침에 일어나 창밖을 보니 나무에 두툼한 눈 옷이 덥혀 있다.
졸린 눈으로 아들은 와~ 눈왔다 하면서 대뜸 소원을 빈다. 리코더 시험을 안보게 해달라고.. 흠..
리코더가 그렇게 싫을까? 개인적인 욕심은 피아노도, 플룻도, 바이올린도.. 배우게 하려 했는데.

아들 등교 시키고(또래와 달리 아직 내손을 잡고 학교 정문까지 가고 싶어하는 아들이 고맙기도 하고 왠지 안쓰럽기도 하다.) 책상 앞에 앉으니 창밖의 눈 때문일까? 평소보다 더 조용하고 차분한 기분이 든다.
자동으로 켜진 유튜브에는 임윤찬의 바흐 플레이 리스트가 보인다.
When You Need a Rest : Yunchan Lim, J.S.Bach Playlist
타이틀도 참 지금에 어울린다. 플레이를 누르고 오랫만에 알리에서 산 만원대 작은 스피커로 음악을 흘려 보낸다. 익숙한 선율이 편하다.

가끔 이런 꿈을 그린다. 춥고 매섭게 눈보라가 몰아치는 북유럽 어느 오두막 산장에서 밖에 휘날리는 눈보라와 타닥타닥 소리를 내는 모닥불을 배경삼아 일하고 있는 내 모습을.
눈이 주는 차가움도 있지만 그로 인해 따뜻한 곳을 찾아 모이는 몇몇의 온기가 그립고 소중한 산장이다.
평소엔 자연속에 가족의 일상으로 보내고 때론 친구들을 불러 화로 앞에 둘러 앉아 밤새워 얘기하는 생활.
생각만 해도 설렌다. 영화를 많이 봐서 그런지 이런 곳에서 살고 싶다.

아침엔 제법 먹구름으로 흐리지만 그래도 차분한 분위기 였는데, 이제 해가 조금씩 보이고 나뭇가지의 눈들도 조금씩 녹아 물방울을 떨군다.
아 짧은 감성의 시간이 이렇게 지나간다. 커텐이라도 치고 좀 어둡고 늘어지는 방을 만들고 싶다.

어라. 다시 눈이 더 오네^^;

code review

이제는 디폴트가 된 git/github 시대에 예전을 생각하면 svn(tortoise 제품, 맨날 톨토이즈라고 발음 했는데 실제로는 털터스[tɔːrtəs]), hg(mercurial) 이런 것들을 사용했다.
commit 하면 바로 서버에 올라가고 필요한 사람이 trunk 였나? 여기로 머지를 했던것 깉다.
이때는 코드 리뷰라는 말도 생소 했고, 내 로컬에서 새 버전을 다운받아 에러가 발생하면 그제야 서버 커밋 로그를 뒤져 어떻게든 돌아가게 하려고 했던 기억이 난다.
github 같은게 없어서 메신져나 동료 옆자리에 앉아 같이 코드를 보면서 수정을 했었는데...(pair programming 이라는 말도 몰랐을때다)
그러고 보면 git/github 이 이전 버전 컨트롤 보다 개발도 편하고 코드 충돌에 있어서도 교통 정리를 잘해준다. 

github 이라는 오픈 공간은 같은 관심사를 가진 여러 사람들을 모이게 했고 집단지성을 발휘해 빠른 속도로 좋은 프로그램들이 많이 나올 수 있는 인큐베이터가 됐다.
이런 흐름속에 PR(Pull Request)라는 과정이 추가되고, 이곳에선 더 좋은 품질을 위해 생각을 공유하고 때론 배움의 장소로 사용된다.
실제로 구글링 하면 github 이슈에서 원인과 해결방법을 제시해주기 때문에 스택오버플루와 함께 깃헙은 좋은 나에게 좋은 선생님들이다. 이젠 이것도 AI 가 잘해주지만...
암튼 이 PR 과정에 코드리뷰가 진행되고 commiter 의 코드를 보며 갑론을박 토론의 장이 펼쳐지곤 한다.
이런 토론이 가끔 나쁘게 흘러가는 경우가 있다.
상대를 무시하는 듯한 말투, 뭐하나라도 꼬투리를 잡아 늘어지는 경우등 이런 것 들은 기여자를 기죽게하고 contribute 에 소극적이게 한다.
(https://news.hada.io/topic?id=16472 에 코드리뷰 안티패턴들)

개인적으로 품질과 함께 생산성이 중요하다고 생각한다.
생산성에 여러 의미가 있지만 난 속도에 무게를 두고 싶다.
container 가상화, 자동화 테스트, 심지어 프로그래밍까지 간결하고 이해하기 쉬우면서도 오류를 적게 나는 언어등으로 우리는 예전 보다 더 쉽고 빠르게 (rust 생각하면)때론 더 안전하게 만들 수 있다.
그리고 AI로 품질과 생산성이 좋아져 더 좋은 서비스가 출시가 더 빨라지기까지 한다.
이런 환경속에서 서비스(software/product)가 경쟁하듯 쏟아진다.
비지니스 관점에서도 빠른 서비스 출시는 시장 장악, 매출에도 영향이 클것이다.
상황이 이런데 나,우리의 서비스도 개발을 빨라해야 되지 않을까?
물론 코드 품질은 유지하면서도 속도도 높여야 겠지.
그런데 개발과정에서 아마 문제해결을 위한 시간 다음으로 협업과정에 오는 커뮤니케이션, 프로그래머들에겐 상시 진행되는 코드리뷰 과정이 많이 시간이을 잡아 먹는것 같다.
위 코드리뷰 안티패턴의 다크사이드 리뷰어가 아니더라도 들어보며 많은 프로젝트들이 리뷰 시간이 길어져 전체적인 생산성 저하가 발생되는것을 종종 본다.

코드 리뷰 과정은 적게는 1시간에 끝날 수도 있지만 길게는 일주일, 어쩌면 영영 끝나지 않고 묻히기도 한다.
리뷰가 지체로 PR 이 쌓이면 다음 작업에 영향을 미친다. 아무리 병렬적으로 작업을 한다고 해도 최종적으로 하나의 브랜치로 머지되니 다른 작업을 하고 있다면 수시로 diff 부분을 따라가고 충돌부분도 수정해야된다. 때론 중복 작업 까지 발생해 진짜 현재 PR중이 것들과 영향이 없는 이슈에 대해서만 병렬로 작업하는게 정신건강에 좋다.
암튼 지체되는 리뷰들을 되도록 줄여 개발 진행에 막힘이 없으면 한다.
이 문제와 관련한 여러 커뮤니티,기술블로그들의 글을 찾아봤다.
빠른 리뷰를 위해 많이 말하는게 데드라인, 템플릿, 우선순위, 알림등 이런저런 규칙과 시스템이 있었다.
이런것들로 어느정도 효과를 봤다고 수치와 그래프를 보여주기도 한다.
반면 이런 규칙과 제한등을 두면 사람들은 반감을 사고 오히려 리뷰를 대충하거나 소극적으로 한다 등의 안좋은 결과를 보였다는 글도 있었다.
개인적으로 알림, 템플릿은 optional(있으면 좋지만 없어도 딱히)이고 중요한건 리뷰문화 인것 같다.
내 코드 작성하는 것도 바뻐 다른 사람 코드 리뷰하는 시간이 부족하다는 말은 많이 하는데,
좀 들여다 보면 리뷰가 자체가 굉장한 스트레스로 다가오는 경우가 많다.
나같은 경우 github files changed 들을 보면 빨간색/초록색으로 보이는 차이들이 잘 읽히지 않는다. 마치 틀린그림 찾기처럼 꽤 집중을 해야 한다.
그래서 리뷰 잘 그리고 빠르게 하려면 내 생각은
- github > pulls/review-requested 로 나에게 요청한 리뷰들 수시로 확인하는 습관
- 되도록이면 이슈를 작게 나눠 코드 라인 수가 적게, 작은 이슈를 여러번 리뷰(https://smallbusinessprogramming.com/optimal-pull-request-size 코드라인이 200 줄정도면 1시간에 리뷰 확률 90%)
- 리뷰 중 생각난 문제들은 별도의 이슈를 생성하고 현재 리뷰는 마무리
- 리뷰 커멘트 작성시 명확하고 되도록 친절한 말을 사용
- 리뷰에 도움이될 툴 사용(diff 시 중요한부분만 보여주는 툴 https://github.com/wilfred/difftastic)
- https://soojin.ro/review/ 한글로 정리된 구글 코드 리뷰 가이드 참고

좋은 코드 뿐 아니라 잘 운영되는 리뷰 문화도 팀이 생산하는 또 하나의 결과물이 아닌가 싶다.