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>
'일기' 카테고리의 다른 글
일본 여행 (29) | 2012.07.23 |
---|---|
뉴질랜드 여행을 갔다온 후... (0) | 2011.12.07 |
뉴질랜드 여행 준비 (0) | 2011.11.25 |
비행기표 (0) | 2010.05.06 |
오픈했다~ (0) | 2009.12.08 |