2010년 3월 4일 목요일

개발자의 야근은 공짜?

소프트웨어 회사의 일들은 대부분 사람, 특히 개발자에 의존하는 일이 많습니다.
따라서 인건비는 가장 큰 비중을 차지하는 고정비입니다.
그런데 일단 뽑아 놓은 직원들의 야근은 공짜로 생각하는 경우가 많습니다.

게다가 몇몇 기업을 제외하고는 개발자들에게 "야근 수당"이나 "시간 외 근무 수당"은 딴나라 얘기입니다. 
제가 하고 싶은 얘기는 "개발자들이 야근을 하면 안된다", "시간 외 근무 수당을 받아야 한다"라는 얘기가 아닙니다.
개발자들은 동기부여만 되면 얼마든지 밤을 세가며 일하고 이는 금액으로 따지기 어렵습니다.

오늘 할 얘기는 경영자들의 절약 정신이 소프트웨어 개발팀의 효율을 떨어뜨린다는 얘기입니다. 
절대적인 잣대가 있는 것은 아니지만, 개발자들의 여분의 노동력을 공짜로 생각해서는 안됩니다. 회사마다 조금씩 다르기는 하지만, 합리적인 투자가 있어야 개발팀의 최대 능률을 이끌어 낼 수 있습니다. 

 야근

개발자들이 야근을 많이 할수록 많은 시간 일을 할 수 있으니 똑같은 월급을 주고 훨씬 효율이 높다고 생각할 수 있으나 외부 요인으로 인해서 발생하는 야근의 효율성은 그리 높지 않습니다. 
특히 장기적이고 일상화된 야간 압력은 개발자의 사기 및 충성도를 떨어뜨리며 제품의 품질을 떨어뜨리고 개발자들의 발전을 저해하며 창의적인 아이디어 발생을 가로막고 개발팀의 효율을 떨어뜨립니다. 
단기적으로 야근의 압박이 있을 수는 있겠지만, 장기화 되는 것은 문제가 있습니다.
단, 자발적이고 능동적이고 자유롭고 적절한 야근은 오히려 도움이 되죠

 조용한 사무실

경영자 입장에서는 작은 공간에 최대한 많은 개발자와 다른 부서 직원들을 몰아 넣고 서로 긴밀하게 커뮤니케이션을 하면서 일을 하기를 바랄 겁니다. 일단 이렇게 하면 임대료가 적게 나가고 영업의 이슈가 즉각적으로 개발팀에 전달이 잘 될 것으로 생각하곤 합니다. 하지만 이런 북적이고 시끄러운 환경에서 개발자는 최고의 능력을 발휘할 수 없습니다. 그러면 자연스럽게 몰입할 수 있는 밤시간을 선택해서 개발을 하곤 합니다. 
영업사원들의 시끄러운 전화를 옆에서 엿들어야 커뮤니케이션이 잘되는 것은 아닙니다. 커뮤니케이션은 적절한 시스템과 프로세스와 문화가 필요한 것입니다. 그리고 개발자에게는 최대한 집중해서 일할 수 있는 조용한 공간이 필요합니다.
공간이 조금 더 들어가고 임대료가 조금 더 나가더라도 개발자에게 조용한 공간을 제공할 수 있는 벽을 세우거나 사무실을 만들어 주는 것이 좋습니다.
개발자들을 따로 띄어 놓으면 딴짓 할까봐 걱정이 된다구요. 그러면 처음부터 잘못 뽑았네요. 

 널찍한 모니터와 빠른 시스템

개발자들에게 끊임 없이 좋은 시스템으로 교체해주는 일이 쉬운 일은 아닙니다. 하지만 너무 인색한 회사는 좋은 시스템이 개발 효율성과 연관이 있다는 것을 잘 알아차리지 못합니다. 작은 모니터는 동시에 여러 화면을 보지 못하며 디버깅도 불편하여 조금씩 작업 시간이 더 오래 걸립니다. 특히 빌드를 밥 먹듯이 하는 개발자들은 빌드 시간을 10~20% 줄이는 것만으로도 전체적으로 꽤 많은 시간을 절약해 줍니다. 이런데 투자를 하는 것보다 개발자들이 하루에 몇십분씩 더 일하면 된다고 생각하는 경영자들도 있습니다. 개발자들의 여분의 시간은 공짜가 아닙니다.

 허리를 보호해 주는 의자

안타까운 얘기지만 소프트웨어 개발자로 10년 정도 종사하면 허리 디스크에 시달리는 것은 예사가 되었습니다.
비싸지만 좋은 의자들은 개발자들이 더 오랜 시간 몸에 무리가 가지 않게 일할 수 있게 만듭니다.
직접적으로 개발 효율을 높일 수 있는 투자이지만, 대부분의 회사에서는 가장 싼 의자 구매만 승인이 납니다. 그래서 여러 개발자들은 자신의 돈을 들여서 좋은 의자를 구입하곤 합니다. 이런 투자는 회사의 몫입니다.

 아침식사와 간식

최근에 컨설팅을 했던 회사는 매일 아침 직원들에게 신선한 식빵을 매일 제공하더군요. 오전시간에 속이 비어 있으면 두뇌 회전이 느려지고, 점심시간을 기다리느라고 일에 집중이 잘 안됩니다. 
비용은 얼마 안되는 투자이지만, 투자대비 효과가 높은 것 중 하나입니다. 

 테스트 조직

개발자와는 별도로 테스터 조직을 만드는 것을 비용으로 생각하는 회사가 의뢰로 많습니다. 테스트의 비중을 별로 높게 생각하지 않고 개발자들이야 말로 자신들이 만든 소프트웨어를 잘 테스트할 수 있다고 생각합니다. 이런 식으로 개발을 하면 평생 구멍가게를 면치 못합니다.
테스트의 비중은 생각보다 큽니다. 테스트 팀을 활용하지 않고 개발자들에게 테스트를 맡기는 것은 상대적으로 비용이 많이 드는 개발자들을 낭비하는 것이며 실제로 개발자들은 테스트를 잘하지 못합니다. 또한 이는 테스트의 전문성도 무시하는 겁니다. 
회사마다 다르기는 하지만 적절한 인원의 테스트팀을 유지하는 것이 비용이 더 적게 들면서도 제품의 품질을 잘 유지할 수 있는 길입니다.

소프트웨어 회사에서 주변을 둘러보면 비용 효율성을 높일 수 있는 요소들이 많이 있습니다. 대부분은 사소한 비용을 절약하기 위해서 더 큰 대가를 치를 경우가 많습니다. 어디에는 투자를 해야 하고 무엇을 아껴야 하는지 적절히 판단할 수 있는 균형 잡힌 시각이 필요합니다.

2010년 3월 2일 화요일

삼성이 소프트웨어 분야에서도 최고가 되려면?

최근 삼성과 소프트웨어에 대한 글들을 몇 건 올리면서 정말로 다양한 의견을 접하게 되었습니다.
댓글뿐만 아니라 메일을 통해서도 의견을 들을 수 있었습니다. 

그 중에는 삼성 관계자 분들도 있었고, 삼성 내부 개발자, 삼성 협력사의 개발자들도 많이 있었습니다. 
현재 삼성으로 대표되는 대한민국 대기업들의 소프트웨어 개발 현황을 살펴보고 해결책을 찾아보려고 하는 블로그 글에 상당히 과민반응을 보이는 글들을 보면서 현 상황을 더욱 잘 짐작하게 해줍니다.
특히, 인상적인 글들은 삼성 내부 개발자와 삼성 협력사의 개발자의 글들이었습니다. 상당히 충격적인 증언들도 있었습니다. 댓글과 메일을 포함해서 삼성 내부 소프트웨어 조직의 심각성을 좀더 잘 알 수 있었습니다.
어쨌든 모든 댓글 및 메일을 보내주신 분들에게 감사 드립니다.

이제 결론을 내릴 때가 된 것 같습니다. 애초의 글들의 목적은 도무지 가망이 없어 보이는 대한민국의 소프트웨어 환경, 특히 삼성으로 대표되는 대기업들의 열악한 소프트웨어 개발 환경을 극복하고 소프트웨어 분야에서도 최고가 되는 방법을 찾아보려는 것이었습니다. 제 사견이긴 하지만, 그 동안의 소프트웨어 개발 및 컨설팅 경험을 근거로 나름대로 전문적이고 현실적인 방법을 찾아보려고 노력했습니다.

그럼 삼성이 소프트웨어 분야에서도 최고가 되는 방법의 시나리오를 보죠.

1. 좀더 실패가 필요합니다. 
어이 없는 결론이기는 하지만 몇번 더 실패를 통해서 소프트웨어의 중요성을 좀더 깨달아야 합니다.
현재 돌아가는 상황을 보면 소프트웨어 분야에 있어서 실패를 했고 실력은 부족하고 소프트웨어에 투자를 해야 한다는 간단한 현황을 진정으로 인식하고 있는 것으로 보이지 않습니다.
제가 삼성 및 대기업의 소프트웨어 개발 능력 부족을 지적하는 글을 작성한 이후에 놀랍게도 신문, 방송 모두 거의 똑같은 의견을 연일 쏟아 냈습니다. 이에 대응하여 삼성에서 발표한 극복 방안은 대부분 단기적이고 비전문가적인 접근들이었습니다. 소프트웨어 전문가라면 금방 문제가 있다는 것을 눈치챌 정도로 허술한 것들이었습니다. 
이는 현재상황을 진정으로 이해하고 있는 것이라고 볼 수 없습니다. 안타깝게도 몇번의 실패를 더 해야 진짜 문제가 심각하고 이대로는 안 된다는 것을 알 수 있을 것 같습니다. 삼성 내부에서도 아랫사람들이 아무리 얘기를 해봤자 시장에서 크게 실패하기 전에는 이를 깨닫기 어려울 것 같은 같습니다.
개인적인 바램은 최상위 경영층에서 가능하면 빨리 이를 인지해야 할 것 같습니다. 자칫하면 너무 늦을 수도 있습니다.

2. 소프트웨어 전문 경영자를 다시 중용해야 합니다.
기업의 경영자 인사는 다분히 정치적인 요소가 강합니다. 그러기 때문에 소프트웨어 전문 경영자가 중용되거나 오래 버티기가 힘들지만, 진짜 실패를 통해서 최고의 자리를 유지하기 위해서는 소프트웨어에 투자하는 수밖에 없다는 것을 깨닫고 나면 이를 이끌 소프트웨어 전문 경영자가 필요합니다. 
대기업의 소프트웨어 현황을 대변하는 말 중 하나가 "조삼모사"입니다.
"조三모四"아니 "조三모七"을 주장하는 소프트웨어 전문 경영자보다 "조四모一"을 얘기하는 경영자가 더 오래 살아남습니다. 여기서 저녁의 "일"은 얘기거리도 안됩니다. 소프트웨어 분야에서는 "조三모四현상이 더욱 극명하게 나타납니다.
애플은 아이폰의 플랫폼은 단 하나만을 사용하고 있고 구글도 안드로이드 하나를 사용하고 있습니다. 안드로이드는 핸드셋마다 변경될 수는 있지만 상당부분 호환성을 유지하고 있습니다.
그런데 국내의 한 굴지의 핸드폰 제조사는 지금까지 나온 6,000여개의 핸드셋에서 서로 다른 6,000개의 플랫폼을 사용하고 있습니다. 이를 공통으로 사용할 수 있는 플랫폼을 개발 할 수도 있었겠지만, 하나의 핸드셋만 놓고 보면 소스코드 복사해서 따로 만드는 것이 시간이 더 단축되기 때문에 "조三모七"이 아니고 "조四모一"을 선택한 것입니다. 
"一"이 아니고 마이너스 상황이 되고 소프트웨어가 지속적으로 발목을 잡기 전에 "소프트웨어 전문 경영자"가 이를 극복할 수 있도록 해야 할 것입니다. 또한 기존의 조직, 기존 사업부에서 결국 단기적인 실적 목표에 또 밀려 나지 않도록 새로운 조직이 필요할 것이며 정치논리에 밀리지 않도록 최상위 경영층의 지원이 필요합니다.

3. 외국의 전문 SW회사를 인수합니다.
삼성 내부의 개발조직을 가지고 어떻게 잘해보기에는 이미 늦은 듯 합니다. 물론 삼성 내부에도 뛰어난 개발자들이 많이 있지만, 조직으로 놓고 보면 얘기가 달라집니다. 이런 조직에서 오랫동안 길들여진 개발자들은 대부분 제대로 된 소프트웨어 개발 조직에서 제 역할을 하는 것을 기대하기는 힘듭니다. 
그렇다고 새로운 조직을 신입 개발자들을 뽑아서 만들어가기에는 시간이 이를 허용하지 않습니다. 
따라서 외국의 뛰어난 전문 SW회사를 인수해야 합니다. 이 또한 정치 논리가 아니고 진짜 소프트웨어 회사를 제대로 평가할 수 있는 전문가 그룹에서 삼성의 미래에 도움이 되는 소프트웨어 회사를 선택해서 제대로 평가하여 인수해야 합니다.
소프트웨어 전문 경영자는 인수한 SW회사와 삼성의 가교역할을 해야 합니다.

4. 인수한 SW회사는 삼성 내부의 개발조직과는 분리를 해야 합니다.
인수한 외국의 SW회사는 삼성 내부 개발자들과는 너무나 다른 개발문화를 가지고 있습니다. 이들을 자칫 그냥 섞어 놓다가는 둘 다 망칠 수 있습니다. 따라서 삼성 내부 개발자 중에서도 철저한 평가를 통해서만 인수한 SW회사로 이동이 가능할 것입니다. 아직 삼성의 개발문화에 많이 길들여지지 않았지만, 영어를 잘하고 똑똑한 개발자들은 인수한 SW회사와 섞어서 일하는 것이 가능할 것입니다. 
이 과정을 통해서 서서히 글로벌 소프트웨어 개발 문화를 익혀나가는 것이 필요합니다. 즉, 삼성에서 직접 활약할 선임 소프트웨어 개발자들을 양성해야 합니다.

5. 독자적인 성장을 할 수 있도록 보호를 해주고 지원해야 합니다.
인수한 소프트웨어 회사에도 "조삼모사"논리로 기존의 개발문화를 깨게 되면 평범한 소프트웨어 회사가 되어 버릴 수도 있습니다. 기존의 삼성 조직에 필요한 것들은 개발자 순환을 통해서 조금씩 익혀나가고 인수한 소프트웨어 회사에서는 독자적인 사업 영역을 계속 가져갈 수 있도록 보호를 해주고 지원해야 합니다. 이런 SW회사를 여러 개 인수하여 다양한 개발 문화를 접해야 합니다. 

6. 기존 조직의 반대와 방해로부터 보호를 받아야 합니다.
이러한 과정에서 내부 조직의 반대와 방해에 부딪힐 것은 뻔합니다. 이러한 방해는 아주 작은 소프트웨어 회사들에서도 존재하는데 삼성 같은 거대 기업은 말할 필요가 없습니다. 이를 보호해줄 수 있는 사람은 삼성내의 최상위 경영층 밖에 없을 겁니다. 이렇게 5년, 10년 투자가 이루어져야 소프트웨어 분야에서도 최고라는 소리를 조금씩 듣기 시작할 수 있을 겁니다.

고민 끝에 내린 시나리오는 이렇지만, 이 시나리오의 최대 키포인트는 바로 최고 경영층의 지원일 겁니다. 현재 상황을 얼마나 심각하게 깨닫고 기존의 경영자들은 이를 해결 할 수 없다는 것을 얼마나 빨리 깨닫느냐가 관건이라고 할 수 있습니다.

대한민국 소프트웨어 개발환경은 대기업, 중소기업 가리지 않고 열악하기 그지없습니다. 특히 삼성은 우리나라 경제의 가장 큰 버팀목이기도 하지만 수많은 중소 소프트웨어 회사의 밥줄이며 동시에 목줄을 죄고 있습니다. 삼성이 잘하면 모두 상생할 수도 있지만, 잘못하면 삼성은 약간의 타격이지만, 중소 소프트웨어 회사들은 와해되기 때문에 이것이 삼성이 소프트웨어 분야에서도 잘해야 하는 제가 생각하는 가장 큰 이유입니다. 

이는 비단 삼성만의 문제는 아닙니다. 제 바램은 이런 목소리를 통해서 소프트웨어 환경이 조금씩 나아지는 길로 가는 것입니다. 

2010년 2월 16일 화요일

소프트웨어 회사에 산업 스파이가 존재하는가?

최근에 블로그에 올린 글들의 댓글을 보면 소프트웨어를 잘 개발하는 것이 어떤 것인지 바라보는 시각이 무척 다릅니다. 필자는 주장하는 바가 있어서 소프트웨어 개발에 대한 생각을 꾸준히 공유하고자 합니다. 제 블로그의 미션은 어떻게 하면 소프트웨어를 효과적으로 잘~~ 개발하느냐를 공유하는 겁니다. 대상은 학생 개인부터 대기업에 이르기까지 모두 포함합니다. 하지만 이를 효과적으로 전달하는 것은 쉽지 않습니다. 또한 블로그 글 몇 건으로 생각을 바꾸게하는 것은 더욱더 어렵습니다. 그래서 다양한 측면에서 조명을 해봅니다. 

오늘은 소프트웨어가 하드웨어와 얼마나 다른지 하나의 예를 보여주겠습니다.

예나 지금이나 산업 스파이에 관련된 뉴스들은 종종 나옵니다.
수백억, 수천억을 투자한 기술을 1,2명이서 빼돌려서 해외에 팔아 넘기곤 합니다. 이런 일이 발생하면 회사에 치명적인 손실을 가져오게 합니다. 

위 기사만 봐도 얼마나 많은 기술 유출이 발생하고 있는지 알 수 있습니다. 

하지만 소프트웨어 분야에서 이런 일이 일어난 것을 본 적이 있나요? 소프트웨어 분야에서는 Open Source 정책을 통해서 심지어는 소스코드를 모두 공개하기도 합니다. 구글을 비롯해서 실리콘밸리의 대부분의 소프트웨어 회사들은 개발자가 입사를 하면 바로 회사의 거의 모든 소스코드를 바로 볼 수 있습니다. "개발자가 이 소스코드를 유출하면 어떻게 하나"하는 걱정은 하지 않습니다.

여기서 알 수 있는 것은 소프트웨어 회사의 핵심 기술이 무엇인가 하는 것입니다. 소프트웨어 회사의 핵심 기술을 설계 도면도 아니고 소스코드도 아니고 "사람과 개발 문화"입니다. 아무리 똑같은 소스코드를 가지고 있어도 그대로 따라 할 수가 없습니다. 당연히 그대로 팔아 먹을 수는 없겠죠? 또 유지보수는 어떻게 할까요? 소스코드를 열심히 연구해서 더 좋은 것을 만들려고 해도 만들 수가 없습니다. 

이런 소프트웨어 회사를 다니다가 본인에게 기회가 생기면 회사를 나와서 창업을 하기도 합니다. 이 때 소스코드 다 들고나가도 별로 신경을 쓰지 않습니다. 소스코드를 그대로 사용할 수도 없습니다. 개발자가 들고 나가는 것 중에서 가장 가치 있는 것은 "개발문화와 좋은 동료들"입니다. 이렇게 새로운 Start up이 탄생을 하고 성장하기도 하고 망하기도 하고 이런 시도가 계속 되면서 좋은 소프트웨어 토양을 이룹니다. 이 과정에서 기술과 문화가 계속 섞이면서 발전해나갑니다.

우리나라에서는 많은 소프트웨어 회사들은 소스코드를 신주단지 모시듯하고 심지어는 개발자들에게 공개하지 않고 소수의 개발자들만 볼 수 있게 하기도 합니다. (물론 우리나라에서는 꼭 이래야 하는 극소수의 예외는 있습니다.) 그 이유는 "사람과 개발 문화"가 변변치 않기 때문입니다. 개발자 한두명이 퇴사를 하여 경쟁업체를 만들거나 경쟁업체에 입사를 하면 치명적인 타격을 입기도 합니다. 참으로 척박한 환경입니다. 

소프트웨어 회사에서는 훔칠게 별로 없어야 합니다. 회사가 개발자들을 제대로 Retain하지 못해서 몽땅 나가버리는 경우라면 어쩔 수 없겠지만, 자연적인 개발자 순환을 거치면서도 소프트웨어 회사는 지속적인 기술 발전을 시킬 수 있어야 합니다. 소스코드를 모두 공개해도 좋은 개발팀을 유지하고 있으면 어느 누구도 우리보다 잘 할 수 없어야 합니다. 한두명 개발자가 퇴사를 해도 치명적인 타격을 입지 않아야 합니다. (아주 작은 회사는 예외) 소프트웨어 회사의 재산은 "좋은 개발자들과 개발 문화"여야 합니다. 

적당히 뽑은 공대생들 잔뜩 모아 놓고 프로그래밍 가르쳐서 회사에서 정해 놓은 프로세스대로 개발하고 지정한 문서 만들게 해서 좋은 개발팀이라고 착각하면 안됩니다. 세계 유수의 개발방법론 도입하고 CMMI Level5라고 해서 좋은 소프트웨어 개발 문화와 프로세스를 가지고 있다고 착각하면 안됩니다. 지금까지 나열한 것들은 오히려 방해요소가 될 수도 있습니다. 

물론 하드웨어도 소프트웨어와 공통점이 있겠죠. 좋은 인재가 필요하고 문화도 필요하겠죠. 하지만 저는 하드웨어 전문가는 아니니 이것은 언급하지 않겠습니다. 소프트웨어가 얼마나 다른지를 강조하고자 합니다. 이글을 자신의 회사에 적용해보고 우리 회사의 "개발문화"를 한번씩 가늠해보도록 합시다.

2010년 2월 11일 목요일

애플은 한국어와 한글을 구분하지 못한다?

아이폰을 사용하기 시작한지 오늘로 꼭 2달이 되었습니다. 
2달동안 아이폰을 사용하는 재미, 아이폰 앱 개발 관련 공부하는 재미에 빠져있었습니다. 그런데, 아이폰 다국어 설정에서 이상한 것을 발견했습니다.

언어어 설정에 떡하니 "한글"이라고 나와 있는 겁니다. 대부분의 사람들은 그냥 지나쳤겠지만, 저야 소프트웨어 전문가이고 Localization의 중요성을 알고 있는터라서 눈에 확 거슬리더군요. 
아시는 분들도 많겠지만, 여기에는 "한글"이 아니고 "한국어"라고 나와야 맞습니다.



그럼 "한글"과 "한국어"가 다른지 알아보겠습니다. 

"한국어"는 몇 천년전부터 조상 대대로 사용해 오던 우리 말입니다. 
"한글"은 1443년 세종대왕께서 만드신 자랑스러운 우리 고유의 문자체계입니다. 한글이라는 이름도 1910년 주시경선생이 붙인 것이고요.

"영어", "English"는 말이고 "알파벳"은 문자체계죠.
"일본어"는 말이고 "히라가나"는 문자체계죠.

영어로 얘기해도 엄연히 다름니다. 
"한국어"는 "Korean" 이지만 "한글"은 "Korean Alphabet" 또는 "Hangul"입니다.

물론 한글은 자랑스러운 우리의 글자체계입니다. 전세계적으로 고유의 문자체계를 가지고 있는 나라는 몇 안되고, 알파벳이나 한자의 영향을 거의 받지 않고 완전히 독립적인 문제체계를 가진 나라는 그렇게 많지는 않습니다.. 게다가 한글은 매우 과학적이고 배우기 쉬워서 "언어"는 있는데 "표기방법"을 가지고 있지 않는 나라들에게 "한글"을 보급하기 위한 활동도 진행중입니다. 세종대왕께서도 한글(훈민정음)은 슬기로운 사람은 아침 나절이 되기 전에 익힐 수 있고, 어리석은 사람도 열흘 안에 배울 수 있다고 했죠. 

한글이 그렇게 우수하다고 하더라도 말과 글을 혼동해서 쓰는 것은 안되겠죠. 일반인들은 흔히 한글과 한국어를 혼동해서 얘기를 하고 별 문제될 것도 없지만, 수천만명이 쓰는 디바이스에 잘못된 오류가 있는 것은 고쳐야 할 것 같습니다.

아이폰의 Internationalization(i18n) Localization(L10n)을 진행한 사람들이 전문가들일텐데, 단순 실수라고 믿고 싶습니다.

i18n과 L10n 얘기가 나온차에 조만간에 이에 관련된 글을 올려보도록 하겠습니다. 잠깐 미리 조금 얘기를 드리자면 흔히들 소프트웨어를 개발해서 해외에 진출하기 위해서 영어로 번역을 한다, 일본어, 중국어를 지원한다라고 하지만, 단순히 메시지 좀 번역하는 것이 Localization이 아닙니다. 또한 대충 해 놓았을 경우 발생하는 유지보수 비용은 만만치가 않습니다. 그래서 Localization은 스펙작성시부터 고려가 되며, 아키텍쳐에 반영이 되며 단순히 메시지 뿐만 아니라 많은 부분을 고려해야 하고, 개발 및 유지보수를 위한 프로세스와 툴들이 필요합니다. 자세한 내용은 다음에 올리도록 하겠습니다.

2010년 2월 9일 화요일

스마트폰 앱스토어가 진짜 대박이 아닌 이유

요즘 스마트폰이 IT 이슈의 정점에 있어서 스마트폰 관련 글을 계속 올리게 됩니다.
개발자의 한사람으로서 스마트폰의 급속한 확대는 좋은 징조임이 분명합니다. 하지만 종종 스마트폰 어플리케이션을 만들어서 앱스토어에 올리면 쉽게 대박을 맞을 수 있을 것 같은 기사들이 눈에 띕니다.


물론 거품을 경고하는 기사들이 많은 것은 사실이지만 좋은 것만 보인다고 대박 기사가 더 눈에 들어오는 것은 사실입니다. 개발자들은 "실패담은 내 이야기는 아닐거야"라고 자신에게는 관대한 판단을 내기는 것이 일반적입니다.

이런 종류의 기사들을 읽어보면 전문가들이 말을 인용하는 칼럼형식의 기사는 좀 나은데 기자들이 직접 작성하는 누구나 혼자서 쉽게 소프트웨어를 개발해서 성공할 수 있다는 식의 기사가 많습니다. 그래서 현 상황을 좀 냉정하게 바라보고자 합니다.

긍정적인 측면

확실히 앱스토어가 개발자들에게는 기회의 땅입니다. 어플리케이션을 만들기만 하면 바로 전세계 소비자와 바로 만날 수 있는 기회를 제공했습니다. 마케팅을 얼마나 잘하느냐는 다른 이슈이지만, 어마어마한 마케팅 비용을 들이지 않고도 일단 소비자와 접할 수 있다는 것은 엄청난 기회입니다. 정말 좋은 소프트웨어가 마케팅 비용이 없어서 사라지는 것을 막을 수 있습니다.

또한 스마트폰 앱 시장은 계속 커지고 있고 잠재 고객은 점점 늘어가고 있습니다. 
That's it.

부정적인 측명

기회는 균등합니다. 나에게 기회인 것은 전세계 모든 개발자들에게 동일한 기회입니다. 초창기를 제외하고는 소비자와 쉽게 자신의 어플리케이션을 보여줄 수 있는 것이 그리 매력적인 조건이 아닐 겁니다. 정말 좋은 소프트웨어가 아니면 이 장점이 큰 장점이 아닙니다. 또한 스마트폰 앱 시장이 점점 커지면서 메이저 소프트웨어 업체들이 뛰어들 준비를 하고 있습니다. 기존의 시장과 별반 다를바 없는 치열한 전투장이 될 겁니다.

시장은 그렇다 치고, 개발자 입장에서 바라보도록 하죠.

스마트폰이라고 해서 소프트웨어를 개발하기 더 쉬워진 것은 아닙니다. 잘 만들어진 Framework를 보면 개발이 더 쉬운 것처럼 착시현상을 일으키기도 하지만, 이것이 소프트웨어 개발 전체 프로세스에 미치는 영향은 5%도 되지 않습니다. OOP 컨셉이 없는 개발자들은 오히려 뒤죽박죽을 만들어 버리기 일쑤입니다. SDK를 이용한 코딩보다도 스펙을 제대로 정하고 설계를 하고 테스트를 하는게 비중이 더 높습니다. 이는 기존의 다른 소프트웨어를 개발하는 것과 별단 다르지 않습니다. 즉, 기존에 소프트웨어를 잘 개발하던 개발자나 회사가 이또한 잘 할겁니다.

스마트폰 앱이라고 해서 한번 만들고 끝나는 것이 아닙니다. 일반적으로 소프트웨어는 유지보수 비용이 개발비용의 2~5배 정도 들어간다고 합니다. 그래서 한번 만들어놓은 앱을 꾸준히 유지보수를 해야 하는데, 개인이 이를 감당하기에는 어려움이 있을 수 밖에 없습니다. 진짜 전업으로 매달려야 합니다. 또한 버그 관리, 소스관리, 스펙 관리가 그렇게 쉽지 않습니다. 기존의 소프트웨어 회사들도 크나 작으나 이들을 잘 해내지 못하는 것이 현실입니다. 그렇다고 혼자 개발을 한다고 이 이슈가 사라지지 않습니다. 진짜 혼자 다 해야 합니다.

또, 어쩌다 꽤 인기있는 앱을 만들어서 중박정도를 했다고 해도 꾸준히 매출을 유지하기 위해서 업그레이드와 새로운 제품을 계속 만들어내야 합니다. 앱 개발이 전업이 되었다는 얘기는 꾸준히 수익을 창출해야 한다는 얘기입니다. 회사라면 크나 작으나 나름 각 분야의 전문가들이 힘을 합쳐서 일하기 때문에 진짜 자신이 잘하는 분야에 집중할 수 있어서 꾸준히 발전해 나가는 것이 혼자 북치고 장구치고 하는 것보다는 유리합니다. 자칫하면 수주대토(守株待兎)가 될 수 있습니다.

소프트웨어 개발이라는 것의 대부분은 팀으로 일을 했을 때 더 잘 할 수 있는 것들인데, 혼자서 한다는 것은 한계에 부딪히게 됩니다.  아이디어의 한계, 기술의 한계가 그겁니다. 물론 혼자 일하는 것을 좋아하는 개발자들중에서는 팀웍을 이뤄서 제대로 일하는 방법을 모르기 때문인 경우도 있습니다. 어떠한 경우라도 혼자서 1인회사를 해나가는 것은 쉽지 않은 결정입니다.

이미 소프트웨어 개발에 상당한 공력을 가지고 있는 개발자 몇명을 제외하고는 아무리 좋은 아이디어로 좋은 앱을 개발했다고 하더라도 혼자 개발하는 것은 스스로의 성장에도 지장을 줄 수 있습니다. 물론 이런 시도는 도전의식과 비즈니스 경험을 쌓을 수 있어도 소프트웨어 개발자로서의 경험은 상대적으로 놓치게 됩니다. 자칫 평생 혼자 개발해야 편한 개발자가 될 수도 있습니다. 실패에서 얻는 것도 있지만 잃는 것도 크다는 것을 명심해야 합니다.

소프트웨어 개발자로서 사회에 첫발을 디뎠다면 아무리 대학때 소프트웨어를 좀 개발해 봤어도 조직에서 팀을 이뤄서 개발하는 방법과 그 문화를 어느정도 익히는 것이 필요합니다. 물론 좋은 환경의 소프트웨어 회사라야 하겠죠. 그리고 나서도 확신이 선다면 시도해볼 수 있는 도전이라고 생각은 합니다. 하지만 결코 기존의 소프트웨어 환경에 비하여 성공확률이 더 높아졌다고 생각해서는 안됩니다. 이또한 노력하는 사람에게 더 많은 기회를 제공할 겁니다. 자신의 성공확률에서 바뀐 것은 아무것도 없습니다.

이 상황을 너무 부풀려서도 너무 축소해서도 안됩니다. 확실히 기회가 생긴 것은 맞습니다. 하지만 냉철한 가슴으로 생각하고 도전해야 합니다. 또, 이를 이용해서 부추기는 선정적인 기사는 좀 줄어야 하겠습니다.

2010년 2월 8일 월요일

삼성이 앞으로도 소프트웨어를 잘 만들 수 없는 이유

저는 이미 삼성의 소프트웨어에 대한 글을 몇개 올린 적이 있습니다.

이글의 제목은 좀 과격해보이기는 하지만 현재 문제가 뭔지 파악해보고 해결책을 생각해보고자 이와 같은 제목을 붙였습니다.
사실  이글들은 삼성 뿐만 아니라 국내 대기업 대부분에 해당하는 글이며, 삼성이 대표기업이고 현재 스마트폰 열풍의 한 가운데 있기 때문에 대표주자로서 언급이 되고 있는 겁니다. 다른 대기업들이나 중견기업들도 별반 다를게 없다는 얘기죠. 저는 이에 대한 상당한 근거들을 가지고 있습니다. 물론 직접적인 데이터는 컨설팅 비밀이라서 공개할 수 없습니다. 하지만 통계를 근거로 이 이야기를 공유하고자 합니다.

이 글들에 대해서 문제점만 지적하지 말고 해결책도 제시해달라는 의견들이 있어서 얘기를 조금 더 진전시켜보고자 합니다. 앞으로 쓸 글들의 일부는 삼성과 여러 대기업 뿐만 아니라 중소 소프트웨어 회사들에게도 해당이 될 것입니다.

저는 소프트웨어 개발자 한사람 또 소프트웨어 공학 컨설턴트로서 삼성을 비롯해서 2,3명 규모의 모든 소프트웨어 회사들까지 모두 정말 잘되기를 바라고 있으며 그 안에서 소프트웨어를 개발하는 개발자들이 
  • 즐겁게 일하고
  • 육체/정신 건강을 지킬 수 있는 적절한 시간동안 일하고
  • 주위에서도 좋은 직업으로 바라봐주고
  • 좋은 비전을 가지고 있으며
  • 연봉도 다른 직종에 비해서 상대적으로 많이 받기를 바랍니다. 
  • (꿈같은 얘기가 아니고 다른 나라에서는 벌어지고 있는 현상입니다.)
해결책을 제시하기 전에 오늘은 먼저 왜 기업이 바뀌기가 어려운지 먼저 얘기를 하려고 합니다. 그래야 해결책이 눈이 보일 겁니다. 

축구를 잘하기 위해서 기초체력을 기르고 기초 기술과 팀웍, 전술을 익히면 된다고 하고 이게 모든 해결 방법이면 얼마나 좋겠습니다. 축구를 잘하는 원리는 간단하겠지만 지금 문제가 있다면 해결책은 그렇게 간단하지 않습니다. 예를 들어 우리나라가 축구를 잘하기 위해서 축구협회가 문제면 이를 해결해야 할 겁니다.

삼성이라고 소프트웨어의 중요성을 하나도 모르겠습니까? 잘 알겁니다. 특히 밑으로 내려올수록 더 잘 알것이고 경영진들은 그걸 피부로 느낄만큼 소프트웨어를 잘 알지도 못하죠. 그런데 몇십년을 소프트웨어에 투자를 했는데도 지금 좋은 소리를 듣지 못하고 있고 제 생각에 앞으로도 크게 나아질 것 같지 않은 이유를 분석해보겠습니다.

먼저 위쪽을 보겠습니다.

기업은 클수록 정치, 파벌에 따라서 조직이 움직입니다. 특히 고위층은 실력만 가지고 되는 것은 아니고 실적과 함께 정치도 중요하죠. 하지만 제가 알기로는 국내에는 소프트웨어 전문가가 부족하거니와 그나마 있는 소프트웨어 전문가들도 대기업내에서 그렇게 확실한 파워를 가지고 있지 못합니다. 또한 기업은 성과가 최고의 덕목인데, 소프트웨어 전문가들은 장기적인 뷰로 사사건건 문제를 지적하고 장기투자, 문화 등을 논하기 때문에 기존 하드웨어 파벌에 비해서 이쁨을 받기는 어렵습니다. 항상 위기라고 주장하는 상황에서 툭하면 밀려나기 일쑤입니다.
결국 소프트웨어를 이해하지 못하는 경영자가 아무리 소프트웨어 투자를 한다고 해도 소프트웨어 개발 역량은 별반 나아지지 않습니다.
최근의 스마트폰 사태에서도 힘을 얻어야 할 소프트웨어 전문가들이 오히려 힘을 얻지 못하는 상황이 벌어지는 것이 어찌보면 당연한 수순이라고 볼 수 있습니다. 누가 이 스마트폰 사태를 순식간에 해결할 수 있느냐라는 질문에 당장 밀어 붙여서 올해안에 스마트폰 시장을 점령할 수 있다고 말하는 하드웨어파에게 솔직함이 죄인 소프트웨어 전문가들은 밀려날 수밖에 없을 것 같습니다. 알고 거짓말은 못하죠. 하지만 모르면 용감하다고... (이건 제가 생각하는 현재 상황의 시나리오입니다.)
기업들은 크나 작으나 주로 이런 식의 단기적인 관점으로 기업의 전략이 결정되고 있고, 이렇기 때문에 우리나라에서는 대부분 CTO(Chief technical officer)가 제대로 힘을 발휘 못합니다. 적어도 소프트웨어가 중요한 회사라면 CTO가 힘이 있고 제역할을 할 수 있어야 합니다. 우리나라에는 소프트웨어 회사에서 CTO역할을 할 수 있는 인재도 부족하거나와 CTO와 연구소장을 혼동하는 사람들도 많은 것이 안타깝습니다.

장기적인 관점에서 용단을 하고 힘을 줄수 있는 사람은 한사람 밖에 없어보이네요.

개발자들도 현재 환경에 너무 익숙해져 버려서 현재 열악한 상황에서 고생을 하고 있지만 이를 바꾸겠다고 하면 저항을 하게 됩니다. 
이유야 여러가지가 있습니다. 
옛날에도 이런 저런 시도를 많이 했는데 일만 많아지고 바뀌는 것이 없다고 하기도 하고 뭔가 바뀌면 기존의 방식에서 나만이 가지고 있던 파워를 잃게 될까봐 걱정을 하기도 합니니다. 또 뭔가 바뀌는 것이 무조건 싫기도 합니다.
안타까운 얘기지만 현재 개발자들을 제대로 바꾸기에는 너무 멀리 왔습니다. 정말 오랜 시간이 걸릴 겁니다. 그전에 여러 저항에 부딪혀서 포기할 것 같습니다. 
소프트웨어 개발은 문화인데, 너무 큰 조직이 기존의 방식에 너무 익숙해져 있어서 바꾸기에는 어려워 보입니다. 
"길들여져 버렸어"라고 밖에 할말이 없습니다.

그동안의 제 소프트웨어 지식과 컨설팅 경험으로 이쪽에서 살펴보고 저쪽에서 분석을 해봐도 획기적인 시도를 하기 전에는 삼성이 앞으로도 소프트웨어를 잘 만들 방법이 잘 안보입니다. 조금더 연구해보고 다음에 진짜 해결책에 대한 글을 써보도록 하죠.

비단 이 이야기가 삼성뿐만의 이야기 일까요? 우리나라 거의 대부분의 소프트웨어 회사의 이야기입니다. 자신의 회사는 전혀 그렇지 않다는 분은 제게 알려주세요. 정말 좋은 소수이 소프트웨어 회사 중 하나이거나 문제를 전혀 인식조차 못하는 회사일 겁니다. 제가 문제가 뭔지 철저히 분석해서 알려드리고 앞으로 어떤 문제들이 벌어지는지 예언도 해드리겠습니다.

이 글을 보고 삼성의 최고 경영진에서 소프트웨어파에 힘을 실어주는 일이 생기기는 어렵겠지만 바뀌면 좋겠네요. 대한민국 경제에 너무 큰 영향을 주고 있는 삼성이기에 저는 항상 잘되기를 기원하고 있습니다.

2010년 1월 23일 토요일

삼성이 바다를 출시해서는 안되는 이유

일전에 삼성이 왜 소프트웨어를 잘 개발하지 못하는지에 대한 글을 쓴적이 있습니다.

2010/01/05 - [소프트웨어이야기] - 삼성은 왜 소프트웨어를 잘 만들지 못할까?

개인적인 생각이지만 바다의 정식 출시가 임박할수록 점점 걱정스러워지고 있습니다.
일단 이글은 삼성을 비난하려고 작성한 글이 아닙니다. 삼성이 잘되어야 하는 이유를 잘 알고 있는 한 사람으로서 현재 상황에 대한 소프트웨어 공학적인 우려를 말하고자 하는 사견임을 밝혀둡니다.

일단 삼성이 왜 바다를 출시하고 싶어 했는지 그 마음은 충분히 이해를 합니다. 기존에 피처폰에서 삼성은 눈부신 성과를 거두었고, 10여년전만해도 경외의 대상이던 여러 Global 회사를 추월하고 이제 Nokia만 앞에 보이는 상황입니다. 이 과정에서 너무 큰 자신감을 가지게 된게 아닌가 생각되는 군요.

삼성의 대단한 저력과 성과는 인정합니다. 하지만 삼성이 이렇게 핸드폰 분야에서 성공한 이유를 제대로 알아야 합니다. 하드웨어 제조 능력과 탁월한 마케팅 능력이 있었던 것이지 소프트웨어를 잘 만들어서는 절대로 아니라고 봅니다. 삼성에게 자신들의 시장을 내준 Global 회사들이 소프트웨어를 제대로 만드는 능력이 삼성보다 부족해서 삼성에게 진 것이 아닐겁니다. 그런데 이런 결과가 삼성에게 소프트웨어에 대한 자신감까지 불어 넣어 준 것이 아닌가 생각이 듭니다.

기존 피처폰에서는 소프트웨어 개발 능력 부족이 사업을 성공하는데 결정적인 요소로 작용하지 않았다고 봅니다. 소프트웨어 개발력의 부족함은 인력과 자금으로 보충하고 소프트웨어 개발자들의 헌신적인 야근으로 어떤 글로벌 회사들도 불가능했던 초단기간에 새로운 모델의 핸드폰을 만들어서 출시를 해왔습니다. 이러다보니 경영층에서는 개발팀의 소프트웨어 개발 능력을 대단히 높게 과대평가 했을지도 모릅니다. 어떤 회사보다 빨리 개발을 해내기 때문에 소프트웨어를 잘 이해하지 못하는 경영자들은 착각하기 충분하다고 봅니다. 하지만 이러한 무리한 개발이 계속 되면서 소프트웨어를 잘 개발할 수 있는 역량을 닦을 기회조차 박탈당했기 때문에 현재 삼성이 가지고 있는 소프트웨어 개발 능력은 삼성의 위상에 걸맞지 않에 뒤처져 있다고 생각합니다.

삼성의 소프트웨어 개발능력은 삼성이 제쳤던 핸드폰 회사들이나 애플, 구글과는 비교도 할 수 없을만큼 떨어진다고 봅니다. 부정하고 싶겠지만 긍정적인 증거는 별로 없는 것이 현실입니다. 그동안 소프트웨어에 얼마나 투자를 해왔을까요? 소프트웨어를 잘 아는 경영자를 등용하고 믿어주고 밀어줬나요? 제가 알기로는 그렇지 않지 않습니다.

스마트폰은 기존에 삼성이 크게 성공시킨 피처폰과는 다릅니다. 피처폰 처럼 몇날 며칠 개발자들이 코피 쏟아가면서 개발하면 되는게 아닙니다. 게다가 스마트폰 OS(Platform)의 개발은 몇차원 더 높은 개발입니다. 정말 소프트웨어를 잘 만드는 회사가 아니면 제대로 만들수가 없습니다. 이런 종류의 소프트웨어를 개발할 때 가장 깊게 고려해야 하는 요소는 눈에 보이는 기능이 아닙니다. 수많은 비기능 요소가 훨씬 중요합니다. 앞으로 바다를 통해서 전세계 수많은 개발자들이 소프트웨어를 개발을 해야 합니다. 이때 발생하는 모든 요소를 고려해야 합니다. 전세계 개발자들이 삼성 개발자들처럼 밤새며 개발하게 만들 건가요? 하나의 Application을 만드는 것과는 차원이 다른 얘기입니다. 물론 고려야 했겠지만, 현재 삼성의 위상에 걸맛게 모든 사람들이 기대하는 바를 충족실킬 만큼 소프트웨어 개발 능력은 갖추고 있지 않기 때문에 출시후 겪게 수많은 문제들이 눈에 보이는 듯합니다.

능력의 한계를 알아야 합니다. 능력을 훨씬 뛰어넘는 무모한 도전은 대단한 도약 아니면 엄청난 실패를 가져옵니다. 삼성은 그동안 이러한 한계를 많이 뛰어 넘어왔습니다. 하지만 소프트웨어 분야에 있어서 만은 엄청난 실패가 기다리고 있는 듯합니다. 바다의 도전은 기존과는 다른 도전입니다. 소프트웨어에 있어서 능력이 안되는 것은 안되는 겁니다. 진정한 소프트웨어 개발역량을 갖추려면 소프트웨어 분야에 제대로 투자해서 10년은 걸릴 겁니다. 그래도 조직내의 복잡한 역학관계 때문에 어려울 겁니다.

사실 저는 바다는 출시를 포기하는 것이 삼성에 더 이익이라고 생각합니다. 일단 출시를 해 놓으면 되돌릴 수가 없습니다. 이제부터 돈은 돈대로 들어가고 욕먹을 시간일 될 것입니다. 유지보수는 끝없이 들어갈겁니다. 아기는 한번 낳으면 다시 엄마 뱃속으로 들어가라고 할 수 없습니다. 그리고 바다의 유지보수는 삼성만의 이슈가 아닙니다. 이를 기반으로 소프트웨어를 개발한 전세계 개발자들과 관련됩니다. 삐끗하면 핸드폰 하나 망치는게 아닙니다. 그 파급효과가 얼마나 큰지 지금 상상할 수 있어야 합니다.

정말 바다가 순항을 하면서 칭송을 받는 상황이 발생한다면 삼성은 나 뿐만아니라 어느 누구도 모르는 끝내주는 소프트웨어 개발팀을 수백명 양성을 해왔고 이들이 바다를 개발했다는 것인데 이런 기적같은 일이 벌어지겠습니까? 지금도 바다가 큰 성공을 거두기를 기대하고는 있지만, 그리 희망적으로 생각되지 않습니다.

차라리 안드로이드폰을 더 잘 만들기 위해 투자하는 것이 더 좋은 선택이라고 생각합니다. 사실 이것도 쉽지는 않습니다. 기존 피처폰 만드는 마인드로 또 밤세워가며 Copy & paste가 난무하는 개발을 한다면 별로 나아질 것이 없습니다. 그렇지만 바다에 투자할 막대한 노력을 현실성있는 안드로이드폰 개발에 투자를 하는 것이 좋을 겁니다. 

이미 삼성은 스마트폰 분야에서 상대적으로 뒤쳐지기 시작했다고 봅니다. 만약에 바다가 크게 실패한다면 그동안 이룩해 놓은 휴대폰 분야에서 삼성의 브랜드에 크게 타격을 줄지도 모릅니다. 

삼성은 그동안 수차례 엄청난 변화를 통해서 세계 제1의 IT회사가 되었습니다. 앞으로 한단계 더 점프를 하려면 소프트웨어 분야를 손놓고는 어렵습니다. 어렵더라도 내부에서 여러 방해에 부딛히더라도 소프트웨어에 투자를 해야 합니다. 비싼 툴 사주고 복잡한 프로세스 만드는 것이 소프트웨어에 대한 투자가 아닙니다. 애플, 구글 또는 실리콘밸리의 작은 소프트웨어 회사들이 어떻게 소프트웨어를 개발하는지 보십시오. 기존 조직에서 안된다면 소프트웨어 분야는 새로운 조직에서 새로운 경영자와 때묻지 않은 새로운 개발자들로 새로 시작해서 Global 경쟁력을 갖춘 소프트웨어 조직으로 키우는 것도 한 방법일 겁니다. 
정말 소프트웨어 분야는 잘 될 가능성이 없다면 그냥 하드웨어 분야에서 더 큰 성공을 거두는 것이 좋겠네요. 지금의 삼성처럼요. 

이미 "바다"의 출시가 기정 사실이라면 "바다"의 "순항"을 간절히 기원합니다.