일기2014. 6. 2. 11:37

The XY Problem

어느 프로그래밍 관련 커뮤니티에서 The XY Problem에 관한 글을 보았다.

The XY Problem이라는 단어를 처음 들어봤었는데 내용이 참 흥미로웠다.


1. 어떤사람이 X라는 일을 하려고 한다.

2. 그 사람은 X를 어떻게 하는지 모른다. 하지만 고민 끝에 머리를 굴려서 Y라는 일을 통해 X를 해결하는 방법을 생각해낸다.

3. 그러나 그 사람은 Y도 어떻게 하는지 모른다.

4. 그래서 Y에 대해 질문한다.

5. 사람들은 그 사람의 Y라는 질문에 대해 많은 도움을 준다. 하지만 도와주는 사람들은 의도를 알수없는 뜬금없는 Y같은 문제에 대해 궁금해하며 혼란스러워한다.

6.한참 많은 대화를 나누며 시간을 낭비한 끝에 그 사람은 X라는걸 하려는것이고 Y는 정작 X를 해결하기위한 적절한 방법이 아니라는것을 깨닫는다.


http://mywiki.wooledge.org/XyProblem에 나오는 첫번째 예를 보자면

(해결방법을 알기 쉽게 java형식으로 바꿨다)


<늅늅> 파일이름에서 맨 끝의 3글자를 어떻게 얻을 수 있나요?


<Gromit> 파일이름이 String 변수에 있다면 String threechar = str.substring( str.length-3, 3 ); 하면 됩니다.

<Gromit> 근데 왜 하필 맨 끝 3글자인가요? 진짜로 원하는게 뭐예요?

<Gromit> 설마 파일의 확장자를 알고 싶은 건가요?


<늅늅> 네


<Gromit> 당신이 해결하려는 원래의 질문을 해주세요.

<Gromit> 모든 파일들의 확장자가 꼭 3글자라는 보장이 없기때문에

<Gromit> 무작정 맨끝의 3글자만 가져와서는 문제를 해결할 수가 없습니다.

<Gromit> String str = str.substring( str.lastindexof(".") + 1 );



이런 에피소드를 의외로 자주 봐왔고 나도 이런 실수를 한 적이 있다.

이런 일들이 그나마 많은 대화를 통해 올바른 방향으로 해결된다면 다행이지만

그렇지 않을 경우 재해수준으로 심각해질 위험이 있다.


프로그래밍 초보 수준이라면 위와 같은 실수를 누구나 한다.

잘 모르기 때문에 어떻게 해결할까 스스로 고민하는것도 좋지만

'내가 했던 고민들을 누군가도 했을것이다. 그사람들은 어떻게 해결했을까?'

라는 마음을 갖고 검색을(올바른방향을 찾기위한) 조금만 해도 쉽게 알 수 있다.


'어떤 문제를 해결하기 위한 방법'을 찾는 방법을 아는 것도 프로그래머의 실력을 판가름하는 중요한 기준이 된다.



내용 참고

<http://mywiki.wooledge.org/XyProblem>



'일기' 카테고리의 다른 글

일본 여행  (0) 2012.07.23
뉴질랜드 여행을 갔다온 후...  (0) 2011.12.07
뉴질랜드 여행 준비  (0) 2011.11.25
비행기표  (0) 2010.05.06
오픈했다~  (0) 2009.12.08
Posted by Gromit.kr