성장

내가 생각하는 좋은 코드 리뷰

JHKim93 2024. 9. 21. 21:59

  협업을 하게되면 코드 리뷰에 대해 고민을 많이 하게된다. 특히 아무것도 모르는 주니어이기에 내가 뭘 리뷰할 수 있겠어라며 코드 리뷰를 포기하기도 한다. 하지만 대부분의 좋은 개발 조직에서는 코드 리뷰에 대해 고민하고 좋은 코드 리뷰를 해야한다고 강조한다.

  하지만 한 번 반대로 생각해보자. 이직을 생각하고 있는 지원자의 입장에서 좋은 개발 조직으로의 이직을 원한다면 그 조직이 좋은 코드 리뷰를 하고 있는 지 물어볼 수 있어야 한다. 그리고 그 질문을 하려면 자기 자신이 생각하는 좋은 코드 리뷰에 대해서 명확하게 정의할 수 있어야 한다. 2년이 채 안되는 경력이지만 그간의 경험을 바탕으로 주니어 레벨인 현재의 내가 생각하는 좋은 코드 리뷰와 반대로 나쁜 코드 리뷰에 대한 기록을 남기고자 한다.

나쁜 코드 리뷰

1. 시니어 to 주니어 일방적 코드 리뷰
  경험 많은 시니어가 당연히 더 좋은 코드 리뷰를 해줄 것이다. 하지만 그 조직의 문화가 이런 일방적인 코드 리뷰를 지향한다면 그것은 좋은 방향이 아니라고 생각한다.

2. 틀린 점만 찾아내는 코드 리뷰
  나에게 코드 리뷰가 들어왔을 때, 코드의 잘 못된 부분을 찾고 있다면 나는 좋지 않은 코드 리뷰 문화를 가진 조직에서 일하고 있을 확률이 높다.

3. 코드 리뷰를 위한 코드 리뷰
  코드 리뷰를 할 때, 문제 또는 업무에 대한 이해가 없다면 좋은 코드 리뷰를 할 수 없다. 단순히 해당 언어를 안다는 이유로 코드 리뷰를 하도록 시키는 것은 잘못된 방식이라고 생각한다.

좋은 코드 리뷰

1. 가르치는 리뷰가 아니라 질문하는 리뷰
  코드 리뷰의 목적이 가르침이 되어서는 안된다고 생각한다. 물론 컨벤션에 어긋나거나 에러를 발생시킬 수 있는 코드에 대해 리뷰를 통해 수정을 요청할 수 있겠지만 팀원들이 코드 리뷰를 대하는 태도에 있어서 가르침보다는 질문과 토론이 첫번째 목표여야 한다. 즉, 리뷰가 많이 달리면 나쁜 코드이고 리뷰가 적게 달리면 좋은 코드라고 생각하는 것은 잘 못된 생각이다. 리뷰의 개수는 그 조직이 얼마나 코드 리뷰에 대해 적극적이고 긍정적인 태도를 갖고 있는 지를 이야기할 뿐이다. 리뷰의 개수는 그 PR의 코드 퀄리티를 의미하지 않는다.

2. 칭찬하는 코드 리뷰
  코드 리뷰의 목적은 그 코드를 더 나은 코드로 만드는 것이 맞다. 하지만 한 가지 목적이 더 있는데 그것은 더 나은 나를 만드는 것이다. 코드 리뷰를 하다가 좋은 코드를 발견했다면 그 부분을 칭찬하고 어떻게 이런 생각을 하고 이런 코드를 짤 수 있었는 지 물어볼 수 있어야 한다.

3. 문제 중심의 코드 리뷰
  언어적으로 얼마나 가독성 좋고 효율적인 코드를 짰는가도 중요한 부분이다. 하지만 좋은 코드 리뷰는 이보다 한 걸음 더 나아가서 리뷰어가 해당 문제에 대해 이해하고 있어야 하고 그 문제에 대해 리뷰 요청자와 토론할 수 있어야 한다. 단순히 코드만 바라보는 것이 아니라 그 코드가 해결하고자 하는 문제와 그 문제를 해결하는 방법에 대해서 토론할 수 있는 코드 리뷰 문화가 자리 잡아 있다면 더 이상 바랄 것이 없다.