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에 가서 검색하고 비교해 보면 알 수 있다. 그런 호들갑스러운 행동도 한국 갈라파고스 현상의 일부분이다. 먼저 자아인식을 하는 것이 모든 발전의 출발점이며 유일한 희망이다.

댓글 5개:

Alexsun :

Daily DevBlog 이메일 구독 서비스를 통해서 글을 접하게 되었는데 좋은 글에 감명받고 갑니다. 특히 ‘숙련된 목수를 건축가라고 하지 마라’라는 대목이 엄청 인상깊네요

임재현 :

글 잘읽었습니다. 감사합니다. 교수님이 말씀하시는 '훌륭한 개발자'가 되기위해 개인적으로 어떤 노력이 필요할까요?

임재현 :

글 잘읽었습니다. 감사합니다. 교수님이 말씀하시는 '훌륭한 개발자'가 되기위해 개인적으로 어떤 노력이 필요할까요?

임재현 :

글 잘읽었습니다. 감사합니다. 교수님이 말씀하시는 '훌륭한 개발자'가 되기위해 개인적으로 어떤 노력이 필요할까요?

won :

좋은 글 감사합니다
저도 위에 분과 마찬가지로 훌륭한 개발자가 되기 위해서 어떤 노력이 필요한지 궁금합니다
프로그래밍에서 언어나 지식을 외워서 매일 비슷한 패턴으로 코드를 찍어내는 게 아니라 흔히 말하는 문제해결력이 핵심인 것 같은데 이런 능력은 어떻게 발전되는 걸까요?
아직 인턴 반년이 전부인 학생이라 고견을 여쭙고 싶습니다!