XY Problem (feat. 개발자, 질문법)
XY 문제에 대한 포스트
이전 포스트에서 질문하기 전 생각할 내용들에 대해서 찾아봤는데
이번에는 그래서 어떻게 질문하는게 좋은지에 대해서 적어보겠다.
보통 개발 관련 질문을 하다보면 근본적인 문제에 대한 질문이 아닌 이를 해결하기 위해 시도하고 있는 방법에 대해서 질문을 하는 경우가 생긴다.
이를 XY Problem이라 한다
XY Problem??
XY Problem은 위에서 말한것과 같이
실제 문제가 아닌 문제를 해결하기 위한 시도에 대해 묻는 것이다.
이는 도움을 요청하는 사람이나 도움을 받는 사람 모두에게 많은 시간과 에너지 낭비를 하게 한다.
보통 발생하는 순서
- A는 X를 해결하고 싶다.
- A는 Y를 해결하면 X가 해결될 것이라고 생각한다.
- 근데 Y도 어떻게 해결해야 할 지 모른다..
- A는 Y를 해결하기 위해 B에게 질문을 한다.
- B는 Y를 해결해준다.
- 근데 X가 해결되지 않는다
.. 반복 - B가 A에게 해결하려는 문제가 Y가 맞는지 물어본다.
- B가 진짜 문제가 X인 것을 알게 된다.
- 결국 Y가 X에 대한 해결방안이 아닌 것이 밝혀진다.
이런 순서로 문제가 생긴다.
예시
A: "파일 이름 마지막 3글자가 출력되게 해주세요"
B: "넵넵 echo ${foo: -3}"
B: "근데 왜 3글자죠? 어떤걸 하고 싶으신거에요??"
B: "혹시 확장자가 필요하신건가요?"
A: "아 네네"
B: "확장자가 3글자라는 보장은 없어요."
B: "확장자를 가져오기 위해서는 echo ${foo##*.}"
이런식의 문제가 있다...
A: "파일 확장자가 출력되게 해주세요"
B: "확장자를 가져오기 위해서는 echo ${foo##*.}"
두 예시를 비교해보면
윗 예시는 정말 비효율적이다.
만약 이런 간단한 주제가 아닌 어렵고 복잡한 문제였다면???
필요한 시간, 리소스가 훨씬 많이 들었을 것이다.
그래서 어떻게 해야되는데
- 어떤 문제를 해결하고 싶은지에 대한 큰 그림과 시도한 해결책을 같이 질문하자.
- 더 많은 정보를 요청하면 세부 정보를 제공해주자
- 이미 배제한 해결책이 있는 경우 같이 공유하자
질문하기 전 한번 더 생각해보자.
진짜 문제가 무엇인지?
다른 방안들은 없는지?
내가 시도하는 해결방법만 있다는 관점에서 우선 벗어나자