The XY Problem

더 좋은 질문을 하는 방법.

얼마 전 동아리 슬랙에서 선배를 통해 The XY Problem이란 개념에 대해 들었다. 해당 페이지에 아주 간결하면서도 명료하게 정리가 되어 있는데, 비슷한 상황을 한 번이라도 목격/경험한 사람은 무슨 이야기인지 바로 감이 올 것이다.

  • 유저는 X를 하길 원한다. (User wants to do X.)
  • 유저는 X를 어떻게 하는지는 모르지만, 만약 Y를 해낼 수 있다면 어떻게든 X의 해결책을 더듬거려가며 찾아낼 수 있을 것이라 생각한다. (User doesn’t know how to do X, but thinks they can fumble their way to a solution if they can just manage to do Y.)
  • 유저는 Y도 어떻게 해야 할지 모른다. (User doesn’t know how to do Y either.)
  • 유저는 Y에 관해 도움을 요청한다. (User asks for help with Y.)
  • 다른 이들이 Y에 관해 도움을 주려 하지만, Y라는 문제를 풀려는 이유를 이해하지 못하고 혼란에 빠진다. (Others try to help user with Y, but are confused because Y seems like a strange problem to want to solve.)
  • 많은 상호작용과 시간 낭비 이후에 마침내 유저는 X에 관한 도움을 필요로 하고, Y는 사실 X라는 문제를 해결하기에 적합한 해결책이 아니었다는 것이 명백해진다. (After much interaction and wasted time, it finally becomes clear that the user really wants help with X, and that Y wasn’t even a suitable solution for X.)

다른 모든 것과 마찬가지로 질문도 하다 보면 늘기 마련이다. (나는 다른 분야의 경험은 없으니 프로그래밍에 한정해보면) 경험상 무얼 어떻게 물어야 할지 모르는, 이 분야에 막 발을 들여놓은 사람들이 자주 저지르는 실수 같다. 나도 이런 실수를 참 많이 했는데, 여러 번의 경험을 통해 얻은 교훈과 비슷한 내용이 링크된 글 본문에도 적혀 있다.

  • 질문을 할 때에는 항상 내가 이 질문을 하게 된 주변 상황을 설명한다.
  • 턴 테이킹이 일어날 필요가 없도록, 맨 처음 질문에 가능한 최대한 많은 정보를 (중요한 순서대로) 나열한다.
  • 예를 들자면 다음과 같이 질문할 수 있겠다.
    • 저는 궁극적으로 Z를 하고 싶습니다. 그러기 위한 액션 플랜으로 A, B, C 의 안을 생각했지만 A는 이런 이유, B는 저런 이유로 적합하지 않은 해결책이라 판단했습니다. 따라서 C를 하려 하는데 그러기 위해선 첫 단계로 C-1을 진행해야 할 것 같습니다. 헌데 여기서 이런 문제 때문에 막혀 있습니다. 도움을 얻을 수 있을까요? 아래에 관련해서 찾아 본 이슈와 로그를 첨부합니다.

경험이 일천한 나도 체감 했을만한 내용이니 업계에 있는 대부분의 분들이 이미 잘 알고 있겠으나, 이런 용어가 있다는 것은 모를 수 있겠다고 생각해서 간단하게 글로 남겨본다.