2020년 6월 29일 월요일

“SW 과업 변경 분쟁의 가장 큰 요인은 불명확한 RFP다” 는 거짓말이다




“SW 과업 변경 분쟁의 가장 큰 요인은 불명확한 RFP 는 기사가 요새 나와서 진실을 분석해 보려고 한다.

국내 소프트웨어 업계, 특히 SI 업체가 수십 년간 가지고 있는 고질적인 문제가 사양이 명확하지 않다 는 것이다. 법원에서 벌어지는 SW 소송의 99%가 바로 이 문제다. 한쪽은 사양이 추가되었기 때문에 돈을 더 달라고 하고 한쪽은 원래 계약에 다 포함되어 있는 내용이라는 주장이다. 그럼 모든 사람이 다 경험하고 잘 알고 있다고 생각하는 이 문제가 왜 몇 십 년간 해결되지 않고 있는 것일까? 소위 SW 전문가라는 사람들과 정부가 나서서 해결해 보겠다는 노력을 많이 했지만 SW산업진흥법 등 메뉴만 바꾸어 가면서 허송세월만 보내 왔다. 한 걸음도 더 나아가지 못하고 점점 더 엉뚱한 산으로 올라가고 있다.

먼저 전문가라는 그룹의 특성을 아는 것이 중요하다. SW가 아니더라도 모든 분야에서 전문가들 사이에서도 의견을 달리한다. 그리고 전문가는 자기가 주장하는 분야에서 사업이나 권력 등 경제적인 이권에 예외 없이 깊이 연관되어 있다. 즉 전문가의 발언은 자기의 이익을 대변하는 말일뿐 진실을 알건 모르건 자신에게 해로운 얘기를 하지는 않는다. 이런 곡학아세가 전문가의 본질이다. 모든 왜곡과 선동에는 전문가가 끼어든다. 전문가의 말이라고 믿는 것도 매우 위험한 것이다. 심각한 병에 걸렸을 때도 두번째 의견, 세번째 의견을 받아보고 결국은 스스로 결정해야 한다. SW 전문가라고 하는 사람들도 자신의 이익을 위해 편견을 주장한다. 이런 부도덕한 사람들이 생존력은 좋다는 것이 바로 리차드 도킨스의 이기적 유전자이다. 대중에게 좋은 것과 자신의 생존을 위해 좋은 것은 다르다.  암세포와 같은 이기적 유전자가 생존력은 가장 높다는 것이 인류가 걸어온 길이고 나 자신이 태어날 수 있었던 이유도 이기적 유전자의 후손이기 때문이다.

그럼 “SW 과업 변경 분쟁의 가장 큰 요인은 불명확한 RFP에 대해서 조금이라도 더 잘 이해하기 위해 거짓과 진실을 알아보자.

먼저 “RFP가 불명확하다는 문장이 있는데 이 것은 우주의 진리이다. RFP는 본질적으로 명확할 수도 없고 구체적일 수도 없다. 이런 우주의 진리를 기반으로 잘못 유추된 결론이 “SW 과업분쟁의 원인이다라는 것이다. RFP가 불명확해도 글로벌 회사들의 계약에서는 분쟁이 생기지 않는다. 국내에서 만연된 분쟁일 뿐 원인과 결론의 인과 관계가 성립하지 않는다. 즉 완전히 잘못된 결론이다. 다시 말하지만 명확한 RFP”는 필자의 SW 경험상 본 적도 없고 그럴 수도 없다. 그런 존재하지도 않는 것이 원인이라는 착각에서는 어떤 행동을 해도 문제 해결이 불가능하리라는 것을 추측할 수 있다.

SW 과업분쟁의 원인은 “RFP가 불명확한 것이 아니라 사양이 불명확하기 때문이다. RFP와 사양의 차이를 이해하기 쉽게 하기 위해 사양이라는 추상적인 단어 대신에 여기서부터는 Spec 혹은 Specification이라는 용어를 사용하기로 한다. RFP에는 Spec이 적히지도 않고 적힐 수도 없다. 필자가 다른 기사에서도 누누이 얘기했지만 이 차이를 진정으로 이해하고 있는 사람은 국내에 몇 명 밖에 안 되는 극히 소수에 불과하다. 글로벌 업체와 심각하게 과업분쟁을 직접 경험한 기회가 있었던 회사인 경우에만 진정한 자아인식(Meta-Cognition)이 생긴다. 지금까지 필자의 경험으로 자아인식을 한 회사는 하나 밖에 없다. 자아인식을 하면 반은 해결된 것으로 다행이다.

RFP를 보고 개발비용이 계산된 제안서를 낸다는 경우는 국내 SW 업계에서만 벌어지는 현상이다. 혹은 국내 SW업계가 관련된 국내 회사의 외국지사와 관련된 경우이다. 결국 표면적으로만 외국이지 모두 국내 SW 업계의 관행이다. 국내 회사의 외국지사에 SW를 판매하고 글로벌 매출이라고 주장하는 것도 업체들이 많이 사용하는 홍보수단이다. 반면에 글로벌 회사에의 매출이 대부분인 베트남의 FPT Software와 같은 SW 업체가 글로벌 고객을 상대로 사업을 하면서 몇 십 년간 글로벌 방식을 배워 왔다. 지금은 인도와 함께 전 세계 SW 개발 아웃소싱의 양대 축으로 성장했다. 글로벌 SW 개발 아웃소싱 시장 에서는 베트남이 아직 시작도 못한 국내 SW 업체보다 훨씬 앞서 있다.

RFP를 보고 제안서를 내는 국내 방식이 생겨난 이유는 소위 국내 SW전문가들이라는 사람들이 어디선가 비슷한 관행을 베껴왔을 때 가장 중요한 한 문장을 빼 먹었기 때문이다. 예를 들어 미국 정부의 SW 사업 신청 사이트에 보면 제안서에 SRS가 첨부되어 있거나 분할발주인 경우 SRS를 적기 위한 제안서를 낸다. SRS에서 Spec을 적어야 한다.  분할발주인 경우 SRS의 본질을 이해하지 못하는 상태에서 분할발주 흉내만 낸다고 제대로 될 수가 없다. 분할발주 정책도 산으로 가는데 그 이유에는 수 많은 요소들이 얽혀 있기 때문에 여기에서는 생략한다. “SRS를 누가 적는가?”의 추가 이슈도 책 한 권이 필요한 이슈이기 때문에  여기서는 생략한다.

SRS를 얘기하기 시작하면 국내에서는 SOW, 기능명세서, MRD, PRD 등 목적도 다른 문서들을 SRS와 동일하게 착각할 수 있으나 이는 SW 기획/개발 프로세스를 전혀 이해하지 못하는 무지의 소산일 뿐이다. 테니스를 얘기하는데 탁구라고 생각하는 경우와 비슷하다. 실제 필자가 부딪치는 많은 고참 개발자들이 그렇게 착각하고 있고 그들을 이해시키기는 많은 시간이 필요하고 그들의 생존에 관련된 이해관계까지 절충을 하는 것은 불가능에 가깝기도 하다. 자신들이 쌓아온 잘못된 경험이 환상의 매트릭스에서 전문가로 인정받으며 살아가는 핵심 자산인데 그를 포기한다는 것은 불가능하다. 바로 이기적 유전자에서 나오는 생존을 위한 자연스러운 행동일 뿐이다.

SRS에 관해서는 IEEE SWEBOK도 이 블로그에 이미 번역과 해설을 해 놓았고 책에서도 많이 얘기했기 때문에 여기서 반복할 필요는 없다. 확실하게는 적절한 SRS가 없이는 SW 과업 변경 분쟁은 국내에서 없어질 수 없다는 것이 진리이다. SW 개발 SI 계약이 회사와 회사 사이이면 계약과 소송으로 진행되겠지만 회사 내부에서 발생되는 경우는 그냥 일정 연기, 비효율성, 난잡한 개발 등으로 나타난다. 그러니까 또 이런 일정 문제를 해결하겠다고 프로젝트관리 기법을 도입하기도 하지만 이는 다 엉뚱한 데다 원인을 덮어씨우는 무지에 불과하며 결국 돈만 낭비하고 더 큰 비효율성을 만들어 낸다.

그럼 “SRS는 어느 정도 자세히 정확하게 적어야 하는가?” 가 다음의 주제인데 당연히 하나의 기준이 있는 것이 아니다. 거대한 방법론을 들고 나오는 사람도 있지만 방법론은 SRS를 이해하는 데에 가장 큰 방해물이다. 훌륭한 요리사가 못 되는 이유는 음식의 본질의 이해하는 것 대신에 레시피와 같은 방법론에 집착하기 때문이다.

홈페이지 만들 때와 비행기 SW 를 만들 때에 적는 Spec의 수준이 다를 수 밖에 없다. Spec은 변할 수 밖에 없다는 종교적인 믿음에 중독된 애자일 방법론도 매우 논쟁적인 이슈이다. 애자일 방법론도 사용할 수 있는 곳이 있고 비행기 SW와 같이 절대 사용하면 안 되는 곳도 있다. 결국은 자신의 이념이나 이익에 따라 주장하겠지만 받아들이는 사람들은 매우 조심해서 판단해야 한다. 이런 비이성적인 국내의 모든 현상들을 가짜 소프트웨어 공학이 춤추는 세상 으로 표현할 수 있다.

결론적으로 왜 과업 변경문제가 벌어지는지 본질적인 문제를 모르는 상태에서는 어떤 법을 만들어도 성공할 수 없다. 문제를 진정으로 이해해도 해결하기는 쉽지 않다는 것은 그 다음 도전적인 과제이지만 시작이 반이다. 일단 진정으로 이해하면 가야 하는 방향은 잡을 수 있다.

이런 Spec과 관련된 문제가 단순해 보이지만 글로벌 SW를 만들지 못하는 가장 중요한 이유이다. 아무리 제품 기획이 좋다고 해도 그를 수행할 수 있는 역량이 부족하다면 비용도 올라가고 경쟁력도 떨어진다. 빈번한 재개발은 전형적인 현상이다. 인공지능, 4차 산업혁명 등 아무리 주장해도 우물안 개구리 국내 관행에서 벗어나려면 필수적인 역량이 무엇인지를 진정으로 이해하는 것이 필요하다.