'Software'에 해당되는 글 1건
- 2010/01/27 Ubiquitous와 Total Quality Management의 공통점
아, 게으른 녀석. 2010년엔 다시 블로깅을 좀 해볼까 했는데, 왠지 게을러져서 한 달이 거의 다 지난 후에야 시작하게 됐다. 뭐, 업무 외의 분야에서 '뭔가 확실히 해야겠다' 라는 강박 관념을 조금 느슨하게 풀지 않으면 죽을 거 같은 삼십대가 된지 어언 몇 년을 지내다보니 생긴 버릇이긴 하지만서도 역시 나 자신을 한심해 하는 건 어쩔 수 없다. 뭐, 오늘부턴 다시 하루에 몇 개의 블로깅을 하게 되더라도 글 쓰기가 땡기는 날은 조금 주저려봐야겠다. 아, 한심한 녀석. 조금 더 노력하자.
TQM.
TQM이라는 것은 CMMi의 개념이다. Total Quality Management라고 하는 건데, 필자가 3년차일 때 게임 업계에서 떠들고 다니던 '헛소리' 중 하나다. 에... 그게... 왜 인지 요새 게임 업계 팀장들 사이에서 세미나 같은 데서 자주 인용되는 말이 되어있다. 이게 좀 멋있어 보이긴 하지만, 실상을 알고 나면 정말 어이 없는 사상인데, 왜 자꾸 인용이 되는지 모르겠다. 그래서 오늘은 이에 대해서 조금 이야기 해 볼까 한다.
내가 이 부분에 대한 (지금은 후회하는) 헛소리를 지껄인 건 QA에 대한 심각한 고뇌로 흔들리고 있을 때였다, 당시 난 온갖 유료 세미나까지 쫓아다니며 'CMMi의 품질' 분야를 열광적으로 공부 중이었고, 당연히 CMMi의 사상에 흠뻑 취해 있었다. 그래서 술자리나, 누군가에게 품질에 대해 설명할 때 CMMi를 많이 인용하곤 했....지만... 설마 내가 팀장들에게 임팩트를 끼친건 아닐거라 굳게 믿고 있다. 나같은 놈이 무슨 영향을 끼쳤겠나... (사실 원죄를 뒤집어 쓰긴 싫다. 후~) 에, 헛소리 그만하고 내 작문 스타일 대로 지른다~! 준비 됐나요!
Software 업계에서 TQM이라는 것은 사회학의 Utopia와 같은 말이다.
결론부터 말해서 '절대 불가능 하다'.
결론부터 말해서 사람 염장 질러놓고 이유조차 차분히 설명하지 않는 내 논법 특성상 이미 얼굴이 붉그락푸르락해진 사람도 있겠지만, 조금 안정을 취하시고 지금부터 쓰인 말들을 한 번 잘 생각해 보시길 바란다. 그리고 반론이 있다면 Trackback으로 부탁드린다. 댓글로 논박하는 방법보다 생산적이니까.
먼저 Utopia를 까야(?)한다. 처음 토마스 모어가 유토피아를 언급했을 때만 해도 단지 '평등한 사회' 정도의 의미 였는데, 최근의 IT 업계, 특히 유비쿼터스를 다루는 쪽에서는 "유토피아=완성된 유비쿼터스의 사회" 정도로 언급되기 때문에, 먼저 유토피아가 불가능하다는 것을 이야기해야 한다.
인간은 게으르다.
태초에 신이 인간을 게으르게 만들었다. 모든 인간은 게으르기 때문에 도구를 만들기 시작했고, 인간이 아닌 다른 것으로 하여금 인간의 생활을 대체하게 할 수 있었다. 손보다는 나뭇 가지가, 나무 보다는 돌맹이가, 쇳덩이들이, 동물과 증기기관, 전기를 이용한 CPU processor들까지. 인간의 발전상을 보면 영악할 정도로 자신의 게으름을 자신이 아닌 다른 무언가에게 떠넘기고 있다는 것을 알 수 있다. 이런 현상은 노예 제도를 만들었고, 노예 제도가 사라진 지금에도 "빈부의 논리"로 과거 노예 제도와 비슷한 사회적 장치들이 남아 있다.
2010년, 대한민국의 비정규직 법이 노예 제도가 아니라고 생각한다면 댓글로 알려달라. Trackback으로 토론할 수 있도록 다른 포스팅을 열겠다.
즉, [모든] 인간이 [완전히] 평등하게 행복하기 위해선 인간의 게으름을 대체할 수단을 통해 불만 zero에 도전하는 방법을 제공하는 것 뿐이다. 키워드는 [모든]과 [완전히]이다. 즉, 어느 사회든 빈부 격차가 남아 있는 동안에는 유비쿼터스가 아니라 장비쿼터스, 관우쿼터스가 완성되도 유토피아는 불가능하다.
어떤 이는 유비쿼터스 세상이 오면 모든게 바뀔 것이라 생각한다. 로봇이 인간의 할 일들을 대체해 주고, 쇼핑도 교통도 발달하여 네트워크로 모든 일 처리가 가능한 시대가 올 것이라고 말한다. 아니다. (물론 개인적인 의견이다.) 위에서도 언급했듯이 여러분이 '누리는 1%의 인류'가 된다면 모를까, 아니라면 불가능하다. 혹여 여러분이 '누리는 1%의 인류'가 된다고 해도, 여러분의 뒤에는 '조금 많이 누리는 / 적당히 누리는 / 조금 누리는 / 누리지 못하는' 무리의 사람들이 존재한다는 것을 잊어선 안된다. 인간은 게으르기 때문에, 게으르고 싶기 때문에 "빈부의 격차"가 발생하며, 그로 인해 영원히 공평할 수 없다. (이에 대해 반론이 있는 사람은 사회학과 사상 철학쪽 책을, 나만큼만, 아주 조~~금만 읽어보면 잘 알 수 있게 설명되어 있는 도서들이 많다.)
어떤 이는 "인간이 게으르다니 대체 무슨 소리야! 난 공부하는게 재미있고, 열심히 일하는게 재미있다구! 절대 인정할 수 없어!!" 라고 할 수도 있다. 박수, 박수. 짝짝짝. 난 당신을 진정으로 존경한다. 다만 비꼬인 내 비유를 인용해 다시 한 마디 더하자면, 당신이 공부하는 것이 재미있고, 열심히 일하는게 재미있는 동안, 당신의 부모님과 가족들, 자식들에게도 훌륭하고 따듯한 가족이길 빈다. (얻는게 있으면 잃는게 있기 마련인데 말이다...)
자, 이제 Utopia와 인간 본성에 대한 블합치성에 대한 나의 주장은 어느 정도 설명이 되었으니, TQM으로 넘어가자. Utopia가 불가능하다는 것을 설명하기 위한 논지와 비슷하게 풀어갈 것이다.
또 다시 결론 부터 말한다. 소프트웨어 업계에서 TQM은 불가능하다. 소프트웨어 업계에서 TQM이 불가능 한 것은 소프트웨어가 가져야 하는 성격 중 하나의 본질과 정면 대치되기 때문이다.
다음의 질문은 한국 사람이면 한 번쯤 생각해 봤을 거다. 한 번 자신의 경험을 곱씹어 보자.
1) 삼성 핸드폰을 들고 "이게 왜 50만원, 100만원이나 하는거야?" 라고 생각해 본 경험이 있는가?
2) MS사의 Windows Professional 버전을 들고 "이게 왜 50만원이나 하는거야?" 라고 생각해 본 경험은?
3) 사장님은 프로그래머들을 이해 못하셔. 8시간 동안 모니터만 들여다 보고 있다고 코드가 나오는게 아닌데...
4) 소프트웨어 개발이 창조라는걸 왜 이해 못하는거야!
아시다시피 삼성이나 MS는 지구상에서 TQM을 가장 이상과 비슷하게 하게 적용한 회사들이다. 눈치 빠른 분들은 이미 감 잡으셨을 거다. 그거 맞다, 내 말이 그 말이다. TQM이라는 것을 시작해서, 어느 정도 수준에서 시각적으로 확인가능한, 일정한 품질 수준으로 유지하기 위해서는, 그 투입 공수 대비 산출물에 대한 ITO(Input, Tool&Tech, Output)를 끊임 없이 추적하고 관리해야 한다. 즉, TQM을 이룩하기 위해서는 필요 개발 인력 이상의 인력이 투입되어야 한다. 즉, 결과적으로 생산 단가는 치솟을 수 밖에 없다. (다른 모든 소프트웨어적 특성이 소비자들에게 100% 어필하더라도, 단가의 문제가 발생한다.) 소프트웨어는 '널리 퍼져야 이로운' 성격을 가지고 있는데, 치솟은 생산 단가 때문에 퍼지지 못하는 꼴이 되어 버린다.
개인적 의견이지만, 현재 대한민국 최대 소프트웨어 회사의 경영진들이 TQM을 도입하려 한다면, 아마 지금 인력의 1.5~2배는 커질 것이고, 그들 중 상당 수는 "조직 문화 및 형상 관리를 통한 TQM 달성을 위한 모니터링팀"에 소속될 필요가 있을 것이라 전망한다. 과연 그런 회사가 값 싸고 훌륭한 소프트웨어를 만들 수 있을까? 만약 "YES~!!" 라고 답한다고 해서 당신을 불평할 생각은 추호도 없다. 당신도 옳다. 다만 당신은 최근 몇 년간 한국 IT에 화두가된 Agile에 정면 대치되는 이야기를 하고 있다는 것 정도는 인지해 주시길 바란다.
글 쓰고 이틀째, 퇴고를 하려고 보니 왜 소프트웨어에서는 TQM이 불가능한가에 대한 이유 설명이 부족한 듯 하다. 해서.... 이 아래의 내용을 추가한다.소프트웨어에서 TQM이 불가능한 이유를 조금 더 쉽게 설명하기 위해, 인류의 전통적 사업들인 건설업, 제조업, 생산 공정의 산업들을 쉽게 '제조업'이라 칭하자. 그리고 소프트웨어를 기반으로 작동하는 모든 기기 및 어플리케이션을 생산하는 작업을 '소프트웨어업'라 칭하자. 조금 극단적인 나눔법이지만 이렇게 해야 설명하기 편하다. 이 나눔 때문에 논리적 오류가 발생한다면 지적을 부탁드린다.
아직도 꽤 많은 사람들이 제조업과 소프트웨어업의 차이에 대해 설명하라고 하면 어물쩡 넘어가는 경우가 많은데, 필자 개인적으로는 이렇게 정의하고 있다. (이해하기 쉬우니까.) 기존의 제조업은 '다량의 원자재 + 소량의 서비스' 가 주요 프로세스에 투입 되는 투입공수였다면, 소프트웨어업은 '소량의 원자재 + 다량의 서비스'가 주요 프로세스에 투입되는 투입공수라는 점이 차이점이다.
기존의 제조업에서 TQM이 가능했던 것은 '다량의 원자재'에 대한 품질 관리가 포커스되어 있던 것이기 때문에 가능했던 것이며, 무척이나 변칙적인 서비스(인력)에 대한 투입공수는 소량이기 때문에 통제 가능한 수준이었던 거다. 쉽게 예를 들어, 과일 샐러드를 만든다고 치자. 과일 하나 하나의 신선도를 높이지 않으면 전체적인 샐러드의 질이 떨어질 수 있다. 사람이 프로세스 상에서 할 일은 '과일의 신선도를 지키는 일'과 '과일을 배치하는 일' 정도일 것이다. 이런 건 TQM이 가능하다. 원자재를 관리하는 쪽에 포커스가 맞추어져 있으며, 인간이라는 변수는 출력물에 크게 영향을 끼치지 못하니까.
소프트웨어업은 투입 공수의 비율이 반대다. 변칙적인 서비스(인력) 투입공수가 생산 공정의 ITO 기준으로 통제하는 구닥다리 방법으로 통제 가능한 수준이 아닌거다. 극단적인 예를 하나 들어보자. 기계는 고장나면 고치면 된다. 컴퓨터에 바이러스가 걸리면 백신으로 치료하면 된다. 근데 사람은 아프면 일주일, 한 달 간다. 참고, 견디고, 허리띠 졸라메고, 악으로, 깡으로, 정신력으로 하라고?.... 지랄 말라 그래라. (사장님 나빠요~!) 사람은 아프면 굉장히 오래 간다. 그리고 휴우증도 남는다. 이런 변수가 다양한 서비스(인력)가 프로젝트에 백 명, 천 명이 투입된다면? 얼굴만 딱 보고도 병을 알고 뚝딱 고쳐주는 굉장한 과학 문명을 가진 외계인 PM이 아닌 이상은 21세기 이전의 프로세스로는 통제가 불가능한거다. 그게 소프트웨어 개발이다.
또, 소프트웨어업에서 원자재라고 해 봤자, 컴퓨터와 SDK(Standard development kit, 그래픽 툴이나 기반 플랫폼, 개발 도구들을 포함해서 이 글에선 대~충 SDK라 하자) 정도인데, SDK가 좋다고 좋은 소프트웨어가 나오는게 아니라는 점에서 SDK의 관리에도 TQM을 적용하기엔 무리다. 이것도 예를 들어주고 싶은데, 게임 업계 사람들 맘 상할것 같으니 넘어가겠다.
마지막으로, TQM으로 소프트웨어 개발자를 통제할 수 있다고 생각하는 건 '조직 문화'는 생각하지 않고 '형상 관리'에 촛점을 둔, 원시적인 개발 방법이다. 소프트웨어를 개발하는 것은 '무척이나 변수가 많은 인간 개발자'라는 것을 경시한 채, 투입공수를 조절하면 프로젝트 리스크가 줄어들 것이라고 착각하는것이다. 제조업에서는 업무 시간에 업무 외의 행위를 하는 것은 낭비다. 하지만 소프트웨어 개발에서는 빈둥거리는 시간이 생산성 향상에 도움이 된다. (이에 관련된 수 많은 증거들이 발견되고 연구되고 있다.) 빈둥대는 시간과 생산성 향상의 관계를 기존의 프로젝트 관리 기법으로는 절대 설명할 수 없다. 현재 이 부분을 설명하는, 지구상에 존재하는 방법론은 애자일 뿐이다.
경영자들에겐 아쉽겠지만, 인간 개발자는 함수가 아니다. 변수다.
환경 변수도 조차도 못된다. 환경에 영향을 받는 피-환경 변수다.
그렇다고 필자를 애자일 광신론자로 몰아가진 말아달라. 그닥 애자일을 사랑하진 않는다. 장단점을 파악하고 이치에 맞게 쓰고 있는 것 뿐이지, 애정을 가지고 애자일만 외치며 사는 사람들과는 많이 다르다.

Prev
Rss Feed