양자역학이나, 혹은 이를 다룬 여러 콘텐츠를 접해본 사람이라면 아마 슈뢰딩거의 고양이라는 유명한 사고 실험에 대해 들어보았을 것이다. 원래는 양자역학의 불완전성을 비판하기 위한 사고 실험이었으나, 아이러니하게도, 현재는 양자역학의 특성을 잘 설명하는 사고 실험 중 하나다. 모르는 이를 위해 간단히 내용을 소개하자면 다음과 같다.
고양이 한 마리와 청산가리가 든 유리병, 방사성물질 라듐, 방사능을 검출하는 가이거 계수기, 망치가 상자에 들어 있다. 상자는 외부 세계에 차단되어 있고, 밖에서 내부를 볼 수 없다. 라듐 핵이 붕괴하면 가이거 계수기가 그걸 탐지한다. 그러면 망치가 유리병을 내려쳐 깨게 돼 청산가리가 유출된다. 청산가리를 마신 고양이는 죽게 된다. 라듐이 붕괴할 확률은 1시간 뒤 50퍼센트다. 1시간 뒤 고양이는 죽었을까 살았을까?
결론을 이야기 하자면, 양자역학상, 고양이는 관찰하기 전 까지 생존과 죽음이 중첩된 상태이며, 관측을 할 경우 둘 중 하나의 결과로 결정된다는 것이다 – 무슨 말도 안되는 소리인가 싶겠지만, 원래 양자역학이 일반인의 인지를 벗어난 학문이다 보니 그렇다고들 한다.
그리고 나는 어느날 갑자기 소프트웨어 개발 프로젝트에서의 고객의 요구 사항 역시 슈뢰딩거의 고양이와 매우 유사하다는 생각이 들었다.
프로덕트 오너 혹은 기획자가 고객의 요구 사항을 관찰(확인)하기 전 까지 고객의 요구 사항은 존재하는 것과 존재하지 않는 것이 서로 중첩되어 있다. 소프트웨어 엔지니어링에서 일반적으로 고객의 요구 사항에 대해 고객 스스로도 잘 모른다는 개념은 중요하게 강조되곤 하는데, 이는 실제로 고객이 요구 사항이 없다는 것이 아니라, 요구하는 무언가가 있지만, 반대로 그 요구하는 것이 구체적으로 무엇인지 실체가 없는 것을 의미한다. – 즉 존재하지만, 존재하지 않는다.
때문에 소프트웨어 개발 방법론에서 다루는 중요한 도구로, 바로 고객의 요구 사항을 면밀히 관찰하고, 변화하는 요구 사항(관찰에 의해 정의가 바뀌게 된 요구 사항)에 유연하게 대처하는 방법에 대해 다루곤 한다. 결국 고객과의 소통을 더 확실하고 명확하게 하기 위한 여러가지 방법들이 제시되고 있지만 여전히 쉬운 프로젝트는 없다. 마치 양자역학처럼 논리로 쉽게 이해하기 어려운 사람의 마음을 알아내기 위한 일이다 보니, 오늘도 많은 프로덕트 오너와 개발자들은 고객이라는 소우주를 탐험하면서 머리를 쥐어뜯고 있는 것 아닐까. ?