PR을 유연하게 : Ship Show Ask 전략

allocProc
4 min readMay 27, 2022

--

Photo by charlesdeluvio on Unsplash

martinfowler.com 에 Rouan Wilsenach 라는 엔지니어가 기재한 Ship / Show / Ask 라는 글을 읽고 번역한 글입니다. 제 사견이 첨가되어 있으니 감안하고 봐주시면 좋겠습니다.

Pull Request(PR)은 혁신이었고 현재 전세계적으로 많은 소프트웨어 팀이 자사의 소프트웨어 개발에 채택해서 사용하고있다. 하지만 PR 또한 문제점이 존재했다.

PR의 문제점

- PR은 지체될 수 있다. → 기다리는 시간이 낭비된다. → 제품의 배포가 지연된다.

- PR은 피로한 일이다. → 그냥 생각없이 승인하게될 수 있다. (LGTM)

Ship Show Ask 전략

Ship

  • 변경을 바로 머지한다.
  • 코드 리뷰 요청을 따로 안하는 것
  • 어떤 상황에 적합할까?
    - 일반적인 패턴을 따른 기능의 추가
    - 사소한 버그 픽스
    - 문서 갱신
    - 피드백을 반영한 코드

Show

  • PR은 만들지만 머지를 바로 한다. (리뷰 생략)
  • 변경을 빠르게 적용하지만,
  • 의견을 나눌 수 있는 여지를 남기는 것
  • 어떤 상황에 적합할까?
    - 더 좋은 코드를 위해 동료의 의견을 받으면 좋겠다.
    - 새로 사용한 패턴이나 접근법을 공유하고 싶은 경우
    - 내용을 공유하고 싶은 경우

Ask

  • 일반적인 PR 패턴
  • PR을 요청하고 즉시 머지하지 않고 동료들의 승인을 기다린다.
  • 어떤 상황에 적합할까?
    - 내 코드가 잘 동작할지 확인받고싶다.
    - 새로운 접근법을 동료들은 어떻게 느끼는지 궁금하다.
    - 내가 접근한 방법 이외에 더 나은 방법을 알고 싶다.

PR 승인 &코드 리뷰가 단순히 PR을 머지하기 위한 조건이어서는 안된다.

  • 본인의 PR은 본인이 머지해야한다. → 변경에 대한 제어는 본인에게
  • 브랜치는 길지 않게 유지하자. → 리베이스를 자주 하자.

대화의 중요성

  • PR은 코드의 변경에 대해 논의할 수 있는 아주 유용한 방법 중 하나다.
  • 하지만 이 때문에 PR이 대화를 대체할 수 있다고 생각한다면 그건 아주 큰 착각이다.
  • 브랜칭 후 작업을 하고 PR을 요청하면 리뷰어들은 내가 선택한 그 솔루션에 매몰되기 쉽다.
  • 최선이 아닐수도 있는 그 솔루션을 보면서 리뷰하면 다른 솔루션을 생각해내기 쉽지않다.
  • 이는 PR의 사이즈가 커질수록 더 심해진다.
  • 그래서 작업을 시작하기 전에 팀원과 대화를 먼저 해보자.
  • PR이 Show 혹은 Ask 를 하기 위한 유일한 수단인건 아니다. 우리는 대화라는 훌륭한 수단이 있다.
  • 팀원들에게 내 작업을 일찍 그리고 자주 보여주자.

세가지 방식 중 어떤걸 언제 쓰지?

  • 기능을 특정한 패턴에 따라 개발하거나, 팀 내에 높은 수준의 quality standard 가 존재하고 그걸 항상 따른다면 Shipping 을 자주 하게 될 것이다. → 높은 수준의 테스트 코드가 필요할 것 같다.
  • 아직 서로 알아가는 중이고, 새로운 시도를 많이 하게 된다면 Showing 이나 Asking 을 자주 하게 될 것이다.
  • 주니어 엔지니어는 아무래도 Show, Ask 를 많이 요청할 것이고
  • 시니어 엔지니어는 Ship을 상대적으로 많이 할것이다. 물론 새로운 테크닉이나 리팩토링을 소개해야한다면 Show 하는 자리가 필요할 것이다.

Ship / Show / Ask 가 주는 의미

PR은 코드 배포를 위한 반드시 거쳐야하는 관문같은게 아니다. PR은 코드 퀄리티를 높이기 위한 수단이다.

PR을 잘못 사용하면 코드는 배포하는 과정이 굉장히 지루하고 불필요하게 느껴지고 배포 주기에도 안좋은 영향을 줄것이다. Ship / Show / Ask 전략은 PR을 조금 유연하게 바라볼 수 있게 해준다.

Ship / Show / Ask 전략은 코드를 배포하기 전에 항상 나에게 한번 더 생각하도록 강요한다. “Always Ship” 과 “Always Ask” 의 양 극단 사이에서 이번 배포는 어디쯤에 위치하는게 적절할지 고민할 수 있도록.

Should I Ship, Show or Ask?

--

--

No responses yet