Showing Posts From

클릭하는

코드리뷰 후 '감사합니다' 클릭하는 순간의 마음

코드리뷰 후 '감사합니다' 클릭하는 순간의 마음

코드리뷰 후 '감사합니다' 클릭하는 순간의 마음 빨간 알림이 뜬다 슬랙 알림이 떴다. 심장이 쿵 내려앉는다. "@이신입 코드리뷰 남겼어요 👍" 이모지가 웃고 있지만 나는 못 웃는다. 일단 깃허브를 켠다. PR 탭을 누른다. 손가락이 미세하게 떨린다. 댓글이 7개다. 7개. 첫 번째 댓글을 연다. "여기 useCallback으로 감싸는 게 좋을 것 같아요. 지금은 매 렌더링마다 함수가 재생성되고 있어서요." useCallback. 들어봤다. 강의에서 봤다. 근데 왜 쓰는 거더라. 일단 고개를 끄덕인다. 아무도 안 보는데 끄덕인다.구글링을 시작한다 새 탭을 연다. "useCallback 언제 쓰나요" 검색한다. 벨로그 글이 나온다. 읽는다. 아 뭔가 알 것 같다. 스크롤을 내린다. 모르겠다. 두 번째 글을 연다. "useCallback vs useMemo 차이점" 제목이다. 차이점이 아니라 useCallback만 알고 싶은데. 세 번째 글은 영어다. 스택오버플로우다. 패스한다. 다시 첫 번째 글로 돌아간다. 코드 예시를 본다. 복사한다. 메모장에 붙여넣는다. 시계를 본다. 벌써 20분이 지났다. 아직 첫 번째 댓글이다. "빨리 수정해야 하는데..." 입에서 나온다. 혼잣말이다.두 번째 댓글을 연다 "dependency array에 count를 넣어주세요. 지금은 stale closure 문제가 있을 수 있어요." stale closure. 처음 보는 단어다. 아니다. 본 것 같기도 하다. 기억이 안 난다. 또 구글링한다. "stale closure 뜻" 검색한다. 영어 글만 나온다. 한국어로 바꾼다. "오래된 클로저 문제" 이렇게 나온다. 오래된 클로저. 클로저도 잘 모르는데. useEffect 강의를 다시 찾는다. 인프런에 저장해둔 거다. 49분짜리 영상이다. "일단 나중에 보자." 북마크에 넣는다. 이미 북마크는 87개다. 세 번째 댓글을 연다. "early return 패턴 사용하면 가독성이 더 좋을 것 같습니다." 이건 뭔지 안다. if 문을 먼저 쓰는 거다. 이건 할 수 있다. 처음으로 뭔가 이해했다. 기분이 좋다. 3초 정도. 네 번째부터는 포기한다 "불필요한 props drilling이 있네요. Context API 고려해보시겠어요?" Context API. 들어봤다. 쓴 적은 없다. "여기 memo 처리하면 리렌더링 줄일 수 있을 거예요." memo. React.memo. 이것도 들어봤다. 언제 쓰는지는 모른다. "이 부분 custom hook으로 분리하면 어떨까요?" custom hook. 만들어본 적 없다. 선배들 코드에서만 봤다. 마지막 댓글을 연다. "전반적으로 잘 작성하셨어요! 몇 가지만 수정하면 될 것 같습니다 👍" 이 한 줄이 제일 중요하다. "잘 작성하셨어요" 이 부분. 적어도 완전히 망친 건 아니구나. 조금 안심한다.'감사합니다' 버튼을 누른다 이제 답을 달아야 한다. 첫 번째 댓글에 답한다. "아 감사합니다! 수정하겠습니다 👍" 두 번째도 똑같이 쓴다. "감사합니다! 반영하겠습니다 👍" 세 번째는 조금 바꾼다. "오 좋은 의견 감사합니다! 수정할게요 👍" 네 번째부터는 복사 붙여넣기다. 이모지만 바꾼다. 👍에서 🙏로. 마지막 댓글엔 "피드백 감사합니다! 많이 배웠습니다 🙏" 이렇게 쓴다. 많이 배웠습니다. 사실 반만 이해했다. 아니다. 30%도 이해 못 했다. 근데 뭐라고 써야 하나. "죄송한데 이해 못 했어요" 이렇게 쓸 수는 없다. 물어보면 된다고 하는데 7개를 다 물어볼 수는 없다. "바쁘신데 죄송합니다" 이것도 이상하다. 그냥 "감사합니다"가 제일 무난하다. 언제나 그렇다. 실제로 수정을 시작한다 early return부터 한다. 이건 할 수 있다. if 문을 위로 올린다. 커밋한다. "refactor: apply early return pattern" useCallback을 추가한다. 아까 복사한 코드를 참고한다. 함수를 감싼다. 의존성 배열에 뭘 넣어야 하는지 모르겠다. 일단 빈 배열 넣는다. 에러가 난다. ESLint가 뭐라고 한다. "React Hook useCallback has a missing dependency" 의존성 배열에 count를 넣는다. 에러가 사라진다. 된 거 같다. 근데 왜 이렇게 해야 하는지는 모르겠다. 일단 넘어간다. Context API는 패스한다. 시간이 너무 오래 걸릴 것 같다. "다음 PR에 반영하겠습니다" 댓글을 단다. custom hook도 패스한다. 같은 답변을 단다. memo는... 일단 구글링부터 한다. 30분 후에 포기한다. 이것도 "다음에 반영하겠습니다" 댓글을 단다. 다시 리뷰를 요청한다 수정한 코드를 푸시한다. 슬랙에 멘션한다. "@김선배님 수정 완료했습니다! 확인 부탁드립니다 🙏" 10분 후 답장이 온다. "확인했어요 👍 Approve 했습니다~" Approve. 승인이다. 됐다는 거다. 가슴이 뛴다. 진짜로 뛴다. "감사합니다!!" 답장한다. 이번엔 느낌표 2개다. 머지 버튼을 누른다. "Merge pull request" 초록색 버튼이다. 클릭한다. 화면이 보라색으로 바뀐다. "Pull request successfully merged and closed" 성공이다. 첫 PR이 머지됐다. 기분이 좋다. 근데 동시에 불안하다. "저 코드가 진짜 괜찮은 걸까. 내가 제대로 이해한 걸까." 모르겠다. 일단 됐으니까 된 거다. 그렇게 생각하기로 한다. 저녁을 먹는다 편의점에 간다. 김치볶음밥 도시락을 산다. 3900원이다. 사무실로 돌아온다. 전자레인지에 돌린다. 2분 30초. 돌아가는 소리를 들으며 휴대폰을 본다. 깃허브 알림을 다시 확인한다. "Closed" 표시가 있다. 정말 끝난 거다. 딩 소리가 난다. 도시락이 다 됐다. 먹으면서 생각한다. "다음 PR은 좀 더 잘해야지." 근데 다음 PR도 비슷할 것 같다. 댓글 받고, 구글링하고, 반만 이해하고, "감사합니다" 누르고. 그래도 괜찮다. 이게 배우는 거니까. 선배들도 다 이랬을 거니까. 그렇게 믿기로 한다. 퇴근 전 한 가지 더 퇴근 30분 전이다. 노션을 연다. "오늘 배운 것" 페이지다. 마지막 작성일이 2주 전이다. 다시 시작한다. "2024.01.15 배운 것:useCallback: 함수를 메모이제이션함 (아직 정확히는 모름) early return: 조건문을 먼저 처리하는 패턴 코드리뷰 답변 잘하는 법: 일단 감사하다고 하기"마지막 줄은 농담이다. 근데 사실이기도 하다. 저장한다. 노션 페이지를 닫는다. 슬랙을 확인한다. 새 메시지는 없다. 다행이다. 9시가 됐다. 가방을 챙긴다. 노트북을 넣는다. 무겁다. 엘리베이터를 탄다. 1층 버튼을 누른다. 내려가면서 생각한다. "내일은 새 이슈를 받을 거다. 또 PR을 올릴 거다. 또 리뷰를 받을 거다." "또 '감사합니다'를 누를 거다." 문이 열린다. 밖으로 나간다. 바람이 차다. 집에 가서 useCallback 강의를 봐야지. 진짜로 이해하고 싶다. 근데 아마 10분 보다가 잘 거다. 언제나 그랬듯이. 그래도 괜찮다. 조금씩이라도 배우고 있으니까. '감사합니다' 버튼을 누를 때마다, 진짜로 배우는 중이니까.오늘도 '감사합니다'를 7번 눌렀다. 내일은 몇 번 누를까.