2021년 5월 26일 수요일

당신은 소프트웨어 엔지니어가 아니다

 

한국에서 소프트웨어의 본질에 대해서 얘기하다 보면 소 귀에 경읽기와 같아 하고 싶지 않지만 가끔가다 얘기하고 싶게 만드는 자극적인 이벤트가 생긴다. 그런 이벤트는 둘 중의 하나인데 너무 어처구니없는 황당한 기사나 정책이 나올 때가 첫번째이고 두번째는 오랜 경륜을 거친 진정한 전문가가 나의 생각과 일치되는 말을 했을 때이다. 깊은 마음 속 감동의 기쁨이다

첫번째 경우는 너무 빈번하다 보니 요새는 무감각한 상태가 되어 버려서 왠만한 엉터리 정책이나 기사가 아니면 지적하고 싶은 자극을 받지 않는다. 이번 경우는 두번째 경우로서 2021525(즉 어제) “Microsoft Build Conference”의 키노트 연설에서 마이크로소프트의 CEO인 사티야 나델라가 한 말이다. 유튜브에 16분짜리 동영상이 있으니 부담 없이 시청할 수 있다.

 사티야 나델라는 기술 전략에 뛰어난 통찰력을 가지고 있어 망해가는 마이크로소프트를 살렸다고 해도 과언이 아니다. 나와는 직접 같이 일한 적은 없지만 썬 마이크로시스템즈에서 같은 시기에  소프트웨어 엔지니어로 근무 했었다. 그의 연설은 기본적으로 마이크로소프트의 전략과 기술 소개가 핵심이다. 그러다 보니 마이크로소프트가 인수한 GitHub, Azure, Teams와 같은 핵심 서비스들이 소개되고 Platform, Digital Twin등과 같이 기술 전략보고서에 늘 등장하는 단골 용어들도 나온다. 여기까지는 그냥 사실 확인 정도로 부담 없이 들을 수 있었다.  

 무심하게 듣고 있던 나를 깨운 것은 다음 문장이었다. 작년에 자동차 인더스트리에서 기계공학자보다 소프트웨어 엔지니어를 더 많이 채용했다 라는 말이었다.

 실리콘밸리에서의 내 직장 경험을 보면 원자력발전소에서 소프트웨어를 개발할 때는 같이 일하는 원자력공학 엔지니어가 있었다. 물론 그들도 소프트웨어 개발을 한다. 인공위성을 만드는 회사에 있을 때도 옆에는 인공위성 전문 엔지니어가 있다. 그들도 소프트웨어 개발을 한다. CAD를 만드는 회사에서 일했을 때는 옆에 전자공학 엔지니어가 있었다. 물론 그들도 하루 종일 소프트웨어를 개발한다.

 사티야 나델라는 이 연설에서 그런 산업 전문가를 Domain Experts” 라고 명명했다. 그리고 소프트웨어 전문가를 Pro-Developers라고 명명한다. 그리고 그들이 힘을 합쳐 일한다고 말한다. 여기서 중요한 것은 소프트웨어 엔지니어나 Domain Experts라는 사람들이나 모두 프로그램을 한다는 것은 비슷하지만 근본적으로 하는 일이 다르고 기술도 다르다는 사실이다. 프로그램을 한다고 해서 다 Pro-Developers는 아니다. 요새는 온 국민이 프로그램을 배운다고 하는데 그 중에 Pro-Developer가 될 확률은 거의 없다.

 나는 항상 소프트웨어 엔지니어였지만 원자력공학 엔지니어도 아니었고 전자공학자도 아니었고 기계공학자도 아니었다. 나는 소프트웨어 엔지니어로서 소프트웨어 개발을 필요로 하는 곳에서는 Domain(즉 산업분야)와 상관없이 내 소프트웨어 전문성으로 업무를 수행해 왔다. Domain Experts들은 소프트웨어 엔지니어들을 필요로 하고 소프트웨어 엔지니어들은 Domain 지식이 필요하다. 소프트웨어 엔지니어들만 모여 있다면 개발할 대상이 없기 때문에 할 일이 없다. 개발할 대상도 필요하고 그 대상 분야의 전문성이 필수적으로 필요하다. 반대로 소프트웨어 엔지니어가 없는 Domain Experts만 있다면 그들은 조그만 초가집은 만들 수 있을지 몰라도 Platform과 같은 거대한 빌딩은 만들어 낼 수 없다.

 Domain ExpertsPro-Developers는 서로 꼭 필요한 존재이다. 한 사람이 둘을 다 잘한다는 것은 시간적으로 불가능하다. 자신이 둘을 다 잘한다고 주장한다면 둘 다 모두 못한다는 얘기이다. 프로 농구선수와 프로 축구선수를 둘 다 한다는 것은 불가능하다. 그냥 보통 사람보다 잘 하는 동네 팔방미인 소리를 들을 수는 있지만 프로는 절대 아니다.

 사티야 나델라가 말한 통계로 추측하면 이제는 Domain 지식의 역할보다는 그를 엮어서 거대한 소프트웨어 제품을 만들어 내는 소프트웨어 엔지니어의 역할이 더 많아졌고 더 중요해 졌다는 것이다.

 여기서 잠깐 한국의 상황으로 돌아와서 나의 경험을 얘기하자면 한국에는 소프트웨어 엔지니어가 거의 없다. 한국에서는 소프트웨어 개발 역량이 중요한 것이 아니라 Domain지식을 많이 가지고 있는 사람이 중요한 것으로 인식되어 소프트웨어 개발 역량은 향상되지 않고(물론 배울 곳도 없고) 같은 종류의 회사 아니면 갈 곳이 없는 엉성한 Domain Experts 만 존재한다.

 대부분의 소프트웨어 개발자의 경력진행을 보면 최초에 어떤 Domain의 회사에 취업했는지가 평생 갈 수 있는 경로를 협소하게 정해 버린다. 금융계에서 소프트웨어 개발을 하던 사람이 자동차 회사에 취직하기는 불가능하다. 소프트웨어 엔지니어를 채용하는 것이 아니라 자동차 개발자를 원하기 때문이다.   

 그래서 나는 한국에서 소프트웨어 개발자라고 주장하는 사람들에 대해 당신들은 소프트웨어 개발자가 아니다라고 말한다. 그 대신 당신은 프로그램을 적당히 할 줄 아는 자동차 전문가다라는 식으로 말한다.

 그럼 도대체 무엇이 소프트웨어 전문가인가? 여기서는 이해하기 어려운 추상적인 영역으로 들어간다. Domain에 특화된 Hard Skill이 아닌 모든 소프트웨어 개발에 사용되는 일반적인 Soft Skill 분야인데 분석, 설계, 컴포넌트와 인터페이스의 이해, 협업 등 창조적이고 문화적인 요소가 중요하며 구체적으로 눈앞에 보여주기 어려운 영역이다. 인생에서 어떤 영역이든지 전문가가 되려면 구체적인 지식의 모음보다는 철학적이고 추상적이며 잘 보이지도 않는 단계를 꼭 넘어가야 한다

골프 등 모든 스포츠에서 공통적으로 힘을 빼라와 같은 추상적인 표현을 왜 뉴톤 단위의 숫자로 표현할 수 없는가를 이해할 수 있어야 비로서 전문가가 될 수 있다. 힘을 빼라는 코치에게 몇 뉴톤이면 됩니까하는 질문은 고등학생 정도나 할 질문이지 전문가가 할 질문은 아니다.  내가 고교생 수준에서 답을 해준다면 당신이 가지고 있는 모든 기술 중에서 Hard Skill은 20% Soft Skill은 80%를 가져야 한다고 억지로 답을 해주겠다. 현재 한국의 대부분의 개발자는 반대로 Hard Skill은 80%, Soft Skill은 20%를 가지고 있다. 소프트웨어 개발자라고 말할 수가 없다. 기본조차도 되어 있지 않은 경우가 대부분이다. 

하여튼 결론은 한국에는 진정한 소프트웨어 엔지니어는 없다. 내가 만약 과거에 없었던 새로운 산업이 생겨서 소프트웨어 개발자를 채용해야 한다면 마음에 드는 개발자는 극히, 아주 극히 소수에 불과하다. 예를 들어 구글이나 페이스북이나 클라우드나 블록체인이나  다 새로 생긴 산업이고 그런 경우에 80%의 Hard Skill은 아무 곳에도 쓸데가 없다. 새로운 사업에서 소프트웨어 개발자에게 필요한 것은 Soft Skill 뿐이다. 

현재 한국에는 다양한 산업의 수 많은 Domain Experts만 있다. Java나 Python으로 Git을 사용해 몇십년을 일했다고 해도 자아도취한 경이적인 숙련공이 될지는 모르지만 진정한 Pro-Developer가 되기 위한 조건과는 거리가 멀다. 프로그래밍 언어나 도구와는 별개의 문제이다. 하여튼 내가 원하는 개발자는 아니다.  이런 잘못된 결과의 피해는 어느 정도 규모 이상의 소프트웨어는 만들 수 없다는 것이다. 대표적인 것이 사티야의 연설에서도 나오는 플랫폼이다. 소프트웨어 전문가가 없이는 플랫폼을 만들 수가 없다. 몽상과 열정으로 시작해 흉내만 내거나 장난감하나 만들다가 끝난다. 그런 필연적인 결과를 모르고 시작할 뿐이다. 근거 없는 열정은 동키호테의 무모함으로 결국은 회사와 자신에게 피해를 입힌다. 어떤 산업 Domain 영역에서도 소프트웨어 전문가의 도움 없이는 큰 규모의 소프트웨어는 만들어 낼 수 없다.

 전문가는 커녕 소스코드 관리시스템도 사용하지 않으면서 소프트웨어 개발자라고 말하는 중견 소프트웨어 회사도 있다. 어떻게 이런 어처구니 없는 현상이 벌어졌는지는 미스터리 하지만 하여튼 소프트웨어의 60년 역사에서 보기 어려운 소프트웨어 개발자의 행태가 지금도 벌어진다. 반대로 진짜 소프트웨어 전문가는 그런 가짜 소프트웨어 개발자들 사이에서 오리 떼 속의 백조로 왕따당하는 것이 현실이다. 물론 이렇게 된 주요 이유 중의 하나는 회사의 무지한 리더나 관리자이다. 대학교육의 잘못도 절대 빼 놓을 수 없다

기술을 잘 이해하는 사티야 나델라는 빌 게이츠의 지원아래 소신대로 마이크로 소프트를 살려내 다시 훌륭한 회사로 만들어 낼 수 있었다. 빌 게이츠와 사티야 나델라가 없었다면 마이크로소프트는 지금과는 완전히 다른 평범한 회사가 되어 있었을 것이다.

 소프트웨어 엔지니어를 고용해서 엉성한 Domain Experts로 만들어 버리는 한국의 회사들은 영원히 대규모의 소프트웨어도 만들어 내지 못하고 지금까지 그래왔듯이 글로벌경쟁은 여전히 실현 불가능한 꿈으로만 남아 있을 것이다. 사티야 나델라의 지적처럼 Pro-Developer의 중요성을 이해하려면 이번 기회에 먼저 Pro-DevelopersDomain Experts와의 차이점을 정확히 이해하려는 노력을 하기위한 계기가 되기를 바란다.

 

 

 

2021년 3월 6일 토요일

개발자 한 명이 백 명의 일을 할수 있나?

 

소프트웨어에 대해서 얘기하면 꼭 나오는 말이 있다. 훌륭한 개발자의 능력이 보통 개발자의 능력보다 몇 배 뛰어난가 하는 주제이다. 소프트웨어 공학가인 자크만(Sackman)은 이미 1968년도에 개발자 사이에는 28배의 차이가 난다고 발표했고 페이스북의 주커버그는 2011년에 100배의 차이가 있을 수 있다고 그냥 말했다. 이런 말장난을 듣고 호들갑 떠는 한국 소프트웨어 관련 교수, 정부, 경영진들을 보면 소프트웨어를 손톱만큼이라도 이해하고 있는지에 의문이 든다. 나도 이런 말을 인용해서 사용하기는 했지만 "소 귀에 경읽기" 인 것을 알고 나면서부터는 별로 인용하지 않는다. 또 그런 논문이 잘못되었다고 반발을 제기하는 논문도 있다. 다 이론 가지고 싸우는 사람들의 소일거리며 밥벌이 수단이다.

 "True Technologist"라고 불리는 마이크로소프트의 팀장이었던 실전 소프트웨어 전문가인 조엘 스폴스키(Joel Spolsky) 같은 사람들은 그런 이론가들을 경멸한다. 나도 당연히 조엘 스폴스키, 스티브 맥코넬(Steve McConnel), 밥 글래스(Robert Glass), 켄트 벡(Kent Beck)같은 실전 전문가들을 좋아하고 공감한다. 40년의 경험과 일치하기 때문이다. 반면에 이론가들하고는 얼굴 마주치기도 싫다. UML을 만들어낸 "3 Amigo"라고 불리는 야콥슨, 부치, 럼바와 같은 이론가들도 유행을 만들어 유명해지는 데는 성공했지만 과연 소프트웨어의 개발역량에 이바지를 했는지는 회의적이다. 이미 다 행해지고 있는 관행을 도식화 했을 뿐이지 새로운 개념을 만들어 낸 것도 아닌데 그 처세술에 놀랍기만 하다. 그래서 조엘 스폴스키는 그런 사람들에게 "화성에 가서 살고 제발 지구에 내려와서 피해를 입히지 말라"고 했다. 나도 그런 한국의 교수들이나 대기업의 경영진들을 보면 화성에 가서 살라고 하고 싶다. 그들도 목구멍이 포도청이기 때문에 지구를 떠날 리는 만무하지만 제발 피해를 덜 입히는 좋겠다는 생각은 항상 가지고 있다.

 다시 100배 얘기로 돌아와서 나는 차라리 10,000배라고 말하겠다. 어차피 다른 사람은 못할 일을 한 사람이 할 수 있다면 무한대의 배율이지 몇 배가 아니다. 퍼센티지나 배수를 얘기할 때는 분자와 분모를 정확히 얘기해야 한다. 지식산업의 세계는 모차르트나 아인슈타인과 같이 배수로 판단할 수는 없는 것이다. 노동산업에서나 숫자가 가능한 것이다. 억지로 강조하려다 보니 그냥 100배라고 얘기한다. 본질은 이해하지도 못하고 진짜 100배인가 보다고 착각하고 어떻게 하면 개발자들을 더 훌륭하게 양성할 수 있을까 하고 고민 같지도 않은 고민을 하면서 일을 벌이고 회사에서 급여를 타가기도 한다. 무지가 판치는 세상이니까 가능한 현상이다

소프트웨어가 지식산업이라고 말로만 떠들지 전혀 이해하지 못한 상태에서 발전에 장애가 되는 짓만 한다. 소프트웨어 산업을 발전시킨다고 하면서 노동집약산업 형태의 공장으로 만들고 잘되기를 바라는 것은 망상이다. 폴리페서들과 공무원들의 이해 관계가 맞아 떨어진 탁상행정도 마찬가지이다. 지난 20년 동안  정부에서 20개 정도의 법이 소프트웨어 진흥을 위해 만들어 졌으나 노동산업을 기본사상으로 시작했으니 잘 될 리가 없다.

 한국에서는 100배를 위해 노력하고 말고 걱정할 필요도 없다. 노동산업에서는 그런 일이 벌어 질 수가 없기 때문이다. 숙련공이라야 기껏해야 몇 배의 효율 밖에 나지 않는다. 훌륭한 개발자는 몇 배의 차이 정도 나는 코딩을 잘하는 것이 아니다. 분석이나 설계에서만 10,000배라는 상징적인 차이가 날 수 있다. 아니면 다른 사람들이 아예 못하는 것을 할 수도 있다. 모든 개발자를 코딩의 노동공장에 쏟아 부으면서 100배의 차이를 운운하는 것은 완벽한 무지의 소치이다. "무지를 치유할 수 있는 약은 없다."라는 속담처럼 적어도 과거 20년은 변하지 않았다. 정부나 기업이나 앞으로도 몇 십 년은 변할 기미가 보이지 않는다.

새 개발 도구나 관리의 효율화 같은 것이나 생각하는 상태에서 100배는커녕 2배 차이가 나면 다행이다. 말 잘하는 아첨꾼들은 몇 배의 능력이 있는 것처럼 포장할 수 있겠지만 삽으로 땅 파는 능력에서는 큰 차이가 나지 않는다. 그러면서 100배 가치 있는 훌륭한 개발자를 찾는다고 하는데 현실은 바보 개발자를 피하는 노력에 불과하고 숙련된 목수를 찾는 것에 불과하다. 숙련공을 찾아 헤매면서 훌륭한 개발자를 찾겠다고 하는 착각이다. 유행하는 개발언어나 도구를 아는 것을 훌륭한 개발자라고 하는 착각은 어디서 시작되었는지는 모르지만 그런 잘못된 생각이 만연되어 있다. 소스관리도구인 GIT를 아는 데는 반 나절이면 충분하고 파이썬은 2시간에 가르쳐 주는 것이 내가 배운 과목에서 벌어진 현상이다. 또 파이썬으로 숫자 인식하는 인공지능 기계학습 프로그램을 만드는 데는 보통 개발자라도 해도 1,2일 아무리 많아도 1주일이면 충분하고도 남는다. 믿지 못하겠으면 구글 웹사이트 가서 찾아보고 실제 해보기 바란다

그런 도구를 안다는 것이 이력서에 자랑스럽게 적을지 모르지만 망치 다루는 것을 안다 뿐이지 건축가로는 인정하지 않는다. 개발자의 가치는 도구의 사용도나 능숙도가 아니다. 내가 과장해서 말한다고 할지 모르지만 자세히 설명하기도 불가능하지만 그런 것을 이해하지 못하는 것이 근본적인 문제인 것이다.

한국의 모든 고층건물은 외국 건축회사가 설계했다. 결국 시뮬레이션 소프트웨어 능력이 없어서이다. 한국이 자랑하는 인천대교와 영종대교도 외국 건축가가 설계 했다. 그나마 장비와 인부 동원해서 시공은 잘하니까 시공업체가 돈은 벌지 모르지만 고부가가치는 전부 외국의 몫이다. 이제 한국에서는 "훌륭한 개발자를 기르자" 같은 공허한 소리는 하고 싶지도 않고 듣고 싶지도 않다. 그럴 환경이 없다. 숙련공에 불과한 목수를 건축가라고 하지 말라.

 다행인 것은 그런 열악한 환경에서 이를 진심으로 인지한 유일한 회사는 삼성전자뿐이다. 삼성전자의 Metacognition, "자아인지" 역량은 한국에서 유일하다고 생각한다. 수년 전에 삼성전자가 스스로 평가하기를 삼성전자 개발자의 1,2 퍼센트 만이 구글의 문제해결 능력이 있다는 자체평가를 내렸다. 필자가 삼성에 교육을 해 본 결과 몇 퍼센트 정도는 된다고 본다. 나의 경험과 삼성의 평가가 거의 일치한다.  이런 정확한 인지능력은 미래의 발전 역량을 의미한다. 그나마 삼성 같은 회사가 있다는 것은 다행이다. 수십 개의 회사를 컨설팅 하면서 얻은 조그만 희망의 불꽃이다.

 그 외의 모든 회사는 잘 해보겠다고 헛된 노력을 많이 하지만 근본적인 이해가 전혀 없는 상태에서 망상에 불과하고 시간과 비용만 낭비할 뿐이다. 용어를 외웠다고 해서, 본질을 이해한 것도 아니고, 그를 실행할 수 있는 것도 아니다. 사마천의 사기 "손자,오기열전"에 나오는 말이 있다. 오왕 합려는 손자병법을 이해한 유일한 왕인데 손자가 말하기를 "당신이 손자병법을 이해는 했지만 실행하지는 못할 것입니다" 라고 했고 그 말을 듣고는 손자를 대장군에 고용하고 7번의 큰 전쟁을 모두 승리하며 초강대국이 되었다. 그런 합려가 아들인 부차를 꾸지르면서 한 말이 있다. .  "너는 손자병법을 외웠지만 한 글자도 이해하지 못했다."  손자병법은 6천자 정도로 종이 2장에 적히는 작은 양이다. 결국 외웠다는 것, 이해한다는 것, 실행한다는 것은 모두 하늘과 땅 차이가 있다. 이것을 이해한 오왕 합려는 자아인식 수준이 최고인 왕이었고 당연히 춘추오패가 될 수 있었다. 반면에 손자병법을 외우기만 하고 자만했던 부차는 월나라와의 전쟁에서 패해 자결한 오나라의 마지막 왕이 되었다.

 정부나 회사에서 어떤 정책을 펼쳐도 먼저 자아인식을 하지 않는 이상은 탁상공론만 나온다. 이런 말을 이해하지 못하겠다면 그냥 목표를 조그마하게 가지면 된다. 그냥 똑똑한 숙련공만으로 가능한 노동집약적인 비지니스를 찾아 국내에서만이라도 생존하는 것도 훌륭한 처세술이다. 지금 한국에서 살아 있는 99.9%의 소프트웨어 회사들이 다 그런 회사들이다. 절대 글로벌 회사가 될 수는 없지만 헛된 꿈을 쫓지 말고 현실을 아는 것만 해도 무척 현명한 것이다. 외화는 어차피 한국의 제조업에서 잘 벌어오니 글로벌 걱정하지 말고 그냥 국내에서 돌고 도는 돈만 가로채서 벌면 된다. 이기적이지만 법적으로 뭐라고 할 수는 없다. 그런 면에서 IT 강국이라는 말은 허상이다. 이런 상황에서 개발자가 농부나 시인이나 배달맨보다 훨씬 더 많이 버는 것도 부조리하다. 운이 좋은 것을 감사하며 살아야 한다.

내가 지난 20여년 동안 한국에서의 경험 중에 뛰어난 개발자를 몇 명 발견했지만 당연히 회사의 방침과는 다르게 간 사람들이었다. 회사의 방침대로 갔다면 잘 해야 숙련공이 되겠지만 숙련공이 되기도 전에 해고당하기 딱 좋은 케이스였다. 그들을 보호하고 성장하는 것을 보는 것이 나의 최고의 보람이었다. 하지만 그들도 결국은 노동집약 공장 속에 하나의 숙련공이나 관리자로 전락될 것을 생각하면 가슴이 아프다. 그런 사회에 속하게 된 하늘의 뜻을 탓할 수는 없고 자신의 운명으로 받아들이는 것이 현명하게 사는 법이다.

"100배 능력의 개발자" 같은 소리는 소프트웨어에 대한 모욕이고 한국에서는 벌어질 수 없는 현실이니 이제는 그런 소리는 더 이상 아무도 하지 않았으면 좋겠다. 나도 한국에서는 진정으로 이해하는 극히 소수의 사람들과의 대화에서만 사용할 것이다.

글로벌이니 4차 혁명이니 하는 용어도 한국에서나 호들갑으로 떠들어 댈 뿐이고 막상 그 안에 들어가 있는 회사는 그런 용어를 사용하지도 않는다. 아마존 책방과 예스24에 가서 검색하고 비교해 보면 알 수 있다. 그런 호들갑스러운 행동도 한국 갈라파고스 현상의 일부분이다. 먼저 자아인식을 하는 것이 모든 발전의 출발점이며 유일한 희망이다.

2020년 12월 10일 목요일

소프트웨어 진흥법 개정에 대한 의견


임마뉴엘 칸트는 역사상 위대한 5명의 철학자 중의 한 명이라고 한다. 칸트는 300년 전인 1724년에 태어나 80년을 살았다. 여기서 칸트의 철학을 논하자는 것은 전혀 아니다. 학자들의 부조리를 얘기하려고 한다. 철학과 관련된 사람들에는 철학을 하는 사람(“철학자”)과 철학을 연구하는 사람(“철학연구자”)의 두 종류가 있다. 진정한 철학자는 행동을 하는 사람이다. 칸트의 철학을 좋아한다면 칸트가 말한 대로 행동을 하는 것이다. 석가모니를 존경한다면 석가모니가 말한 삶을 따라 하는 것이다. 

칸트를 연구한답시고 전세계의 학자들이 몇백년 동안 논문을 발간하고 있다. 캘리포니아 대학교 도서관에만 해도 지난 5년간 칸트에 관한 200여 개의 저널이 있다. 칸트가 죽은 지가 200년이 넘는데 칸트가 한 말에 대해 연구를 계속하며 돈 벌이하는 것을 보면 칸트가 무덤에서 뛰어나올 만한 일이다. 칸트의 철학을 좋아한다면 칸트가 말한 대로 따라 하면 된다. “칸트연구자”들은 돈을 벌기 위한 도구로 칸트를 잘 활용하고 있다. 대부분은 그런 학자와 그 주위에 있는 집단이다. 진정한 철학자 중에는 그런 철학연구자 혹은 폴리페서를 경멸하는 사람들이 많다. 즉 폴리페서는 철학을 하는 것이 아니고 철학을 이용해서 돈을 버는데 특화된 아주 영악한 사람들이다. 300년이 지난 칸트를 뼈까지 우려내면서 고상한 지식인 척 하는 것을 보면 존경심이 생기지 않는다. 

이번에 개정되었다는 SW진흥법을 보면 SW를 하는 사람들이 아니고 SW를 연구하는 사람(SW연구자)들이 만들어 놓은 것으로 보인다. 기대도 하지 않았지만 탁상공론에 가깝고 악법이 될 가능성이 농후하다. 그 와중에 혜택을 입는 이익집단은 당연히 존재하고 새 법에 따라 새로운 일이 창출되는 관련업자들이다. 항상 그렇지만 법은 만드는 사람들의 이익이 반영되는 것이 진리이다. 

지금 SW를 잘해보겠다면 실제 SW하는 사람들이 실리콘밸리를 그럭저럭 흉내 내서 따라 해 보면 된다. 좋은 방법은 아니지만 진정한 스승이 없는 상황에서 그나마 최선의 길이다. 그러다 보면 잠시 엉뚱한 방향으로 가는 경우도 있지만 시간이 지나 결국은 제 길로 찾아오게 된다. 물론 스승이 있으면 시간이 절약되는 것이고 아니면 오래 걸릴 것이다. 이런 자연진화에 악법이 참견하게 되면 자연적인 진화능력을 빙해하기 때문에 SW발전에 해가 된다. 참견하지 않는 자연진화가 지금으로서는 최선의 길이다. 국내 SW의 지난 20년 과거와 지금 벌어지는 상황을 보면 변한 것 같이 보이지만, 사실은 변한 것이 없고, 앞으로 변할 수도 없어 보인다. 규정 몇 개 생겼다고 변하는 상황이 아니다. 실리콘밸리에서 지금과 같은 정책을 펴는 것을 본 적이 없다.

이 와중에 대표적인 이익 집단이 SW공학을 한다는 집단이다. 대학교수가 SW공학을 가르친다는 것은 근본적으로 상충되는 개념이다. SW공학을 하는 것이 아니라 SW공학연구자들이다. 즉 기본적으로 학교는 SW공학을 할 수 있는 기관이 아니다. SW 공학을 연구하는 대표적인 대학은 카네기멜론 인데 한두 군데 대학에서 굳이 그런 연구를 하겠다면 인정해 줄 수 있다. 그나마 그 속을 들여다 보면 결국 글로벌 SW기업의 관행을 정리해 놓은 것 이상도 이하도 아니다.  만병통치약처럼 문제만 있으면 껴드는 것이 SW공학인데 망상에 불과하다. 현실에서는 수 많은 칸트연구자처럼 국내의 과잉 상태인 SW공학연구자도 앞으로 몇십년은 잘 살아남을 것이다.

SW공학은 연구하는 것이 아니라 실행하는 것이다. 사실 지금 필자가 여기서 말하는 “연구자” 와 “실행”과 같은 내용은 현실감 있게 이해하기도 어렵고 이미 깨달은 사람만 공감할 수 있는 공허한 외침이고 소 귀에 경읽기 라는 것을 알지만 그래도 국내에서 소수의 선각자들은 공감해 왔고 이 글 역시 그런 소수와 공감하기 위한 것이 주목적이다.

SW기술자를 존중하자는 조항도 눈에 보인다. 그 동안의 시행착오에도 불구하고 법을 잘 개정하면 SW기술자를 공정하게 정의할 수 있을 것이라고 믿는 가정일 텐데 그런 불멸의 집착은 놀랍기만 하다. 가능한 것과 불가능한 것을 구별하지 못하는 무지는 경멸할 수 밖에 없다. 그런 것은 법으로 구별할 필요도 없다. 산업계에서 다 알아서 한다. 착한 사람 등급을 매겨서 우대를 하자는 것과 비슷한 오류이다. 그래서 AI가 대체할 수 없는 직종 중에 SW분석가가 있는 것이다. SW를 바라보는 근본적인 개념에 차이가 있다. 

또 수십년 간 문제가 되어 온 불공정한 SW사업계약관행에 대한 조항도 보이는데 아직까지도 그 근본 원인을 모른다는 것도 경이롭다. 또 땜방 처방이다. 필자가 이 블로그에서만 해도 수십번은 얘기한 주제라서 더 이상 얘기할 필요는 없다.

나머지 상식적으로 도움이 될 만한 조항도 있지만 필자가 보기에는 차라리 매년 발간되는 가트너의 “Gartner Top Strategic Technology Trend 2021”를 읽는 것이 훨씬 더 유용하다. 베낀 것을 보느니 원본을 보는 것이 더 정확하다.

결과적으로 새로운 것처럼 보이는 규정을 만들어 결과적으로 SW산업의 자연스런 발전을 저해하는 것으로 보인다. 그 와중에 혜택을 얻는 이익집단이 눈에 선명하게 보인다. 그들이 악의를 가지고 하는 일은 아니라는 것도 잘 알고 있다. 철학자 니체는 착한 사람들을 극히 경멸해 왔는데 그 의미는 착한 사람들은 이익집단에게 순진하게 이용당하는 것을 경멸해 왔다. 즉 사기 치는 사람보다 사기 당하는 사람들을 더 경멸했다. 소크라테스와 석가모니가 말하는 “무지가 악의 근원”이라는 것과 거기에 니체가 경멸하는 “착함” 또는 “순진함” 까지 갖추면 부정적인 상승작용을 일으켜 한국 SW의 미래가 어둡기만 하다. 

인류의 현자들이 지적해온 “선의를 가진 무지한 자들의 집념”이 가장 나쁜 악에 도달한다는 것을 인지할 필요가 있다. 그럼에도 불구하고 국내에서는 도토리들의 경쟁에서는 살아남을 수 있을지 모르지만 그런 자아도취의 역량으로는 글로벌 경쟁력을 가지기는 어렵다. 지금은 쓸데 없이 건드리지 않고 자연 진화하도록 두는 것이 결국은 SW업계가 더 빨리 발전하는 길이다. 

내 인생에서 35년 동안 SW 세상의 많은 것을 경험하고 나니 이제는 소프트웨어 소꿉놀이에 미련이 없어졌다.
앞으로는 인생에서 더 소중한 다른 일에 많은 시간을 보내야 겠다.




2020년 10월 12일 월요일

노벨 문학상 수상자와 IT 전문가의 삶

 2020년 노벨 문학상 수상자는 미국의 여류시인 루이즈 글릭(Louise Gluck)이다. 한국에는 거의 알려져 있지 않은 시인이다. 노벨 문학상이 발표된 후 노벨 재단에서 그녀와 전화 인터뷰를 하려고 미국 동부에 거주 중인 그녀에게 오전 7시경에 전화를 걸었다. 코로나 때문에 수상자들은 스웨덴에 가지 않고 자기 거주지에서 수상을 한다. 인터뷰의 내용을 간추리면 다음과 같다.

 

노벨 : 2, 3분 정도 인터뷰할 시간 있습니까?

루이즈 : 나는 지금 모닝 커피를 마셔야 하기 때문에 2분만 시간이 됩니다.

노벨 : 노벨상이 무엇을 의미합니까?

루이즈 : 전혀 모르겠습니다. 그런데 첫째로 드는 생각은 친구가 없어질 거라는 것입니다. 내 친구들은 모두 작가들인데 그런 친구들이 생기지 않을 것 같습니다. 현실적으로는 케임브리지에 콘도가 하나 있는데 버몬(현재 거주지)에도 집을 하나 마련할 수 있을 것 같습니다. 하지만 나는 현재 사랑하는 사람들과 지내는 일상 생활이 보전되지 못할 것 같아 걱정입니다. 이 모든 관심으로 인한 사생활을 침해하는 전화벨이 계속 울리고 있습니다.

노벨 : 자신의 작품에 대해 설명해 주시겠습니까?

루이즈 : 초기 작품은 읽지 말고 최신 작품인 “Averno”“Faithful and Virtuous Night” 을 읽기 바랍니다.

노벨 : 살아온 경험의 가치가 어떤 사건에 대한 관점에서 얼마나 중요하다고 생각합니까?

루이즈 : . 주제가 너무 큽니다. 그리고 지금 7시 이른 아침입니다.

노벨 : 당신의 작품의 주제가 ………. (계속 질문하려고 한다)

루이즈 : 2분 지났습니다.

노벨 : 죄송합니다. 충분히 괴롭혔습니다. 축하합니다.

 

이 인터뷰로 보면 루이즈 글릭에게는 노벨상의 가치가 버몬주에 집을 하나 살 수 있다는 것 이외에는 걱정이 더 많고 그리 반가워하지 않는다는 것을 명백히 알 수 있다. 모닝커피 마셔야 하니까 2분이 지나서 전화를 중단할 정도로 노벨재단에 대한 배려도 하지 않고 비중도 전혀 두지 않는다. 노벨재단 입장에서는 노벨상을 주었으니까 기뻐서 흥분할 것으로 기대했을지 모르지만 사람의 가치관에 따라서 필요도 없는 노벨상을 왜 주었냐는 식으로 다른 걱정이 앞서는 사람도 많다.

 

회사와 직원의 관계도 비슷할 수 있다. 회사에서 채용해 주었으니까 고마워하고 회사가 시키는 대로 충성을 다해야 한다는 봉건사회적인 사고방식은 바람직하지 않다. 반대로 산업의 첨단을 걷는 IT 근무자라면 자기의 전문성에 대한 긍지와 자존심이 있어야 하고 그럴 수 있도록 실력을 쌓아야 한다. 즉 봉건시대처럼 회사의 소작농으로 살아가면서 고마워 할 것인가 아니면 실력 있는 전문가로 대등하게 회사가 귀중히 여길 수 밖에 없는 노벨상 수상자가 될 것인가는 자신의 노력에 달려 있다.

 

IT 전문가로서 돈과 명예를 적극적으로 추구할 것인가, 자신이 즐기는 일상적인 생활을 하기 위한 도구로서의 가치를 둘 것인가는 인생관의 차이이다. 잘 알려진 박애주의자인 워런 버펫은 거의 100조 달하는 재산을 가지고도 강남의 아파트 한 채 값에 불과한 네브라스카주의 평범한 집에서 살고 있다. 자동차는 당시 가격이 5만불 정도인 2014년형 캐딜락 XTS를 타고 있다. 그러면서 모든 재산은 계속 기부하고 있다. 반면에 실리콘밸리에서 IPO가 성공할 때 마다 나오는 졸지에 생긴 부자들의 삶의 대부분은 비싼 집, 비싼 차의 추구가 첫번째 하는 행동이다. 과시욕만 제외하면 비싼 것과 좋은 것은 다르다. 그런 행동이 자신의 인생관이라고 말하려면 인생의 가치에 대한 깊은 탐구를 해 봤어야 한다. 그렇지 않다면 그냥 과시욕과 우월감을 자랑하려는 인간의 동물적인 본능에 불과하다. 불로장생을 찾아 헤맨 진시왕이나 알렉산더 대왕처럼 존재하지 않는 허상을 끝없이 추구하는 오류를 범할 수 있다.   

 

IT와 회사는 인생의 목적이 아니고 하나의 도구에 불과하다. 회사와 직원 모두 잘 인지해야 조화롭게 목적을 이룰 수 있다. 둘 다 주인도 아니고 노예도 아니다. 도구에 집착하여 인생을 소비하는 것에 대해 루이즈 글릭은 시집 Faithful and Virtuous Night 에서 다음과 같이 표현한다. 참고로 이 부분은 나의 주관적인 해석이므로 시의 특성상 다르게 해석될 수 있다는 것을 말해 둔다.

 

어느 날 잠에 들면서 깨달았다.

내가  그것의 노예로 살았고 강한 애정을 가졌던 모험이 끝났다는 것을.

과연 사랑으로 끝난 것일까?

내가 추구하던 것들이 무엇이라고 말할 수는 없지만 무엇인가 존재했다고 믿는다.

과연 그런 것이 정말로 가치가 있었던 것인가?

 

 

 

 

2020년 8월 2일 일요일

인공지능이 개발자의 48%를 대체한다

 

인공지능(AI)이 무서운 속도로 발전하고 있다. 불과 4년 전에 바둑에서 구글의 알파고가 인간의 자존심을 깨트렸는데 지금은 점점 더 차이가 벌어져 AI가 인간의 대국을 평가하는 상황이 되었다. 자동차의 자율 주행도 완전 자동화 단계인 무인자동차가 시험주행 중이다. 테슬라는 올해 안에 무인자동차를 완성시키겠다고 한다. 머지 않아 운전면허증이 필요 없는 세상이 오고 미국에서만 500만 명이 실직될 것이라고 예측한다.


홍콩의 핸슨 로보틱스라는 회사가 인간 신경계 모델을 기반으로 해서 만든 인간형 로봇 소피아는 사우디아라비아에서 시민권까지 부여 받았다. 인터뷰 동영상을 보면 자아, , , 사랑 등 다양한 주제에 대해 보통 인간보다 더 성숙한 대화를 한다. 노래도 하고 농담도 한다.


그런 AI가 소프트웨어 산업에 속한 직업을 얼마나 대체할 수 있을까?

AI가 직업에 끼치는 영향에 관한 옥스퍼드 대학의 연구 미래의 직업(The future of Employment)” 보고서에 의하면 미국의 대표적인 702개 직종 중 47%가 일이십년 내에 자동화되어 인간을 대체할 수 있다고 한다. 그 중에 가장 위험성이 큰 직업이 98%의 대체율인 운전사이다. 반대로 가장 대체가 어려운 직종 중의 하나가 1.5%의 대체율인 CEO이다. 다른 대체율을 보면 내과의사는 0.4%, 학교선생은 1%, 변호사는 3.5%, 회계사는 94%, 건설노동자는 88%이다.

 

그럼 702개 직종 중 소프트웨어에 관한 직업만 추려서 보자.

 

대체율(%)

직종

0.65

시스템분석가

1.5  

컴퓨터과학자

3    

네트워크/시스템 관리자

3.5  

정보 시스템 관리자

4.2  

응용프로그램 개발자

13    

시스템 소프트웨어 개발자

21    

정보보안 분석가

21    

웹 개발자

21    

네트워크 아키텍트

48    

프로그래머

 

 이 결과를 보면 "시스템분석가" 0.65%의 대체율로 대체가 거의 불가능하다. 가장 대체하기 쉬운 "프로그래머" 48%로 반이 없어진다. 중간의 "웹 개발자"20%의 대체율을 보인다

 

그럼 "시스템분석가", "개발자" "프로그래머"의 차이는 무엇일까? 사실 국내에서는 이 차이를 정확하게 구별하고 채용하는 회사도 없거니와 실제 회사 안에서도 이렇게 나누어져 있지도 않다. 국내 소프트웨어 산업자체가 이런 구분을 정확하게 하고 있지도 않다. 경력기간으로 분류하는 것은 잘못이다. 사병은 평생가도 장교가 되지 못한다. 하는 업무가 다르기 때문이다.


 주로 국내 대기업에서 보듯이 수많은 템플릿의 거대한 방법론을 가져다 놓고 템플릿 채우는 방법을 교육시키는 상황에서는 AI가 대체하기 쉬운 기계적인 환경이다. 템플릿 채우는 사람을 분석가라고 이름을 붙이는 것은 진짜 분석가에 대한 모욕이나 다름 없다. 분석가는 템플릿이나 방법론과 상관 관계가 전혀 없다. 그런 것들은 결과로 나타나는 하나의 표현 방법인 것이다. 템플릿은 생각의 자유를 제한하지만 공유하기 위해 사용하는 규칙에 불과하다. 템플릿을 많이 강제화하면 할수록 훌륭한 분석가의 역량을 사용하는데 방해가 된다.


 분석가는 템플릿이나 방법론으로 규정할 수 없는 순수한 두뇌활동의 종합예술이다. 타이피스트와 소설가가 다른 것과 같다. 템플릿과 가깝게 일을 한다면 그건 프로그래머에 가까운 일을 한 것이다. CEO도 마찬가지로 종합적인 판단을 하는 면에서 분석가와 같다. 당연히 CEO가 사용할만한 템플릿이나 방법론이 있을 수가 없다.


 그럼 반대의 극단으로 방법론 같은 것 전혀 없이 벤처기업에 존재하는 1인 영웅개발자의 직종은 무엇인가? 일단 프로그램을 해서 소스코드라는 결과를 만들어 내니까 일부 프로그래머에는 틀림 없다. 분석가라고도 주장하려면 분석한 결과가 있어야 한다. 어떤 행위를 했는데 아무런 결과가 없으면 그런 행위자라고 할 수 없다. 결과가 머리 속에 있다고 얘기할 지 모르지만 그런 것은 자아도취의 몽상가이다. 결과를 모두 건너 뛰고 소스코드를 적어낸다면 그건 영원한 1인 영웅개발자이고 회사 초기에만 잠깐 필요할 뿐 회사가 발전하는 데는 심각한 장애가 된다.


여기서 가장 어려운 것은 분석가, 개발자, 프로그래머의 역량을 구별하는 것이다. 물론 한 사람이 여러 역할을 하느냐 아니냐는 회사 규모와 처한 환경에 따라 다르지만 역량은 분명히 다르다. 요새 나온 신문기사 중에 대규모 외주 개발을 분할발주를 하는데 1단계 분석과 설계, 2단계 구현으로 나누어서 발주를 하겠다는 말이 있는데 이는 아직 분석, 설계, 구현을 전혀 이해하지 못해서 벌어지는 국내의 기이한 현상이다. 이런 식의 분할 발주는 국내를 제외하고는 전세계에 존재하지 않는다. 논리적으로도 존재할 수가 없다. 분할발주는 1단계 분석단계와 2단계 설계/구현 단계로 하는 것이 옳다. 분할발주에 대해서는 이전 기사들에서 누누이 설명했기 때문에 여기에서 또 설명하지는 않는다. 1단계 분석단계가 바로 분석가가 수행하는 작업이다. 2단계에는 개발자와 프로그래머가 섞여 있다. 분석가는 당연히 같은 경력기간의 프로그래머보다 연봉이 10배 정도 높을 수도 있다.


하여튼 국내 소프트웨어의 잘못된 관행이 빨리 없어지기 위해서는 먼저 본질에 대한 정확한 이해가 필요하다. 본질에 대한 정확한 이해 없이 표면적인 증상처방의 단세포적인 법규로 대응해야 과거 20년 이상 그랬듯이 점점 더 깊은 웅덩이로 빠질 뿐이다.


옥스포드의 결과에서 왜 AI가 프로그래머의 반을 대체하지만 분석가는 거의 없어지지 않는지의 이유를 심각하게 생각할 필요가 있다. 자신이 프로그래머라는 사실 자체도 인지하지 못하고 있을 수도 있다. 회사에 자기가 없으면 안된다는 생각도 대부분은 매우 위험한 착각이다. 하여튼 장기적으로 소프트웨어 관련 산업에 종사할 개인들로서는 자신의 직업의 본질과 그 위험성을 알고 현명하게 대처하는 것이 중요하다.


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차 산업혁명 등 아무리 주장해도 우물안 개구리 국내 관행에서 벗어나려면 필수적인 역량이 무엇인지를 진정으로 이해하는 것이 필요하다.

2020년 5월 29일 금요일

명의 편작도 못 고치는 소프트웨어 회사의 6가지 불치병

500년의 중국 춘추전국시대에는 혼란스러운 시기이면서 제자백가를 비롯해서 영웅들도 많이 탄생했다. 중국에서 가장 병을 잘 고치는 명의인 편작도 그 중의 한 명이었는데 세상에 어떤 병이라도 그 병을 제대로 아는 의사를 불러 조기에 치료하게 한다면 병을 고칠 수 있다고 했다. 반대로 아무리 훌륭한 명의라도 도저히 고칠 수 없는 아래의 “6가지 불치병이 있다고 하였다.

첫 째. 환자가 교만, 방자하여 자신의 병은 자신이 안다고 주장하는 환자이다. 모든 병에는 원리가 있어 그 원리에 따라 치료해야 하는데, 자신의 주관적인 판단으로 의사의 진료와 처방을 따르지 않는 사람은 치료가 불가능하다.

둘 째, 재물이 아까워 자기 자신의 몸보다 우선시하여 치료하지 못하는 사람이다. 재물을 중시하여 몸을 혹사하거나 함부로 부리는 것이 불치병이라는 것이다. 건강을 잃으면 모든 것을 잃는 것임을 알아야 한다. 
 
셋 째먹고 입는 것에 적절함을 잃으면 건강의 균형이 깨어진다. 옷은 추위를 견딜 정도면 적당하고, 음식은 배고픔을 채울 정도면 적당하다. 음식을 탐하고 편안한 것만을 추구하는 습관을 가진 사람은 어떤 명의라도 고칠 수 없다.
 
넷 째, 음양의 평형이 깨어져 기가 불안정한 사람이다. 음양이 장기를 장악하여 혈맥의 소통이 단절되면 기가 불안정하게 되어 되돌릴 수 없는 상태로 진행하게 된다. 기력이 인간의 몸의 기간이 되는 것이므로 늘 일정하게 유지되야 한다. 
 
다섯 째, 어떤 명약이라도 그 약을 받아들일 만한 기초 체력이 없으면 고치기 힘든 병이 된다. 걸을 수 있고 약 먹을 힘만 있어도 살 수 있다. 

여섯 째, 무당의 말을 신뢰하고 의사를 믿지 못하는 것이다.

소프트웨어를 잘 개발하기 위한 깨달음을 얻기 위해 실리콘밸리까지도 갈 필요도 없다. 2,500년 전으로 돌아가서 편작도 잘 알고 있었고 소크라테스도 다 알고 있었다. 진리의 보편성이자 수렴성이다. 하나의 진리를 깨달으면 모든 진리를 깨닫는다. 그럼 편작이 말한 소프트웨어 회사의 여섯가지 불치병에 대해 분석해 보자.

첫 째의 교만이다.
필자가 컨설팅이 불가능한 회사를 꼽는 첫 째가 "나도 다 안다" 는 회사이다. 인간은 자기가 아는 한도 내에서는 모든 것을 다 안다고 착각한다. 바로 “I know what I know”의 현상이다. 이런 자만감을 깨뜨려주는 좋은 운동이 필자가 가장 좋아하는 태극권이다.  태극권은 10년을 해도 '이제 조금 할 줄 아는군요' 라는 말을 듣는다. 오묘하다고 밖에 표현할 수 없는데 수련하면 할 수록 내가 모자라는 것이 점점 더 많아진다는 것을 깨닫게 된다. 미래에도 계속 그럴 것이라는 결론을 쉽게 내릴 수 있다. 필자가 즐기는 바둑, 골프, 당구도 그렇다. 그러니 몇 년 수련했다고 잘난 척 할 수 없게 만드는 것이 이런 것들이다. 필자가 소프트웨어에서 경험이 30년이 이상이 되었지만 실리콘밸리에서의 과거 경험 때문에 내가 안다는 자만감을 가질 수가 없다. 너무 뛰어난 개발자도 많았고 서로 배우는 즐거움을 회상해 보면 항상 내가 모르는 것이 많다는 생각을 없앨 수가 없다. 한번 해 본 것을 깨달았다고 착각한다면 우주의 탄생도 깨달을 수 있다는 격언도 있다. 5, 10년 경험한 개발자들이 마치 모든 것을 깨달은 것처럼 확신을 하고 얘기할 때는 가르치는 것이 불가능하다.

둘 째의 재물을 몸보다 중요시하는 경우이다.
눈 앞의 재물에 눈이 멀어 매출을 올리겠다고 잡화상처럼 이것 저것 고객이 원하는 것을 다 만들어 주는 것이 국내회사의 성향이다. 분식집의 메뉴를 세어보니 100개가 넘는다. 이런 분식집 전략으로 당장 생존하기 위한 노력은 이해하지만 성장이 불가능한 극약 처방의 모델이다. 오랫동안 생존하기를 원한다면 단기적인 재물의 손실은 감안하고 장기적인 혜택을 중요시 해야 한다. 소프트웨어 회사의 이런 앵벌이 방식이 오래되면 나중에는 벗어나올 수 없다.

셋 째의 음식과 옷의 편안함만을 추구하는 경우이다.
만시간의 노력은 하기 싫고 편안한 비법을 찾는 경우이다. 수 많은 비법에 현혹된다. 방법론, 프로세스, 프로젝트관리등 도구 만능주의이다.  다이어트 한다고 먹을 것 다 먹고 운동은 안하면서 약으로 해결하려는 것과  같다. 아무리 돈이 많은 재벌도 땀흘려서 운동을 해야 건강을 유지할 수 있다. 편하게 해서 성공할 수 있는 것은 범죄의 경계선을 넘어가기 전에는 이 세상에 없다. 범죄에 가까우면 가까울수록 돈은 많이 번다. 소프트웨어에서도 진짜 중요한 분석이나 설계 기술은 일이년에 잘 할 수 있는 것이 아니다. 10, 20년을 배워가면서 서서히 향상되는 것이다. 애자일, 프로젝트관리, 프로세스 같은 획기적인 도구나 비법을 주장한다면 100% 사기니까 믿지 말기 바란다. 이미 소프트웨어 역사에서 수십년간 되풀이 되는 메뉴에 불과하다. 실제 필자가 근무했었던 실리콘밸리의 글로벌 회사를 보면 회사의 역량은 다른 곳에 있다.

넷 째의 평형이 깨진 주화입마의 상태인 회사이다.
무술(특히 내가권), 동양의학, 또는 종교에서 많이 인용되는 ()는 영어로는’ Internal Energy’,’Natual Energy’ 혹은 ‘Vital Energy’등으로 번역되는데 경험으로 느끼기 전에는 실체를 알 수 없는 추상적인 것이다. ‘주화입마는 몸 속의 기를 잘못 운용하여 맥을 타고 온 몸을 돌아야 할 기가 어느 한 곳에 뭉쳐서 순환되지 않는 부작용인데 불구가 될 수도 있다. 즉 생명을 위협하는 극단적인 불균형상태를 말한다. 믿거나 말거나 이지만 소프트웨어에서도 상징적인 비교는 가능하다. 소프트웨어 회사도 프로세스와 같이 어떤 것을 무리하게 추진하게 되면 한 곳이 막혀 전체가 망가지는 불구가 될 수 있다. 그런 무서운 주화입마는 조금 할 줄 안다는 자만심의 상황에서 생기지 초보 회사에게는 생기지 않는다는 다행스러운 점이 있다.

소프트웨어 회사에서 기가 잘 순환되는 평형상태는 소프트웨어 기반시스템, 기술, 조직, 프로세스, 문화가 조화롭게 이루어진 상태이다. 아래 세 그림에서 비교해 보자.


첫 번째 그림이 평형이 잘 이루어진 완벽한 상태이다. 언제든지 폭발적인 에너지가 나올수 있는 준비된 상태이다. 글로벌 회사에서는 오랜 역사를 거치면서 이런 조화로운 능력을 갖추고 있다. 그런 상태에서 준비된 힘을 언제 어디에 쓸 것인가를 결정하는 것은 제품기획팀의 역할이다.

두번째 그림과 세번째 그림이 국내 소프트웨어 회사들에서 가장 많이 보이는 유형인데 이런 상태에서는 힘을 낼 수가 없다. 평형이 되어 있지 않기 때문에 힘을 내려고 하면 뭔가 삐끗하는 부분이 있다. 그런데도 억지로 힘을 내려다가 망치는 경우가 바로 주화입마인 것이다. 열심히 하면 할수록 주화입마에 깊이 빠지므로 조심해야 한다. 성장하기 위해 잘못된 개혁을 시도할 때에 문제가 생긴다. 주화입마는 열심히 하는 중상급자들에게 많이 발생하는 문제이다. 제대로 하면 최고가 될 수도 있고 잘못하면 몸을 망칠 수도 있는 기로에서 스승없이 자신의 능력을 과신하고 무모하게 시도하다가 망가진 경우이다.

이미 고객도 어느 정도 있고 빠르게 성장하는 회사가 뭔가 해보려고 할 때가 주화입마에 빠지기 좋은 경우이다. 주화입마에 드는 대표적인 예를 몇 개만 들어보자.

l  어설픈 선진 개발방법론 흉내내기
l  역량을 넘어선 과도한 프로세스
l  문서도 만들지 않으면서 대규모 개발하기
l  미래를 보지 못하는 상태에서 아키텍처 흉내내기
l  일정에 쫓겨 급하게 하는 지저분한 코딩

능력이상으로 무리하게 추진하다가는 지금 잘하고 있는 것도 망칠 수가 있다. 그리고 회복하는 데 많은 비용이 든다. 갑자기 제품 출시가 중단되기도 한다. 회사에서의 시행착오는 시장에 제시간에 응답하지 못하는 기회비용의 손실이라는 점에서 주화입마는 막대한 손실이다. 무술세계나 소프트웨어 세계나 주화입마에 빠지지 않으려면 항상 옆에 자기 실력을 정확히 아는 스승의 가르침 아래 조화롭게 성장해 나가야 한다. 무협영화에서 주화입마에 빠진 제자를 위해 스승이 기를 불어 넣어주어 회복시키는 장면을 많이 보았을 것이다. 혼자서는 영원히 불구가 될 위험이 너무 많다.

다섯 째가 체력이 다 소진된 경우이다.
의사로써 치료의 가능성이 없는 환자를 보는 심정은 안타까울 것이다. 필자도 컨설팅하다가 안타깝게도 이런 회사를 많이 보았다. 주화입마 처럼 조화가 망가진 상태를 넘어서 모든 것이 붕괴되기 직전인 상태이다. 이것 저것 잘못된 시도를 많이 하다가 모든 것이 소진된 상태라 더 이상 해볼 수 있는 상태이다. 돈도 떨어지고, 사람과 조직도 모두 다 망가졌다. 시간 문제일뿐 사라지고 만다. 이 상태가 되면 운명을 받아들이고 가라앉는 배에서 빨리 탈출하는 것이 좋다. 이렇게 되기 전에 미리 의사에게 가서 조치를 취하는 것이 유일한 방법이다.

여섯 째가 무당의 말에 빠진 경우이다.
의사와 무당을 구별하기가 쉽지는 않다. 건강식품과 같이 수 많은 무당이 소프트웨어 업체에도 판 친다. 달콤한 유혹, 편안한 방법, 획기적인 결과, 선진 방법론, 그럴듯한 이론 등이 그들이 사용하는 전략이다. 이런 장사꾼들의 전통적인 선전에는 실리콘밸리가 자주 등장한다. 그런 한두사례의 과대선전에 속아 넘어간다는 것이 안타깝지만 인간은 자신이 생각하는 것만큼 그렇게 논리적이지 않다. 미신은 원시인의 전유물이 아니다. 칼 세이건의 악령이 출몰하는 세상처럼 복잡해진 현대사회에 더 많은 미신들이 논리라는 이름으로 예쁘게 포장해서 돌아다닌다. 필자가 국내 소프트웨어 회사를 위해 할 일 중의 하나가 미신을 구별해 내는 것이다. 미신의 반증이 어려운 이유는 악마가 없다는 것을 증명해 보라는 악마의 증명이기 때문에 불가능하다. 브라질 버섯이 건강에 도움이 되지 않는 다는 것을 증명할 시간과 방법은 없다. 미국 FDA도 그런 승인은 할 수 없다. 자기 스스로 견문을 넓혀서 우물안 개구리가 되지 않도록 해야 한다.

편작이 지적한 이런 여섯가지 문제가 국내 소프트웨어 회사에 너무 잘 적용되는 것을 20년 이상 실제로 지켜보면서 현자들의 지혜에 감탄하지 않을 수 없다. 결과는 국제적인 경쟁력의 부재이다. 국내에서는 경쟁사도 다 같은 상태이니까 생존이 가능하지만 국제적인 경쟁은 차원이 다르다.

국내 소프트웨어 회사의 특징이 유행에 휩쓸려 너무 많은 것을 시도하려는 경향이 있다. 컨설팅 할 때 가장 어려운 점이 하지 않아야 할 것을 하고 있을 때 못하게 하는 것이다. 이런 경우 책임자들의 엄청난 반발과 자신의 업적에 대한 합리화의 격렬한 논쟁은 피할 수 없다. 특히 내부경쟁이 심한 대기업일수록 강하다. 진정으로 해야 하는 중요한 것들은 다 장기적이고 만 시간의 법칙이 필요한 것들이다. 힘든 노력 없이 돈으로 재미 있고 쉽게 해결해준다는 수 많은 유혹에 넘어가기는 쉽다. 하지만 그런 것은 존재하지 않는다는 진리를 기억하기 바란다.