녕후킴

9월 2주차

0 views

📌 XYProblem

stackoverflow를 검색하다가 XYProblem이라는 단어를 배웠다. 위키피디아 정의는 다음과 같다.

The XY problem is a communication problem encountered in help desk, technical support, software engineering, or customer service situations where the question is about an end user’s attempted solution (Y) rather than the root problem itself (X)

뭐 안내 데스크나, 소프트웨어 개발, 고객 응대할시 발생하는 커뮤니케이션 문제인 것은 알겠는데, 잘 와닿지 않아서 PerlMonks 라는 커뮤니티 사이트에서 언급된 내용을 가져와봤다.

Someone asks how to do Y when they really want to do X. They ask how to do Y because they believe it is the best way to accomplish X. People trying to help go through many iterations of “try this”, followed by “that won’t work because of”. That is, depending on the circumstances, other solutions may be the way to go.

그러니까, X(root problem)에 대한 언급 없이 Y(solution)만을 요구하는 문제라고 한다. 이게 문제가 되는 이유는 물어보는 쪽이나 도와주려는 쪽이나 시간적으로, 에너지적으로 많은 낭비가 발생하기 때문이라고 한다.

stackexchange 에서 XYProblems가 발생하는 상황을 제시해주었다.

  1. 유저는 X하기를 원한다.
  2. 유저는 X하는 방벙블 모르지만, 왠지 Y가 해결책이 될수 있다고 생각한다.
  3. 하지만 유저는 Y에 대한 해결책 역시도 모른다.
  4. 유저는 Y에 대해서 도움을 요청한다.
  5. 다른 사람들은 Y의 해결에 도움을 주려고 했으나, Y라는 문제를 해결하려 하는 것이 이상해보입니다.
  6. 여러 소통과 시간 낭비 끝에, 유저가 X를 해결하기를 원하고 Y는 X의 올바른 해결책이 아님을 깨닫습니다.

뭔가 내가 회사 생활 처음 했을때나, 주변 신입분들이 이 상황으로 인해서 많이 혼이났던 것 같은…


📌 Cherry Pick의 사용

금일 처음으로 cherry pick을 사용할만한 상황을 마주쳤다. base가 develop인 B 브랜치를 작업하는 도중에, PR이 올라간 A 브랜치 작업 결과물이 필요했다.

B 브랜치 작업에 들어가기 전에 A 브랜치 작업물이 필요한 것을 알았으면 B 브랜치를 A 브랜치로부터 땄을텐데, 이를 모르고 작업했다. 그래서 cherry pick을 통해서 A브랜치의 작업 결과물을 가져왔다. ` 추가적으로, PR이 올라간 A 브랜치 작업은 작업 내용이 ‘마커에 이미지가 보여지지 않는 버그 수정’이었다. 하나의 commit으로 버그 수정을 끝낼 수 있었기 때문에 commit 메세지를 ‘버그 수정’이라고 적었다. 왜냐하면 PR의 목적은 제목부터 드러나기 때문에, commit이 하나인 경우, 제목을 ‘버그 수정’이라고 지어놔도 리뷰어 입장에서는 commit이 무엇을 하는지 알수 있기 때문이다.

헌데 다른 브랜치에서 다른 작업을 할 때 ‘버그 수정’이라는 commit을 cherry pick하게 되면 리뷰어 입장에서 무슨 버그를 수정했는지 모르기 때문에 별로 좋은 네이밍이 아님을 깨달았다.