눈사람과 요구사항의 공통점은 다음과 같다.

 

 

눈덩이는 굴릴수록 커지고 요구사항은 이야기할수록 구체화된다.

 

눈사람은 손바닥의 작은 눈덩이로 시작하고 요구사항은 한 두 줄의 간단한 문장으로 시작한다. 눈사람을 완성하기 위해서는 적당한 크기가 되어야 하듯이 요구사항도 구현하기 위해서는 개발 가능한 수준으로 구체화해야 한다. 눈덩이를 만드는 것과 요구사항을 구체화하는 것은 모두 시작이 어렵다.

울퉁불퉁하고 흙이 많은 땅에서 예쁘고 적당한 크기의 눈덩이를 만들기는 어렵다. 눈덩이에 눈에 섞이기도 하고, 돌멩이를 만나면 울퉁불퉁한 모양이 되기도 한다. 양질의 눈이 두껍게 쌓인 비탈길을 만나는 행운이 있다면 예쁜 눈덩이를 쉽게 만들 수도 있다. 요구사항 정의도 마찬가지이다. 현재의 문제를 정확하게 이해하고 있는 이해관계자를 만나면 요구사항 정의는 아주 쉬워진다. 문제에 대한 진지한 고민 없이 유행하는 기술을 적용하기 위한 요구사항은 최악이다. 예를 들어 ‘디지털 혁신’을 적용해서 어떤 문제를 해결해야 하는지, 그러한 문제가 어느 정도 심각한지도 모르면서 유행에 따라 AI 적용을 위한 요구사항을 구현하면 그 기능을 사용하는 고객에게 나쁜 경험을 제공할 뿐만 아니라 그 기능 유지를 위한 직원들의 노력도 낭비가 된다.

예쁜 눈사람을 만들기 위해서는 환경이 중요하다. 환경이 나쁘다면 눈사람을 만드는 과정을 즐기는데 집중하고, 예쁜 눈사람을 만드는 기대는 내려놓아야 한다. 요구사항 정의도 마찬가지이다. 요구사항을 정의하는 이해관계자들이 문제를 명확히 못하고 적용방안에 집중한다면 프로젝트 팀이 문제를 명확하게 할 것을 끈기를 가지고 설득해야 한다. 갑과 을의 분위기에 눌려 잘못된 요구사항인지 알면서 그것을 구체화하고 개발하면 프로젝트 팀원은 동기부여되지 않는다. 유행하는 신기술 적용과 같이 외면하기 힘든 요구사항은 파일럿으로 개발하여 사용자들의 반응을 본 뒤 본격 개발을 결정하는 식으로 이해관계자를 설득하는 것도 좋다.

 

 

대부분의 눈사람과 요구사항은 변한다.

 

처음 만든 눈사람 모양을 그대로 유지하기 위해서는 낮은 온도가 지속되어야 하고 눈이나 비가 오지 않아야 한다. 사람이 인위적으로 만들지 않고서는 자연에서는 불가능에 가까운 조건이다(얼음동굴에서는 가능할 수 있지만 얼음동굴에서는 눈이 없다). 자연에서는 온도가 상승하기도 하고, 눈이나 비가 내리기도 한다. 한마디로 눈사람은 언제든지 모양이 변할 만반의 준비를 갖추고 있다.

요구사항도 마찬가지이다. 이해관계자들의 마음은 변한다. 이해관계자가 요구사항을 변경했다는 의미로 ‘변심’이라는 극단적인 단어를 사용하는데 이는 달리 생각해야 한다. 모든 것을 희생할 각오를 한 열정적인 사랑도 변하는데 이해관계자의 변심은 아무것도 아니다. 다만 사랑을 시작하는 순간의 연인의 마음이 진심이듯이 요구사항을 처음 제시할 때 이해관계자들의 마음도 순수했다는 것을 믿어주자. 이해관계자들의 변심은 나쁜 것이 아니고 계절의 변화처럼 자연스러운 것이다. 태양의 고도에 따라 계절이 바뀌는 것을 탓하지 않듯이 구현된 요구사항을 사용해보고 요구사항이 바뀌는 것을 탓해서는 안된다. 이해관계자들의 요구사항이 변하지 않기를 기대한 프로젝트 팀의 욕심일 뿐이다. 다만 사랑이 변해도 참고 사는 부부가 많듯이 요구사항이 변해도 내색 않고 사용하는 이해관계자들도 많다. 건축과 같은 프로젝트 결과물은 그런 경우가 많다.

슬기로운 PM이라면 다음과 같은 질문을 던져야 한다. 독자의 이해를 돕기 위해 눈사람에 비유하겠다.

  • 지금의 눈사람은 언제 어떠한 모양으로 변할 것인가? (지금의 요구사항은 어떤 조건이 충족되면 변할 것인가?)
  • 그때 눈사람이 봐 줄만 할까? (요구사항 구현 후에 불편해도 고객이 사용할 수 있는 수준일까?)
  • 눈사람이 녹은 뒤 땅의 모양은 어떨까? 다시 눈사람을 만들 환경은 될까? (구현된 요구사항을 제거하는데 문제는 없을까?)

 

 

눈덩이를 사람처럼 보이기 위해서는 노력이 필요하다.
요구사항도 사용성을 갖추기 위해서는 노력이 필요하다.

 

눈사람의 머리와 몸체를 완성한 뒤에는 마무리를 해야 한다. 나뭇가지를 꼽아 팔을 만들고, 눈, 코, 입도 만들어야 한다. 마무리를 한 눈사람과 아닌 눈사람은 큰 차이가 있다. 눈덩이 만드는 것에 비하면 마무리 작업은 쉽다. 요구사항도 사용자 관점에서 마무리를 해야 한다. 사용성 높은 요구사항 완성을 위해 고려할 사항의 예는 다음과 같다. 마무리를 잘해야 예쁜 눈사람이 되고, 사용자가 편리하게 사용한다.

  • 메시지 또는 필드명이 일관된 용어를 사용하고 사용자가 이해하기 쉬운가?
  • 다양한 예외 케이스에서 사용자가 스스로 조치할 수 있는 가이드를 제공하는가?
  • 사용자가 입력 값을 잘못 등록했을 때 사전에 검증하여 사용자에게 정확한 값 입력을 안내하는가?

 

 

김병호 님이 브런치에 게재한 글을 편집한 뒤 모비인사이드에서 한 번 더 소개합니다.