데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Google Chromium 팀의 존중하는 코드리뷰

      KIDO 23.07.27
      3,161 23 4

      존중하는 코드리뷰

      해야할것

      능력있고, 선의를 가지고 있다고 가정하라.

      • 우리는 유능한 사람들을 끌어 들인다.

      • 즉, 그들이 틀렸다고 하더라도 무능력이 아니라 정보 부족으로 비롯된 것일 가능성이 높다.

      • 나쁜 CL은 일반적으로 당사자중 한 사람이 상대방이 알지 못하는 정보를 소유하고 있다는 것을 의미한다.

      직접 대면으로 토론하기

      • 의견이 일치하지 않은 경우 빠른 대면/영상/IM 채팅을 통해 진행 상황을 정리하라.

      • 메일로 오랜 시간동인 왔다 갔다 하는 것보다 직접 만나서 "오, 몰랐어요"라고 말하는 것이 훨씬 쉽다.

      • 다른 검토자와 동의하지 않는 경우 "대면"이 이중으로 적용된다.

      • 그리고 리뷰 결과를 꼭 기록하자.


      • 개인적 경험

        • 개인적인 경험으로 대만의 개발팀과 화상통화를 통해서 이야기한 적이 있었다.

        • 화상통화를 하나의 결정을 하기 위해서 4시간이 걸렸지만, 면대면으로 만나서 이야기 했을때 약 2시간만에 개발 상호간의 이견차를 대부분 해소할 수 있었다.

        • 이러고 보면 글로 의사소통 하거나, 바턴을 주고 받는 방식으로 한번씩 이야기하는 방식으로는 의사결정에 많은 시간이 소모된다.

        • 왜냐하면 상대의 의도를 파악하고, 협의할때에는 그림, 언어, 바디 랭귀지가 훨씬더 좋은 커뮤니케이션 수단이기 때문이다.

      왜인지를 설명하라.

      • 일부 코드가 잘못되었다는 것이 당신에게는 확실히 잘못된 것으로 파악할 수 있지만, 작성자는 분명하지 않을 수 있다.

      • 그렇지 않았다면 그들은 그렇게 작성하지 않았을 것이다.

      • 제발 "이건 틀렸어" 라고 말하지 말길 바란다.

      • 대신 올바른 방법이 무엇인지 적어도 설명을 하라.

      • 또는 그들이 다르게 일해야하는지 이유를 설명하라.

      • 조금이라도 불확실하다면 "어쩌면 내가 뭔가를 놓치고 있을지도 모르지만..." 이 도움이 되는 문장이다.

      왜 인지를 물어라.

      • 작성자가 특정 방식으로 작업을 수행하는 이유가 명확하지 않은 경우 특정 변경을 수행한 이유를 자유롭게 물어보라.

      • 모르는 것도 괞찮다. "왜" 라고 묻는 것은 나중에 질문에 답하는 데 도움이 될 서면 기록으로 남길 수 있다.

      • 그리고 때때로 "왜 그렇게 하기로 결정 했는지요? 궁금합니다." 라고 묻는 것은 작성자가 자신의 결정을 다시한번 생각해 볼 수 있는 기회를 제공한다.


      • 개인적 경험

        • 왜 라고 질문하는 습관은 개발자에게는 특히나 중요한 사항인것 같다.

        • 기획서에 모호한 용어가 있다면, 잘 이해가 가지 않는 기능이 있다면, 왜? 이 기능을 필요로 하는 이유에 대해서 물어보면 이 기능이 정말 필요한지 얼마나 중요한지 알게 되는 경우가 많았다.

        • 우리가 만드는 소프트웨어는 목적성을 갖지 못하면 필요없는 짓을 하는 것과 다름 없는 것과도 같다고 생각한다.

      끝을 찾아라.

      • 깔끔한 것을 좋아한다면 완벽해질 때까지 계속해서 코드 리뷰를 검토하고 필요 이상으로 오래 끌고 싶은 유혹을 느낄 것이다.

      • 하지만 수신자 에게는 영혼을 죽이는 일이다. "LGTM(Looks good to me)"은 "내 불멸의 영혼을 보증한다. 이것은 결코 실패하지 않을 것이다" 가 아니라. "나에게 좋아 보인다"는 의미이다.

      • 보기 좋다면 계속하라. (철저하지 말라는 뜻이 아니라, 판단이다.) 그리고 더 큰 리펙토링이 있다면 새로운 CL(Change List)로 옮겨라.

      합리적인 시간 내에 회신하기

      • 시간대와 다른 그눔시간을 염두에 두고 리뷰 대상자를 오래 기다리게 두지 마라.

      • 만약 24시간 이내 리뷰를 받을 수 없는 경우 CL에 짧은 코멘트를 남겨라 (가능한경우)

      • 만약 해당 기간을 놓친 경우 검토 대상자가 알림 메시지를 IM(Instance Message)으로 보내면 예의를 갖추길 바란다

      • 만약 며칠 이상 휴가나 기타 OOO에 있는 경우 Chromium 코드 검토 도구에서 이를 표시하도록 닉네임을 설정하라. (OOO까지)를 추가하라.

      • 당신에게 코드리뷰를 보내는 모든 사람이 당신의 캘린더를 볼 수 있는 것은 아니라는 점을 기억하라.


      • 개인적 경험

        • 코드리뷰를 요청하거나, 머지 리퀘스트를 요청했을때, 빠른 피드백을 받지 못한다면 다양한 방면으로 손해가 발생하는것을 많이 보았다.

        • 코드의 버전 차이가 나기 시작하고, 코드리뷰를 받는동안 다른 일을 하고 있다면 컨텍스트 스위칭을 하기 위한 시간적인 손해도 많게 된다.

        • 특히나 코드의 버전이 차이가 나면, 연관된 기능들이 푸패하기 시작한다. 리뷰가 되지 않는 기능을 기다리다 다시 만드는 경우나, 우회하는 경우가 발생하면서 낭비가 발생하기도 했다.

      긍정적인점 이야기하기

      • "결함을 모두 찾아라" 는 마임가짐으로 빠지기 매우 쉽지만 긍정적인 점을 인정하는 것은 상황을 예의바르게 유지하고 받는 사람의 하루를 밝게 만드는 데 도움이 된다.

      • 가짜 미소일 필요는 없지만 좋은 결정이 있거나 누군가가 정말 지저분한 작업을 수행하는 경우 좋은 일임을 인정하라.

      • 반대로 리뷰어에 "감사합니다" 라고 말하는 것도 때로는 좋은 일이다.

      하지말것

      사람을 부끄럽게 하지마라.

      • "어떻게 이걸 못봐어?" 라고 말하는 것은 도움이 전혀 되지 않는다.

      • 동료들이 최선을 다하지만 때때로 실수를 한다고 가정한다. 그래서 실수를 발견하기 위해서 코드리뷰를 하는 것이다.

      • 흠잡을데 없는 CL은 굉장하지만, 결함이 있는 CL이 일반적인 것이다.


      • 개인적 경험

        • 개발자들 토론장이 기술 자랑의 무대가 되는 경우를 많이 봤다.

        • 한때는 내가 그 기술 자랑 무대의 주인공이었던 적도 있었다.

        • 그런데 그때마다 후회하고, 발견한 내가 놓치고 있었던 사실은, 토론을 왜 하는지, 현재 프로젝트의 목적을 잊어버리고 있었다는 사실이다.

        • 그리고 내가 토론에 이겼다는 마음 다음에 오는 공허함은 가장 부끄러운 단면 이었던 기억이 난다.

      극단적 이거나 매우 부정적인 언어를 사용하지 마라.

      • 검토중인 변경 사항에 관한 것이든 주변 코드에 관한것이든 "제정신인 사람이라면 이렇게 하지 않을 것이다" 또는 "이 알고리즘은 끔찍합니다" 와 같은 말을 하지마라.

      • 당신이 원하는 것을 하도록 리뷰 받는 사람을 위협할 수 있지만 장기적으로는 도움이 되지 않는다.

      • "이것은 좋은 시작이지만, 약간의 작업이 필요하다." 혹은 "이것은 약간의 정리가 필요하다." 라고 말하는 것이 더 좋다.

      • 사람이 아니라 코드에 대해서 토론하라.


      • 개인적 경험

        • 부정적인 언어도 사기를 꺽지만, 무관심이나 경멸의 눈빛도 조심해야한다는 것을 경험상 알게 되었다.

        • 사람을 움직이기 위해서는 핀찬 보다는 칭찬이 더 효과적이고 긍정적인 결과를 낸다는건 만고의 진리이며, 잘 안 되도 노력해야한다.

        • 개발자라고 시니컬하고 논리적이지 말자~. 이런 행동은 초보자일때만 하는 짓이다. 시간이 지나면서 일은 혼자하는 것이 아니라 많은 사람의 노력으로 만들어지는 것을 잊지 말아야 한다.

      툴 사용을 꺽지마라.

      • 만약 사람들이 자동회된 포매터를 사용한다면, 일관된 코드 기반을 보장하기 위해 서식 지정 권한을 기꺼이 포기하는 것에 감사하라.

      • 자신의 기본 설정을 적용하기 전에 신중하게 생각하라.

      • 사람들이 사소한 변경 사항에서 버그를 찾기 위해 트라이 봇을 사용한다면 낙담시키지 마라.

      • 그들이 더 많은 문제를 해결할 수 있는 더 많은 공간을 만들기 위해 기계 시간을 교환하고 있다는 사실에 오히려 감사하라.


      • 개인적 경험

        • 툴 사용을 막는 것은 아마 기술적 뒤쳐짐에 대한 두려움의 행동이 아닐까 싶다.

        • 사실 다른사람이 매우 편리한 툴을 쓰고 있는데, 그 원리를 이해하지 못하는 경우 반감을 자주 갖게 되는 현상을 알게 되었다.

        • 그럴때마다 나를 돌아보면, 기술적인 무지함이 그런 불안감을 만들어 내고 부정적인 시선으로 바라봤다는 것을 깨달은 적이 많았다.

      사소한 것 오래끌지 않기

      • 이 결정이 장기적으로 정말 중요한지 또는 주관적인 선호를 강요하고 있지 않는지 항상 스스로에게 물어보라.

      • 맞으면 기분이 좋지만 두 참가자 중 한명만이 그 게임에서 이길 수 있다.

      • 중요하지 않은 경우 동의하지 않고 계속 진행하라.


      • 개인적 경험

        • 내가아는 지인의 회사에서 코드 리뷰를 하면서 상대를 인격적으로 공격하는 분위기에 대해서 자주 들었다.

        • 영어가 문법에 맞지 않는다는둥, 단어가 이게 아니라는둥.

        • 코드리뷰에서 가장 많이 나오는 것이 이런 영어문법에 대한 지적이다.

        • 그리고 코드 작성 방법에 대한 논쟁으로 쓸데없는 시간을 허비하는 코드리뷰를 많이 하는것 같다.

        • 그런데 나의 생각은 "영어 공부는 영어학원에 가서 하시라." 라고 말하고 싶다.


      • 코드리뷰의 첫번재는 의도와 목적이 무엇인지 물어보고 그것을 서로 가장 잘 이해하는 용어 혹은 메타포를 찾고, 목적을 가장 잘 수행할 수 있는 올바른 아키텍처와 모델을 찾는 것이라는 것을 잊어 버리지 말아야한다.

      • 쓸데없는 코드리뷰를 절약하면 그만큼 개발 시간을 늘일 수 있다. 5명이 2시간 코드 리뷰를 절약하면 10시간의 개발 시간을 확보할 수 있음을 꼭 깨달아야 한다.

      • 그리고 코드 작성법은 꼭 코드작성 규칙을 문서화고 숙지하는 노력보다, 자동 포매터를 사용하는것이 훨씬 생산적이다~.

      용어

      • CL

        • Change Log (변경 이력)

      • LGTM

        • Looks Good To Me (나에게는 좋아보임)

      • IM

        • Instant Message (인스턴트 메시지 - DM)

      • Bikeshedding

        • C. Northcote Parkinson이 사소함의 법칙으로 만든 용어

        • 개발팀이 자전거 주차장의 색상과 같이 시스템의 사소하거나 중요하지 않은 세부 사항에 과도한 시간과 노력을 할애할 때 발생한다.

      WrapUp

      • 개발을 진행하고 경력이 쌓이면서 조직에 위와 같은 그라운드 룰이 꼭 필요함을 느낀다.

      • 특히나 태도에 대한 그라운드 룰은 조직을 긍정적으로 만들어내기 위해서 반드시 신중하게 도입하고 실천해야하는 사항이 아닐까 생각이 든다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      KIDO 님의 최신 블로그

      더보기
      동영상 기고하기