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 ]

Thoughts2007.10.26 13:38
LP냐 CD냐. 이 주제는 꽤나 해묵은 주제죠. :-) 그리고 사실 이미 시장은 CD쪽으로 거의 다 넘어가 있습니다. CD때문에 LP도 죽었고, 테이프도 죽었습니다. CD는 테이프정도의 휴대성에, LP 이상의 음질을 제공하는 괜찮은 기록 매체이죠. 다만 문제는 가격입니다.

많은 사람들이 LP냐 CD냐 라는 주제를 놓고 설왕설래 했던 기억이 있습니다. LP가 선사하는 추억의 사운드를 선택할 것이냐 (감정적인 선택이죠) 아니면 CD가 주는 명료하고 정확한 음질을 선택할 것이냐 (이성적 선택입니다)를 두고 많은 사람들이 이야기를 해 왔고, 그 탓인지는 모르겠으나 상당수 음악 애호가들은 집에 CD 시스템과 LP 시스템을 같이 구비해두고 있습니다. 사실 음악 애호가라면 집에 LP 판들도 상당수 있을 것인데, CD 듣자고 그 판들을 전부 갈아엎을 수는 없지 않겠어요?

하지만 테이프냐 CD냐, 하는 문제에 대해서는 그다지 이야기되었던 바가 없었던 것으로 기억합니다. 그도 그럴 것이, CD랑 테이프는 '적어도' 음질의 문제에 있어서는 호불호의 문제를 이야기할 만큼 대등하지 않거든요. 음질은 확실히 CD쪽이 더 낫습니다. 그 음질은 오래 들어도 바래지 않지요.

하지만 많은 사람들이 CD 시스템으로 이행하면서 테이프 시스템들을 내다 버릴때, 한가지 간과한 사실이 있었어요. 기본적으로 테이프는 휴대를 위한 매체였습니다. 워크맨을 가지고 다니면서 이어폰으로 음악을 들을 때, 사람들은 음질 문제에 있어서 그다지 스트레스를 받지 않았어요. 테이프의 부피때문에 주머니에 이 테이프 저 테이프 가지고 다닐 수 없는 문제는 물론 있었습니다만, 그런 문제는 CD에 있어서도 마찬가지였습니다. 그리고 그런 문제를 해결하는 방법은 본질적으로는 MP3의 그것과 같았죠. 공 테이프를 마련해서, 듣고싶은 음악을 쭈욱 녹음한 다음에 그걸 들고다니는 겁니다.

그러므로 CD로 테이프를 대체하는 것은 휴대성이라는 관점에서 본다면 그다지 올바른 선택이 아닌 셈이에요. CD가 테이프보다 더 나은 부분이 없거든요. MP3 시스템이 등장하고 나서야 확실히 더 나아지죠.

CD가 테이프 시장까지 말아먹은 덕에, 많은 자동차 오디오 시스템에서도 테이프가 배제되기에 이릅니다. (제 차도 그렇습니다.) 예전엔 몰랐는데, 그렇게 되고 보니 불편한게 좀 있더군요. 제 차에 설치된 오디오 시스템이 그렇게 좋은 것이 아니다보니, CD를 집어 넣으면 '예전에 재생되던 마지막 위치'를 전혀 기억하지 못합니다. (좋은 시스템은 기억할 수도 있나요? 잘 모르겠군요. 좋은 시스템을 써 본 적이 없어서 ㅋㅋ) 요즘 차를 타고 다니면서 오디오북을 듣고 있는데, 이게 생각 외로 불편하더군요. 오디오북을 듣는 와중에 다른 씨디를 갈아 끼울 수가 없는 겁니다. -_-; 갈아 끼웠다가 다시 오디오북 씨디를 넣으면... 네 그렇습니다. 처음부터 다시 플레이하기 시작하죠. -_-;

재수가 없어서인지는 몰라도 제 오디오북 씨디는 트랙 하나의 길이가 삼십분이 넘습니다. 그러니 그런 일이 생기면, 듣던 위치를 찾기 위해 차를 세우고 한참 삽질을 해야 합니다. 오디오북 씨디가 아니라 테이프를 들을 수 있는 환경이었다면? 네. 아마 그런 일은 생기지 않았겠죠. 테이프는 그 구조상 '재생을 멈춘 위치를 항상 기억할 수 밖에 없도록 생겨먹은' 매체이니까요.

EIKI 7070 CD/Tape Player

EIKI 7070 CD/Tape Player


결국 '더 좋은 음질'을 위해 휴대성과 편의성의 일부를 포기한 셈입니다. 그렇다면 음질 면에서는 과연 100% 만족스럽나요? 제가 주로 음악이나 오디오북을 듣는 차량 안은 음악을 듣기에 그다지 만만한 공간이 아닙니다. 외부의 소음이 100% 차단되지도 않고 (차단되면 위험하겠죠?) 너무 소리를 올리면 뒷자리쪽 어딘가에서 음이 찢어지는 것이 느껴질 정도로 부실한 공간이에요. 어차피 차 안은 '그저 적당한 수준으로' 음악을 들을 수 있으면 상관없는 공간이었다는 것이죠.

그러니 적어도 차 안을 기준으로 본다면, 테이프가 CD로 대체된 것은 대부분의 가난한 오너 드라이버들에게는 그다지 이득이 없다고 봐야 할 것 같기도 해요. CD나 MP3 시스템 같은 것을 차 안에 둬 봐야, 어차피 운전하면서 이런 저런 조작을 하기도 난감한 노릇이고, 고작 할 수 있는 것이 좋아하는 음반이나 오디오북을 선택해서 틀어놓는 것이고보면, 뭐 테이프 정도도 충분하지 않느냐, 그런 것이죠.

소프트웨어 프로젝트를 진행할 때에도 비슷한 일이 벌어지곤 합니다. 프로젝트 전반기에 사용자 요구사항을 어느정도 고정시킬 수 있다고 생각하고 작성한 유스케이스는 나중에 저 같은 이상한(?) 사용자가 등장하게 되면 조금씩 어긋나기 시작합니다. 일단 그런 일이 벌어지기 시작하면 해결책은 하나 뿐입니다. 저 같은 사용자를 무시하거나, 아니면 요구사항 문서를 무시하거나. 어느 쪽으로 가더라도 그다지 좋은 일은 못되죠. 제 차 안에 달린 CD 플레이어는 저라는 사용자를 무시하고 설치된 솔루션이라고 봐야겠네요. ㅋㅋ

그래서 저는 그놈만 보면 마음이 좀 불편해요. 기능도 그만하면 충분하고, 외관도 그럴싸하고, 사용자 인터페이스도 이것 저것 풍부한 편입니다만, 제 기본적인 필요를 충족하기에는 뭔가가 좀 모자라거든요.




신고
Posted by 이병준

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