본문 바로가기

소프트웨어-이야기/소프트스킬

XY Problem 이란?

 XY Problem이란?

XY Problem은 실제 문제보다는 문제를 해결하기 위해 시도한 해결방안에 대해 묻는 것이다. 

XY Problem은 도움을 요청하는 사람과 도움을 제공하는 사람 모두에게 많은 시간과 에너지를 소모하게 만든다. 

이 상황에 빠지게 되면, 사람들은 해결방안이라고 믿는 것에 집착하게 된다. 그래서 한발짝 물러서서 그 문제를 설명하지 못하게 만든다.

 

XY Problem이 발생하는 순서 

  • 요청자는 X를 하고 싶어 한다.
  • 개발자는 X는 모르겠지만, Y를 하면 문제를 해결할 수 있다고 생각한다.
  • 요청자는 Y도 할 줄 모른다.
  • 요청자는 다시 Y에 대한 도움을 요청한다.
  • 다른 개발자가 Y로 요청자를 도와주려고 하지만, Y가 해결하고자 하는 것이 이상해보이기 때문에 혼란스러워한다.
  • 많은 커뮤니케이션과 시간 낭비가 있은 후, 요청자가 사실 X를 원했다는 것을 알게 된다.
  • 그리고 Y는 X에 대한 적합한 솔루션이 아니였다는 것이 명백해진다.

 

예시 상황

요청자: "image.png" 파일명을 입력하면, png가 출력되게 해주세요.

개발자A: 넵넵. 파일명의 세글자만 출력해줄게요.

def extract(filename):
    return filename[-3:]
    
print (extract('image.png'))

요청자: 엇. 이상해요~ @개발자B

print (extract('image.jpeg'))

개발자B: 😳? 이게 뭐에요?

요청자: jpeg가 나와야해요~

개발자B: 🤔? @개발자A 왜 이전에는 세글자만 잘랐어요?

개발자A : png가 나와야해서요~

개발자B : 🤔? @요청자 확장자가 필요한거에요?

요청자 : 넵

개발자B: 😫?? 여기요. 

import os 
  
def extract_ext(filename):
    root_ext = os.path.splitext(filename) 
    return root_ext[1]

개발자B: 🤯🤯🤯🤯🤯🤯

 

어떻게 질문해야하는가?

  • 질문을 할 때에는 시도한 해결 방안뿐만 아니라 큰 관점에서 설명해야한다.
  • 도움을 주는 사람이 추가 정보를 요구하는 경우, 상세한 내용을 설명해줘야한다.
  • 배제한 해결 방안이 있다면, 왜 이를 배제했는지 공유해야한다. 

 

어떻게 들어야하는가? 

  • 요청받은 해결 방안이 필요했던 상황과 불편했던 점을 묻는다.
  • 그리고 해결 방안을 결론지은 이유를 묻는다. 

자신이 원하는 것을 모르기 때문에 요청자가 잘못된 요청을 하는 경우가 있다. 때문에 해결방안의 목표를 묻는 경우, 해결방안의 Output(결과값)을 답하는 경우가 있다. 그래서 XY Problem에서 벗어나기 위해서는 해결방안이 나오기 이전의 상황을 살펴봐야한다.

그리고 한발짝 물러서서, 진짜 문제가 무엇인지 검토하고, 단 하나의 해결 방법만 있다는 관점에서 벗어나고자 하는 의식이 필요하다. 

 

참고

 

The XY Problem

What is it? The XY problem is asking about your attempted solution rather than your actual problem. This leads to enormous amounts of wasted time and energy, both on the part of people asking for help, and on the part of those providing help. User wants to

xyproblem.info

 

9 Skills That Separate Beginners From Intermediate Python Programmers

Thinking and writing code…but mostly thinking

medium.com

 

The XY Problem

더 좋은 질문을 하는 방법.

ahnheejong.name