Extremely Agile/General2009.01.16 14:00
흔히 시스템을 만들 때 요구사항을 먼저 수집하곤 합니다. 그러나 떄로는 실제 사용자로부터 요구사항을 수집하지 않은 상태에서 (혹은 수집할 수 없는 상태에서) 시스템을 만들어야 하는 경우도 있습니다. 특히 새로운 프로그램을 만드는 경우에 그런 일이 많이 벌어집니다.

실제 사용자로부터 요구사항을 수집할 수 없거나, 수집하지 않은 상태에서 시스템을 만들어야 하는 프로젝트는, 대략 다음 중 하나의 경우에 해당합니다.

1. 연구용 프로젝트
2. 납품이 가능할지 알 수 없는 상태에서 진행되는 프로젝트
3. 혁신적 프로젝트

연구용 프로젝트는 보통 연구자의 필요에 의해 시작되고 진행되기 떄문에, 연구자 자신이 실제 사용자가 되기도 합니다. 그런 측면에서 보자면 "요구사항을 알 수 없어도" 적어도 연구자 자신의 필요에 부합하는 시스템은 나오게 마련입니다. 제 짧은 소견에 비추어 보자면, 많은 오픈소스 프로젝트들은 이 범주에 듭니다. 이런 범주에 드는 시스템은 공개되는 순간 비슷한 관심사를 가지고 있는 많은 동료 연구자들의 지지를 받게 마련이고, 데드라인이라는 제약에서 한 걸음 떨어져 있는 경우가 많아 비교적 느긋하게 요구사항 변화를 통제할 수 있습니다.

혁신적 프로젝트는 보통 시장을 선도할 목적으로 시작되는 프로젝트인데, 운이 좋으면 굉장히 많은 잠재적 사용자들을 고용(?)해서 시작할 수 있습니다만(큰 회사인 경우에 그렇죠) 그렇지 않을 경우에는 프로젝트에 관계된 사람들이 시장의 요구를 예측해서 진행해야 합니다. 어느 쪽이건 간에, 가급적 빠른 시간 내에 내부/외부 사용자들을 접촉해서 피드백을 받기 시작해야 합니다. 그렇지 않으면 프로젝트 후반부에 요구사항 변경과 씨름하느라 일이 좀 힘들어지죠. 혁신적 프로젝트라는 것이 이전 프로젝트의 결과물에 기반한 경우에는 이전 사용자들로부터 수집한 많은 이야기들이 새로운 프로젝트의 밑거름이 될 수 있어서 좀 낫겠습니다만, 그런 경험이 없는 프로젝트라면 더더욱 조심하는 것이 좋습니다.

가장 난감한 프로젝트 유형은 납품이 가능할지 알 수 없는 상태에서 진행되는 프로젝트입니다.

가령 A라는 회사가 B라는 고객이 조만간 '이런 저런 시스템'을 BMT를 통해 구매할거라는 소문을 들었다고 합시다. A라는 회사는 '이런 저런 시스템'을 만들어 본 경험이 있는 회사는 아닌데, '이런 저런 시스템과 비슷한 시스템'을 만들어 본 경험은 있는 회사입니다. B라는 고객은 '이런 저런 시스템'에 꽤 큰 돈을 들일 가능성이 높은 회사라, A사의 경영진은 곧 '이런 저런 시스템'을 만들기 위한 프로젝트 팀을 꾸립니다.

문제는, 이 때 부터 '이런 저런 시스템'에 대한 추측과 '이런 저런 시스템'을 사용할 사용자에 대한 추측이 진행된다는 점입니다. 개발자들은 (1) 이런 요구사항이 나중에 어마어마한 CUSTOMIZATION 요구로 다가올 수 있다는 점과 (2) 계약이 불발날 경우에는 자신들이 만든 코드가 백업 테이프 어딘가에 처박혀 먼지를 뒤집어 쓰게 될 수도 있다는 점을 알고 있기 때문에, 가능한한 그런 일을 피하고자 하게 마련입니다.

이 때 부터 소위 Software Engineering의 여러가지 원칙들이 시험대에 오릅니다. "과도한 Generalization은 좋지 않다"같은 원칙이 제일 먼저 공격을 받습니다. 요구사항을 정확히 알수 없는 상황에서 개발자들은 본능적으로 "모든 코드를 최대한 확장 가능하게 만들"려 애쓰게 됩니다. 언뜻 보면 디자인 패턴(Design pattern)을 통한 개발에 모든 개발자들이 맹목적으로 달려들기 때문에 상황이 개선되고 있는 것 처럼 보이기도 합니다만, 나중에 보면 애초에 만들려던 '이런 저런 시스템' 대신 '어디서 많이 본 시스템', 그것도 마치 '미들웨어의 냄새가 강하게 풍기는' 시스템이 만들어지게 되는 일이 왕왕 생깁니다.

(이런 일이 벌어지고 있는지를 확인하는 가장 간단한 방법은 프로젝트 관리 차트에 '기능(feature)'의 이름 대신 추상적인 SW Engineering 용어들이 적히고 있는지를 보는 것입니다.)

이런 시스템은 '알 수 없어서 발생하는 리스크'를 전부 회피했기 때문에 'CUSTOMIZATION 하기 좋은 시스템'으로 보일 수도 있습니다만, 소위 '구매자의 마음을 끄는 기능'이 없어서 외면을 받기도 합니다. 구매자의 입장에서 보면, '가치를 생산하기 위해서는 반드시 CUSTOMIZATION을 해야 하는' 시스템이 달갑지만은 않을 테니까요.

물론 시스템을 개발한 사람 입장에서는 '빠른 CUSTOMIZATION'을 강점으로 내세워 홍보를 하면 그런 단점은 커버할 수 있지 않겠느냐고 생각할 수도 있겠습니다만, 문제는 "고객과의 소통이 이루어지지 않은 상태에서 generazation을 하기 위해 내렸던 결정들이 반드시 옳을거라는 보장을 할 수 없다"는 점입니다. 나중에 요구사항에 맞지 않아서 구조 자체를 다 뜯어고쳐야 한다면 그것도 난감하기는 마찬가지라는 이야기죠.

이런 상황이라면, 애자일을 하건 워터폴을 하건 아마 마찬가지일 거에요.

* * *

앞선 글에도 적었었습니다만, 세상 어디를 가나 이런 사정은 마찬가지입니다. 적고 보니 '소통'이 중요하다는 이야기를 한 셈인데, '소통'은 리스크를 드러내 준다는 점에서 의미가 있습니다. 요구사항을 알기 위해서 '소통'을 그렇게 열심히 하는 이유는, 가급적 모든 리스크를 빨리 드러내 주어야 계속되는 플래닝 과정이 좀 더 의미있는 결과를 내놓을 가능성이 높아지기 때문입니다.

어제 100분 토론에서 미네르바 아저씨 이야기를 듣다보니, 적어도 그가 '공익'에 한가지 기여를 했다는 점은 분명해 보이더군요. 바로, 이 사회의 리스크를 남김없이 보여주었다는 점이죠. 한 명의 인터넷 스타의 글에 휘둘릴 정도로 취약한 경제구조를 가지고 있다는 점과, 그런 글에 신경증적 반응을 보일 정도로 너그럽지 못한 행정부/사법부/입법부를 가지고 있다는 점.

앞으로 주식투자는 최대한 보수적으로 해야 할 것 같아요.ㅋㅋ
신고
Posted by 이병준

소중한 의견, 감사합니다. ^^

  1. [가짜대통령 이명박 사형 결정 전문] 미ㄴㅔ르바? : 官error안봐??

    [百姓有過 在여一人]<論ㅓ ㅛ曰>

    대통령 스스로가 법을 존중하고 준수하지 않는다면,
    다른 공직자는 물론,
    국민 누구에게도 법의 준수를 요구할 수 없는 것이다.
    <관습헌법? 대통령(노무현) 탄핵 결정 전문> / 가짜대통령 이명박 사형 결정 전문!
    / 관습헌법사항 한 줄조차 몰라서~? 미네르바에게 무슨 법의 준수를 요구하겠답시고??

    의법, 무효대통령! 위헌대통령! 위법대통령! 불법대통령! 사기대통령! 대통령직장물대통령! 사이비대통령! 비합법대통령! 부적법대통령! 가짜대통령! 이명박을 사형으로 처단하라!~@!!
    dead line(2009.02.09.)day
    [명령章!] 이명박을 사형으로 처단하라!~!!.hwp / 이명박 운명 : 대한민국 대운
    대역죄인대통령 치하의 국민들은 다 죄인~!!

    2009.01.18 19:08 신고 [ ADDR : EDIT/ DEL : REPLY ]