2016년 6월 26일 일요일

분석 #6 왜 삼성개발자의 1-2%만 구글 개발자의 역량에 불과한가?



요새 삼성전자에서 SW 개발자 역량에 대한 자기 성찰의 기사가 나와서 화제거리가 되었다. 지금쯤이면 다 읽어 보았겠지만

"삼성전자 SW 엔지니어는 문제해결 능력에 대한 훈련을 많이 한 것 같지 않다. 지금 당장 문제해결 평가 방식으로 구글 입사를 시도 한다면 1~2%만 제외하고는 어렵지 않을까 생각한다." 라는 기사이다.

이는 너무 당연한 결론이며 삼성전자가 아닌 한국 소프트웨어 전체의 현상을 보여주는 것이다. 지금까지는 자아도취에 동키호테식 열정으로 진실을 외면하고 살아왔다면 이제 심각한 상황이 되면서 조금 눈치는 챘다고 볼 수 있다. 이는 개발자 자신들의 책임은 절대 아니다. 대부분은 회사와 경영진의 책임이긴 하지만 개발자들도 조금만 더 현명하게 기득권층과 선동가들에게 현혹되지 않았다면 지금보다는 나아질 수 있었다.

미국 SW 회사에서는 어려워져서 개발자 감원을 시킬 때 경력이 적은 사람부터 시킨다. 이름하여 오랜 경력자를 지키겠다는 정책으로 "Seniority"라고 한다. 그 이유는 상식적으로 너무 당연하다. 실력이 있기 때문이다. 회사에 오래 있었으니까 충성심을 고려해서 그런다고 생각하면 세상을 너무 모르는 순진한 생각이다. 그런 순수성은 존경할 만 하지만 세상 살아가는 요령은 약하다. CEO의 입장으로 바꾸어 놓고 생각하면 쉽게 이해가 갈 것이다. 어렵게 CEO가 되어서 자기도 실적을 내어야 살아남는데 실력없는 개발자를 단순히 회사에 오래 있었기 때문에 불쌍해서 살려주겠다고 생각할 CEO는 세상에 없다. 여기서 다양한 인사 정책을 논할 수는 없지만 기본적으로 핵심은 실력이다. 그 이외의 모든 인사 정책은 극히 작은 부분을 차지한다.

상황을 이해하기 쉽도록 인사 정책을 흑백논리로 생각해 보자. 모든 개발자를 40대 이후의 그룹과 40대 이전의 그룹으로 나누어 보자. 회사가 어려워져서 두 그룹 중 한 그룹을 감원시켜야 한다고 가정하자. 미국에서는 당연히 40 이전의 젊은 그룹을 감원시킨다. 40대 이후의 개발자가 다 없어지면 회사는 망한다. 한국 SW 회사에서는 40대 이후를 감원시키는 것이 옳다. 한국에서 40대 이후면 개발자가 아니고 거의 개발자의 탈을 쓴 관리자이다. 그러니 더욱 더 감원해도 문제가 안된다. 상식적으로 그렇고 사실이 그렇다. 그래서 필자가 개발자를 채용할 때도 대기업의 고참 개발자는 조심해서 본다. 개발자도 아닌 직원을 뽑아서는 할 일이 없을 뿐만 아니라 방해만 된다. 실제로 한국 회사에서 대부분의 젊은 개발자들은 위의 관리자나 임원들이 회사에 가치가 있다고 보지 않는다. 그들 만의 국지적인 관점일 수도 있지만 전세계 회사 평가 사이트인 glassdoor.com 에서 외국인들이 내린 평가를 보아도 한국회사들의 임원이나 관리자들에 대한 평가는 최악이다. 무지한 상태에서 엉뚱한 지시만 내린다는 평이다. 또 CEO를 인정하는가를 묻는 "Approve CEO"는 대부분 부정적이다. 이것은 필자의 추측도 아니고 부정할 수 없는 엄연한 사실이다. 전문성보다는 관리위주로 경영할 수 밖에 없는 최고경영진부터 회사가 그렇게 설정되어 있기 때문이다. 어떤 경우는 개발을 해 본 적도 없는 사람이 연구소장이나 CTO라는 직함을 가지고 있기도 하다. 외국에 나가서 어떻게 상대방과 대화를 할 수 있을지 의문이다.

필자도 지금까지 미국과 한국에서 기술자 경로에 있어 왔지만 미국 회사에서 개발자 경로에 있다보면 자기보다 나은 고수들의 공력을 느끼고 감탄하며 배운다. 반대로 30대가 되면 20대 신입이었을 때가 세상모르고 열정과 자신감으로 보낸 젊음의 시절이고, 40대가 되면 30대를 보고 이제 조금 SW를 알겠구나 하는 생각을 하게 되고, 50대가 되면 40대를 보고 이제 조금만 가이드해주면 일을 믿고 맡길 수가 있겠구나 하는 생각이 든다. 그래도 1,000명이 개발하는 거대한 제품은 백발이 성성한 개발자가 지휘해야 할 것이다. 한국이 자랑하는 인천대교와 영종대교의 핵심 설계를 일본의 조다이(長大)라는 업체가 맡았다. 1968년에 설립된 이래 전 세계적으로 20여개의 대형 교량을 설계한 경험이 있는 회사다. 한 토목 설계 전문가는 "이 회사의 하마지라는 기술자 한 명이 보유한 경험과 기술이 우리나라 교량 설계 업체 전체를 합친 것 이상이라고 해도 과언이 아닐 것"이라고 했다. 이런 기술자를 회사가 어렵다고 감원시키겠는가? 절대 아니다. 이게 바로 백발이 성성한 개발자의 실력에서 나오는 Power인 것이다. 애플 창업자인 스티브 워즈니악, 전 마이크로소프트의 Chief Scientist였던 레이 오지, 하둡의 창시자인 더그 커팅등 기술로는 전세계에서 누구도 따라갈 수 없는 기술자들이다. 다 60대 전후이지만 실리콘밸리에 가보면 이런 사람들이 수도 없이 많다. 그들이 바로 실리콘밸리의 숨은 힘이다. 요새 알파고로 갑자기 유행이 된 인공지능 분야에서도 세계적인 대가인 Geoffrey Hinton, Ray Kurzweil, Yann Lecun도 다 백발이 성성한 상태에서 구글과 페이스북의 인공지능 기술을 이끌어 가고 있다. 관리자가 아니다. 한국의 관료중심과 정치적인 환경에서는 절대 생겨날 수 없는 사람들이다. 조금만 유명해 지면 이런 저런 정부회의나 프로젝트등에 기웃기웃해서는 일단 시간이 모자란다. 기술은 멀어지고 점점 더 정치꾼으로 변해간다.

실리콘밸리의 기술자들은 서로 많은 기술 정보를 공유하고 협력하면서 실력이 급속히 늘어간다. 백발이 되어가면서 그들의 실력은 임계치를 넘은 폭발력으로 점점 더 가파르게 증가한다. 물론 육체적인 능력은 떨어지지만 종합적인 판단력이나 기술적인 결정은 회사의 운명을 좌우한다. 타이핑하는 속도는 20대를 따라갈 수 없다. 생각하는 시간이 많아지고 타이핑하는 시간이 줄어들기 때문이다. 그에 반해 한국은 조금만 경력이 생기면 팀장이라든가 해서 기술력의 전문성은 떨어지기 시작한다. 바로 죽도 밥도 아닌 Generalist가 탄생하는 순간이며 팀장이나 관리자의 권위를 즐기며 살아가는 것도 잠깐일 뿐 조금만 지나면 생존을 염려해야 한다. 회사가 관리위주의 경영을 하기 위해 개발자를 관리직으로 내몰면서 가치를 감소시켜 놓고 연봉은 높아지고 그러니까 감원의 첫째 대상이 된다. 이렇게 된 원인은 최고경영진부터 임원 등 그 위에 있는 사람들이 역시 비슷한 사람들이기 때문에 그들에게 업무 보고하고 지시 받기 위해서는 상대가 같이 "무지한" 수준이어야 하기 때문이다. 깊이가 없으니 똑같은 얘기를 반복적으로 하기도 하고 답하기도 한다. 그러니 보고가 많아지게 된다. 필자가 누누이 얘기 하지만 보고가 많다는 것은 망가진 회사의 전형적인 증상 중의 하나이다.

기술자가 일하는 환경은 번잡스러운 회의가 없는 조용하고 집중할 수 있는 환경이어야 한다. 이 점을 또 오해하는 경우가 많은데 고립해서 일하는 것은 절대 아니다. 개발자들이 마음대로 개발하는 환경을 만들어 주었다고 자랑하는 한국 회사들도 있는데 대부분의 그런 회사는 관리위주의 회사보다 더 빨리 망한다. 공유와 협업을 조용하게 할 수 있는 기반 시스템이 마련되어 있지 않은 상태에서는 일인회사에서나 적합한 방식이기 때문이다.

한국회사의 두가지 문제인 관리위주 혹은 고립된 연구 스타일 모두 글로벌 개발자가 생겨나기에는 열악한 환경이다. 구글로 대변되는 글로벌 회사에서의 "문제해결(Problem Solving) 능력"이라는 것은 한국에서 생각하는 코딩 능력도 아니고, 프로그래밍 언어를 많이 아는 것도 아니고, 프로세스도 아니고, MVC와 같은 Framework를 많이 아는 것도 아니고, 많은 도구를 사용한 경험도 아니고, Agile과 같은 개발방법론을 아는 것도 아니다. 이런 잡다한 기법들이 이력서에 잔뜩 적혀 있는 것이 한국 개발자들의 통상적인 이력서인데 그런 것들은 놀랍게도 미국회사의 인터뷰시에 물어보지도 않는다. 그런 것들은 어차피 수시로 생겨나고 없어지고 하는 것이기 때문에 가치도 없고 신경도 쓰지 않는다. 진정으로 필요한 장기적이고 영속적인 문제해결 능력을 보는 것이다. 한국에서 그토록 맹신하는 Agile 방식도 이미 "Agile is dead" 라고 Agile을 창시한 사람들 조차도 문제점을 지적하면서 죽었다고 선언한다. 그런 것들은 필요에 따라 혹은 유행따라 어차피 순식간에 배워서 사용하다가 생명이 다하면 버리고 하는 것이 개발자의 인생이기 때문에 핵심 가치는 절대 아니다. "문제해결능력"에는 핵심은 아니지만 그런 것들을 순식간에 배워서 사용할 수 있는 능력이 당연히 포함되어 있다. 어떤 컴퓨터 과목에서는 한 학기에 전혀 모르는 여러가지 언어를 사용해서 숙제를 해야 하는 경우도 많다. 초보때나 기본적인 개념을 배우기 위해 프로그래밍 언어를 한 과목에서 배우지 그 다음에는 하루 이틀안에 배워서 교과 과정을 따라가야 한다. 필자도 Coursera에서 Machine Learning 코스를 들었을떄 Matlab을 처음 접했지만 몇시간 교육 후에 전혀 문제없이 교과 과정을 따라갔다. 물론 경험자보다는 약간 시간이 더 걸리겠지만 그 정도는 역량의 차별화가 되지 않는다. 삽들고 땅파는 능력이 중요한 것이 아닌 지식산업이기 때문이다.

그럼 그런 국지적인 기법이 실력의 차이가 아니라면 그렇게 글로벌 회사들이 주장하는 "문제해결능력"이란 무엇인가? 여기서 글로 답을 주기는 쉽지 않다. 불가지론이나 형이상학과 같이 차원이 다른 것을 이해하기가 어렵기 때문이다. 모든 사람들에게 쉽게 이해시킬 수 있었다면 한국 소프트웨어가 과거 20년을 이렇게까지 열악한 환경이 되도록 허송세월 하지는 않았을 것이다. 바로 베스트셀러였던 칩 히스의 "지식의 저주" 이다. 먼저 깨달은 사람이 깨닫지 못한 사람에게 설명하는 것은 너무 어렵다는 것이다. 예를 들어 5년전 만 해도 SVN이나 Git와 같은 소스코드관리시스템을 사용하지 않고도 개발하는데 전혀 문제가 없다고 주장하는 개발자들이 많았다. 지금은 개발자들이 거의 깨달았겠지만 소스코드관리시스템 없이 개발한다는 것은 불가능하다. 너무 어처구니 상황이지만 깨닫지 못한 본인들은 전혀 눈치를 못채고 있었을 뿐이다. 그런데 지금도 이슈만 바뀌었지 똑같은 상황이 계속되고 있다.

"문제해결 능력" 이라는 것은 해결해야 할 문제가 주어졌을 때 종합적으로 여러가지 관점에서 생각하고 또 생각해서 가장 좋고 빠른 방법을 찾아내서 개발하는 것이다. 즉 Top-down으로 생각하는 능력이 기본이다. 이것을 바로 분석역량이라고 한다. 분석을 잘하기 위해서는 수 많은 기법을 동원해서 할 수도 있고 전혀 기법이 없이 수행할 수도 있다. 기법을 몰라서 분석을 못하거나 문제해결을 못하겠다면 그건 Technician이다. 템플릿이나 형식과 같은 기법으로 생각하는 순간 분석은 물 건너 갔다. 시간만 낭비하고 그냥 잘 되어야 숙련공일 뿐이다.

문제해결 능력을 테스트하는데 프로그래밍 언어 테스트는 당연히 하지 않는다. 사실 프로그래밍은 개발에서 마지막 단계에 위치해 있는 시공 능력이다. 필자는 학교숙제를 비롯해 어떤 개발을 하더라도 코딩 시간을 20% 이상 할애하지 않으려고 한다. 가끔 전혀 모르는 언어를 사용해서 개발하거나 생소한 분야의 개발을 해야 할때는 50% 까지도 코딩 시간이 늘어날 수 있지만 기본적으로 대부분의 시간을 분석, 그 다음에 설계에 시간을 들인다. 이 방법이 가장 빠르고 품질 좋은 제품을 만들어 낼 뿐 아니라 1,000명의 개발자가 같이 개발을 해야 하는 경우에는 필수적이기 떄문이다. 한국에 Agile이 소개되었을 때 Top-Down에 대한 악영향을 걱정했었는데 역시 Top-Down 방식에 대한 반론을 위한 합리화에 많이 사용되고 결국은 한국 소프트웨어 역사에서 좋은 결과를 가져오지는 않았다. 그런 면에서 실리콘밸리에서는 대부분의 개발자들이 용어조차도 모르는 CMMI도 한국에 와서 좋은 점 보다는 나쁜 영향을 주었다. 1% 도 아니고 0.1% 의 회사에서나 필요한 것을 모든 회사에 적용할 수는 없다. 시금치가 건강에 좋다고 온 국민 식단에 시금치를 사용한 것과 다를 바 없다.

이런 문제해결 능력은 좋은 환경에서 지식을 공유하면서 점점 더 성장하게 되는데 소프트웨어에 관한한 "구경꾼" 수준에 불과한 Generalist 경영진들과 그런 회사에서 성장한 개발자들이 그런 능력을 가지기는 어렵다. 그래서 "1-2% 밖에 없다" 라는 평가가 나오는 것은 너무나 당연한데 필자가 보기에는 현재 상태에서는 1-2%도 발견하기 어렵다. 차라리 문제해결 능력은 관리와 기법위주의 대기업보다는 벤처기업에서 아직 물들지 않은 개발자 중에서 찾기가 더 쉽다. 스스로가 아키텍트이며 고급 개발자라는 것을 증명하려면 Coursera 같은 곳에서 자기가 관심있는 분야의 강좌를 다른 개발자보다 몇 배 빨리 끝낼 수 있어야 한다. 한국 회사에서 "팀장", "부서장" 등 "장'이라는 직함을 가지고 있는 사람들은 관리자이지 SW 개발자가 아니다.

소프트웨어 개발자의 최고 능력은 바로 분석능력이며 그게 바로 글로벌 회사에서 가장 중요한 가치인 '문제해결 능력" 이다. 경험하기 전에는 이해하기도 어렵고 교육으로 가르치기는 불가능한 형이상학의 영역이다. 삼성이 고맙게도 자체평가를 통해 공식적으로 이슈를 알게 했으니 이 기회에 깨닫고 실천하는 중요한 계기가 되기를 바란다.


댓글 1개:

Sungguk Lim :

참 좋은 글입니다. 한국 소프트웨어 업계의 문제점이 무엇인지, 왜 한국에서는 개발자가 나이들면 1순위로 짤리는지 쉽게 설명해주는 좋은 글이네요