검색어 개발조직에 대한 글을 관련성을 기준으로 정렬하여 표시합니다. 날짜순 정렬 모든 글 표시
검색어 개발조직에 대한 글을 관련성을 기준으로 정렬하여 표시합니다. 날짜순 정렬 모든 글 표시

2009년 2월 10일 화요일

우리는 당장 써먹을 수 있는 경력 개발자 위주로 뽑아요.

언제부터인가 소프트웨어 개발자를 경력 개발자 위주로 채용하는 것이 일반화 된 것 같습니다.
물론 다른 업계도 마찬가지이지만, 당장 써먹을 수 있는 경력직을 선호하는 것은 사실입니다.

그렇게 경력직 위주로 개발자를 채용하다가 개발팀의 조직 구조가 효율적이지 못하게 변하는 경우를 종종 보게 됩니다. 소규모 개발조직이라면 어떠한 구조라도 별 상관이 없다면 일정 규모 이상의 개발조직은 각 직급별 적정한 분포를 가지는 것이 효율적입니다. 

그럼, 경력 개발자 위주로 채용을 하다가 종종 벌어지는 조직 구조의 변화의 예를 하나 들어 보겠습니다.


진화 단계설명
탄두형회사의 초기에 일반적인 조직 구조 형태입니다.
항아리형신입 개발자보다 경력 개발자를 위주로 채용을 하면서 자연스럽게 아래 부분이 줄어들게 됩니다. 또 아래 계층이 충성도가 부족하여 더 많이 퇴사를 하게 됩니다.
스페이드형항아리형이 점점 심해지면 뒤늦게 개발 조직이 비효율적으로 변한 것을 깨닫고, 신입 직원을 다시 뽑기 시작합니다. 이러면서 조직은 스페이드형으로 변합니다.
오뚜기형다시 정상적인 조직 구조로 바꾸려고 해도 비어있는 중간 계층은 쉽게 메꾸기가 어렵습니다. 즉, 회사를 이끌어가는 초창기 멤버와 고참들과 뽑은지 얼마 안되는 직원들이 개발조직의 주를 이루게 됩니다. 그래서 정상적인 분업이 이루어지지 않습니다. 일은 고참들에게 몰리고, 하층 개발자들은 기대에 못미치는 성과를 내고 있습니다.

여기서 예로든 하부 조직이나 중간 조직이 빈약한 구조가 개발에 전혀 지장을 주고 있지 않다면 특수한 개발 조직이거나 각개격파형 개발조직 구조일 것입니다. 또는 주먹구구이거나요.
대부분의 조직은 각 기능별 계층별로 업무가 나눠지며, 아래 계층의 개발자가 인원수로는 더 많이 필요하게 됩니다. 하지만 그렇지 못한 경우 그러한 Value가 낮은 일까지 고참들이 수행을 해야 하고, 이 과정에서 자연스럽게 이루어지는 교육 및 기술 전달이 이루어지지 않는 악순환이 벌어집니다. 이 과정에서 개발 팀의 생산성은 낮아지게 되고, 미래 전만도 어두워집니다.

그럼에도 불구하고 경력개발자만을 위주로 채용하는 이유는 여러가지가 있습니다.
  • 단기적인 이익을 내려는 경영층의 조급증
  • 신입 개발자를 채용해도 효과적으로 교육시킬 수 있는 교육 시스템 부재
  • 3,4년 미래도 내다보지 못하는 HR Plan
  • 주먹구구 식으로 개발을 하고 있기 때문에 체계는 필요 없고, 무조건 경험 많고 능력 있는 개발자만 필요한 경우
이미 회사를 위해서 오랫동안 헌신한 개발자들이 개발은 잘하고 업무관련 지식은 뛰어난데, 소프트웨어 전문가로서는 턱없이 모자라는 경우가 흔합니다. 오랫동안 각개격파식으로 혼자서 북치고 장구치고 하는 식으로 개발들을 많이 해왔기 때문에 이런 일들이 일어납니다. 이경우 이러한 고참 개발자들이 다른 회사로 이직을 할 경우 그 가치가 현저히 떨어지는 경우가 많습니다. 전문가로서의 역량은 부족하기 때문입니다. 자칫하면 이러한 공신들이 희생될 수도 있고, 골치덩어리가 될 수도 있습니다.

그러면 어떻게 해야 할까요? 

적어도 개발자를 채용할 때는 오늘 당장 필요해서 뽑는다는 생각만 가지고 채용하는 것은 위험합니다. 적어도 몇 년을 내다보는 채용 계획이 있어야 합니다. 그리고 계획에 따라서 항상 채용을 위한 노력을 기울여야 합니다. 그리고 이미 채용한 개발자와 미래에 채용할 개발자들의 경력 개발 계획을 갖추고 있어야 합니다. 이것만 따로 돌아가는 것이 아니고 회사의 개발 프로세스와 조직 등 모든 것이 맞물려 돌아가야 개발자도 성장을 하면서 자연스럽게 생산성이 높은 조직을 유지할 수 있게 됩니다. 사람에서 사람에게로 고참에서 신참에게로 기술과 지식이 전달되고 조직이 계속 성장하려면 기반시스템, 개발문화가 필수적입니다. 전혀 체계가 없는 개발조직이라면 지금이라도 하나씩 갖춰나가는 수 밖에는 없습니다

이것을 해결할 끝내주게 좋은 방법은 없습니다. 가장 효율적인 것부터 찾아서 하나씩 바꿔나가는 겁니다.

2008년 12월 23일 화요일

사업부가 소프트웨어 조직에 미치는 영향

주변 소프트웨어 회사에서 사업부 형태의 조직을 접하는 것은 어려운 일이 아닙니다.
사업부라는 조직 구조가 꽤 인기를 끈 것은 사실입니다.
사업부란 특정 시장에 집중하고 시장의 요구에 빠르게 대응하기 위해서 만든 특수한 형태의 조직입니다.
보통 사업부는 상당히 많은 독립권을 가지고 있고 대부분의 결정을 사업부 내부에서 독립적으로 할 수 있습니다.
하지만 작은 회사를 사업부로 나눠서 각 사업부에 독립적인 책임과 권한을 주게 되면 득보다 실이 더 많아집니다.
하지만 사업부가 가지고 있는 단기적인 성과에 대한 욕심 때문에 사업부 조직 형태에 현혹이 되곤 합니다. 하지만 장기적으로는 잃는 것이 더 많을 수 있습니다.
사업부는 장점도 가지고 있는 조직 구조이지만 다음과 같은 단점들을 가지고 있습니다.

  • 사업부 간에 지식과 정보가 서로 공유하기 쉽지 않다.
  • 사업부 간에 인력을 공유하기가 어려워져서 한쪽 사업부의 인력이 모자라도 인력을 공유하는 등의 효과적인 인력활용이 어렵다.
  • 사업부 간에 기반시스템이 달라지고 개발 표준이 상이해져서 전사적인 개발 효율이 떨어지고, 미래에 다시 통합을 하려고 해도 쉽지 않게 된다.
  • 영업 위주로 개발을 하게 되어서 제품의 아키텍처가 점점 취약해진다. 버그가 많아지고, 시간이 흐를수록 신규 개발보다는 유지보수에 시간을 많이 소비하게 된다.
  • 단기적인 성과에 집착하여 개발자들의 역량 향상에 소홀해지고 장기적으로는 개발 생산성이 떨어진다.
  • 각 기능 조직의 인원이 분리되어 사업부끼리 기능이 중복되고 각각의 전문성도 떨어진다.
  • 사업부의 이익과 회사의 장기적인 이익이 서로 일치하지 않을 수 있다.

사업부를 시행하기 적당한 조직의 크기는 몇 백명 단위가 아닙니다. 몇 천명, 몇 만명의 조직 정도의 규모가 되어야 사업부를 시행할 수 있는 조직이라고 할 수 있습니다.
조직규모가 대단히 크거나 특수한 시장 상황에 대응하기 위한 특별한 목적이 있는 경우라면 상관이 없지만, 회사의 규모가 몇 백명 이하라면 개발조직은 한 조직에 속해서 관리되는 것이 좋습니다.
이미 사업부를 시행하고 있는 조직이라면 각 사업부의 개발 및 기술 전체를 통제할 수 있는 조직이나 CTO가 필요합니다. 그리고 가능하면 개발 조직은 하나로 합쳐서 전사적인 개발조직으로 움직이는 것이 좋습니다.
사업부 조직으로 인해서 개발조직이 이미 통합이 어려운 상태라면 개발 조직을 쪼갤 때보다도 몇배의 배용을 치뤄야 합니다.
따라서 개발조직은 장기적인 안목으로 신중하게 다뤄야 합니다.


2010년 1월 5일 화요일

삼성은 왜 소프트웨어를 잘 만들지 못할까?

오늘 아침 조선일보 IT관련 기사를 보다가 다음 글을 보게 되었습니다.


사실 삼성에서 개발하고 있는 바다에 관심은 있지만 큰 기대를 하고 있지 않기 때문에 별 생각 없이 기사를 훑어 보고 있는데, 생각해볼 내용이 있어서 인용합니다.

삼성전자는 이를 통해 '하드웨어는 강하지만 소프트웨어는 약하다'는 인식을 단번에 뒤집겠다는 것이다. 삼성전자가 '바다(bada)'라는 한글 이름을 해외 시장에서도 그대로 사용한 것도 한국에서 개발한 휴대폰 플랫폼이라는 이미지를 세계인에게 각인시키기 위해서다. 홍 상무는 "바다 프로그램은 스마트폰뿐 아니라 일반 휴대폰에서도 사용할 수 있도록 설계된 게 차별화 요소"라면서 "(바다는) 전 세계 개발자들이 만든 수많은 응용프로그램이 거래되는 장터라는 의미도 있다"고 말했다. 

조선일보기사에서 인용

'하드웨어는 강하지만 소프트웨어는 약하다'는 인식을 단번에 뒤집겠다"
이 의미는 원래 소프트웨어가 강한데 인식만 안 좋은 것이고 바다를 기똥차게 만들어서 인식을 바꾸겠다는 걸까요?
아니면 원래 소프트웨어가 약한데 이번에 바다를 개발하면서 갑자기 소프트웨어를 잘 만드는 조직으로 탈바꿈하겠다는 걸까요?

사실 둘다 말이 안되기는 마찬가지입니다.
일단 삼성도 소프트웨어는 약하다고 스스로 인정하는 것 같고, 그 동안의 경험을 토대로 판단해보면 절대로 소프트웨어를 잘 만드는 조직이라고 볼 수 없기 때문에 첫번째는 무시하죠.

비록 소프트웨어는 잘 못 만들지만, 소니, 모토롤라가 따라 올 수 없는 큰 강점들이 많아서 지금은 성공을 이루었기 때문에 삼정 자체를 평가할 생각은 없습니다. 단지 소프트웨어 얘기를 좀 해보죠.

왜 소프트웨어를 잘 못 만들까요? 사실 외형적인 것만 보면 부족할 것이 없어 보입니다. 조직, 프로세스 모두 갖추고 있고(오히려 과도하기도 합니다.), 개발툴이나 시스템은 세계 최고의 것들을 쓰고 있고, 똑똑한 개발자들이 바글바글(반대하는 사람도 많을 것 같네요.) 합니다. 

마치 "아이폰"과 "옴니아2"를 스펙만 놓고 보면 큰 차이가 없지만 막상 둘을 나란히 놓고 써보면 느낌이 확 다른 것과 비슷하다고 할까요?

겉보기에는 비슷하게 흉내를 내고 있지만, 속을 까보면 조금씩 다릅니다. 그 작은 차이들이 모여서 이렇게 되었다고 볼 수 있죠. 결국의 개발문화의 차이로 나타납니다. 실제 제 컨설팅 경험에 의하면 그런 환경에서 그런 방법으로 소프트웨어를 개발하고도 지금까지 살아 있는 것에 감탄을 하면서도 그 속의 개발자들을 안타깝게 생각한 적이 있었습니다. '좋은 환경과 제대로된 조직에서 개발을 해왔으면 훨씬 잘 되었을 개발자들인데'라는 생각이 들더군요.

결국 그 원인은 경영층의 소프트웨어에 대한 무지 때문이라고 생각합니다. 하드웨어 분야는 몇 십년간 정말 많은 투자를 해온 것에 비해서 소프트웨어는 그렇지 못합니다. 하드웨어적인 마인드로 소프트웨어 조직을 키울 수 있다고 생각하는 것 자체가 말이 안됩니다. 소프트웨어 조직은 소프트웨어를 철저히 이해하고 있는 경영자가 있어야 합니다. 이러한 경영자가 힘을 가지고 10년 이상은 노력해야 세계적인 소프트웨어 회사들과 어깨를 조금 나란히 할까 말까 합니다. 그렇게 할 수 있을 까요?

힘이 있고 소프트웨어를 정말 잘 이해하는 경영자가 있어야 소프트웨어 개발자들이 꾸준히 성장할 수 있는 길을 열어 줄 수 있습니다. 소프트웨어 개발이란 철저히 사람이 하는 일이라서 뛰어난 개발자들을 10년 이상 키워내야 합니다. 그냥 연수만 10년을 채운다는 의미는 아닙니다. 형식적으로만 갖춰진 조직이 아닌 정말 소프트웨어 개발조직다운 환경에서 제대로 된 개발문화 속에서 꾸준히 키워져야 "이제 소프트웨어 개발 좀 하겠구나~"하는 소리를 들을 수 있습니다. 

소프트웨어 개발조직 다운 환경과 개발문화가 구체적으로 무엇이냐고요? 짧은 글에서 다 설명하기는 정말 어렵습니다. 우리 전통문화를 잘 이해하지 못하는 사람에게 그게 뭔지 글로 설명하는 것이라고 해야 할까요?
궁금하다면 제 블로그 자체가 지속적으로 얘기하는 내용이므로 다른 글들을 읽어 보시기 바랍니다. 제 블로그를 구독하고 계신 분들은 나름대로 이해를 하고 계실 겁니다.

안타까운 것은 하드웨어와 소프트웨어의 갭이 상상이상으로 크고 삼성같은 큰 조직은 바뀌는 것이 훨씬 어렵다는 것입니다. 내부에 변화를 싫어하는 사람들이 너무 많기 때문입니다. 하지만 삼성은 이미 이전에 몇번의 변화를 통해서 지금에 이르렀기 때문에 약간의 희망을 가져봅니다. 

2010년 3월 2일 화요일

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2012년 9월 3일 월요일

Technical Career Path를 보장하는 방법

그 동안 개발자 경력에 대한 글들을 여러 건 작성했다. 많은 독자들이 문제 인식에 공감을 했지만 여전히 해결책은 쉽지 않다. 그래서 여기 방법을 제시하고자 한다. 소프트웨어 회사들이 어떻게 하면 Technical Career Path를 보장할 수 있을까?

첫째, 경영자 의식의 변화이다.

경영자가 개발자의 경력을 보장하는 것이 회사에 얼마나 큰 이득이 되는지 깨닫지 못한다면 개발자가 꾸준히 개발만 할 수 있도록 노력할 리가 없다.

축구는 체력이 떨어지는 30대 중후반이면 더 이상 선수로 뛰기 어렵지만, 소프트웨어 개발자는 체력과 상관없이 평생 시간이 흐를수록 점점 더 뛰어난 개발자로 일할 수 있다. 이렇게 뛰어난 선수로 일할 수 있는 개발자들을 관리나 하라고 낭비하지 않고 계속 선수로 뛸 수 있도록 회사에서 지원을 해야 한다는 것을 경영자들이 절실히 깨달아야 한다.

아직은 경영자들이 이같은 인식이 부족하거나 막연히 개념만 인지하고 현실은 다르게 행동을 하는데 주위에서 설득하려는 노력이 필요하다. 이 칼럼들을 공유해도 좋고 외국의 사례를 보여주는 한 방법일 것이다. 이는 회사를 위하고 개발자도 위하는 길이다.

둘째, 개발 조직의 변화이다.

개발 조직은 워낙 회사마다 서로 달라서 하나의 형태를 지켜야 한다고 말할 수는 없다. 하지만 개발 조직이 전문 개발자들이 제대로 일할 수 있는 구조가 되어야 한다. 우선 개발팀장, 개발리더, 매니저 등 구분 없이 마구 섞여서 일하는 것은 지양해야 한다.

조직이 아주 작아서 혼자 다해야 하는 경우를 제외하고는 관리자와 개발자는 구분을 하자. 팀이 커져서 관리 일이 점점 많아지면 더 이상 개발자가 개발을 겸해서 하기는 어렵다. 전문 관리자를 두는 것이 좋고, 프로젝트에서도 프로젝트매니저를 따로 두는 것이 좋다. 개발자는 개발에 전념할 때 가장 높은 성과를 낸다. 개발 외의 일은 관리자나 프로젝트매니저가 맡아야 한다.

셋째, 공정한 평가이다.

소프트웨어 개발자로 공정한 평가를 받기 매우 어렵다. 그래서 평가 대상보다는 평가자가 되려고 하는 경향이 있다. 공정한 평가가 대단히 어려운 일이지만 나름대로 객관적인 근거에 의한 평가를 위해서 노력해야 한다. 개발자가 어찌 해볼 수 없는 이유로 평가에서 불이익을 받는다면 개발을 계속 하기가 싫어질 것이다. 소스코드관리시스템과 이슈관리시스템의 기록을 활용하고 개발 일정 준수 등의 지표를 활용하는 것도 좋은 방법이다.

넷째, 적절한 대우이다.

많은 회사에서 팀장이 되고 관리자가 되어야 더 높은 연봉을 받을 수 있다. 그 주된 이유는 관리와 개발의 분리가 안되어 있어서 구분이 안되기 때문이다. 관리를 하지 않고 평생 개발을 한다고 해서 연봉이나 대우에서 불이익을 받아서는 안된다. 오히려 동일 경력에서 개발자가 관리자보다 더 높은 연봉을 받는 것이 맞을 수 있다. 관리자나 개발자나 자신의 전문분야에서 회사에 기여하는 만큼의 적절한 대우를 받아야 한다.

다섯째, Career Path 제공이다.

회사에서 다양한 Career Path를 제공해야 한다. 개발자는 이들 중에서 적절한 시점에 선택을 할 수 있어야 한다. 계속 개발자로 경력을 발전시켜 나갈 수도 있고 관리자나 프로젝트매니저가 될 수도 있다. 또는 다른 일을 맡을 수도 있다. 한번 개발자 경력에서 벗어나면 다시 돌아오기 어려우므로 신중하게 결정해야 한다.

여섯째, 개발문화, 개발 프로세스, 기반시스템이다.

너무 광범위한 내용이라서 다 설명하기는 어렵다. 개발자가 제대로 일하기 위해서는 공유를 기반으로 한 투명한 개발문화와 적절한 개발 프로세스가 필요하다. 또한 개발에 필요한 기반시스템을 제대로 갖추고 있어야 한다. 아무것도 갖추지 못한 회사에서는 개발자가 아무리 개발을 오래해도 가치를 높이기가 어렵다.

일곱째, 롤모델이 필요하다.

롤모델이 있다면 개발자들에게 확실한 길을 보여줄 수 있다. 하지만 무늬만 개발자가 아닌 진짜 개발자를 외부에서 영입하기는 쉽지 않다. 내부에서라도 개발자들의 롤모델을 만들도록 노력해 보자. 회사에서 가장 뛰어난 개발자들에게 관리 일은 덜어내고 개발에 전념할 수 있도록 해주고 회사의 제도가 이를 뒷받침하도록 하자. 회사의 개발 조직이 더욱 탄탄해 질 것이다.

개발자 경력 보장 문화는 개발자들의 인생이 달린 일이다. 아직은 척박하지만 우리가 하나씩 바꿔나가야 한다. 가장 어려운 일은 경영자를 설득하고 깨닫게 하는 일이다. 고양이 목에 방울달기 같은 일이지만 어렵다면 주변이나 전문가의 도움도 받아보자. 지금은 3D 취급하는 사람들도 있는 소프트웨어 개발이 좀더 좋은 대접을 받기 위해서는 개발자 경력 보장이 중요한 단초가 될 것이다.

이글은 Tech it에 기고한 글입니다.

2013년 11월 19일 화요일

서열문화가 SW산업 망친다. (개발문화 시리즈5)



이번 개발문화 이야기는 '서열이 지배하는 조직문화'다. 

우리나라는 옛날부터 서열을 매우 중요시 한다. 사람들이 모이면 서로 나이를 비교하고 서열을 정한다. 회사에서도 대리, 과장, 부장이 되려고 열심히 일한다. 직급에 따라 업무가 달라지고 급여도 서열에 비례한다. 물론 많은 변화가 있어 왔지만 뿌리깊게 자리 잡은 서열문화의 뿌리는 여전히 튼튼하다.

소프트웨어 산업에서도 서열 문화는 조직 문화에 많은 영향을 주었고 그로 인해서 많은 문제와 생산성 저하를 불러일으켰다. 소프트웨어 개발자도 직급에 따라 서열화 되며 주로 윗사람이 일을 시키고 아랫사람은 시키는 대로 일하는 형태가 많다.

이러한 수직적인 조직문화는 수평적인 조직 문화에 비하여 소프트웨어 개발에는 적합하지 않다. 자율성과 창의성이 강조되는 소프트웨어 개발 현장에서 수직적인 조직문화는 자칫 창의력을 저해하고 수동적인 마인드를 형성할 수 있다. 

내 경험에 의하면 소프트웨어 개발에 적합한 효율적인 조직은 수평적인 조직이다. 각자 역할을 나눠서 일을 하지만 상하관계는 아니다. 업무도 그렇게 수평적으로 전문화된다. 역할은 프로젝트 규모에 따라 세분화되기도 하고 크게 몇 개로 나뉘기도 한다. 

큰 프로젝트에서는 아주 많은 역할로 나뉜다. 소프트웨어 아키텍트, 프로그래머, 프로젝트 매니저, 프로덕트 매니저, 리스크 매니저, 빌드 엔지니어, 테크니컬 라이터 등 여러 역할이 있지만 이들은 상하 관계가 아니다. 전문화된 일을 하는 것이다.

그런데 수직적인 조직문화를 가진 소프트웨어 회사에서는 이들 역할과 비슷한 이름을 사용한다고 하더라도 수직적인 관계는 그대로 유지가 된다. 윗사람이 시키고 아랫사람은 지시에 따르는 스타일로 일을 한다. 그리고 전문적인 역할 구분 없이 윗사람이 모든 것을 결정할 권한을 갖는 경우가 많다.

개발자는 신참이나 고참이나 모두 소프트웨어 엔지니어다. 고참이 되면 그냥 시니어 엔지니어가 되는 것이다. 과장, 부장이나 연차에 따라 책임, 수석이 되는 것은 서열 중심의 조직에서 나타나는 현상이다. 물론 회사 대표 개발자에게는 수석 사이언티스트(Chief Scientist), 펠로우 엔지니어(Fellow Engineer) 등 특별한 타이틀이 있을 수 있지만 모두 소프트웨어 엔지니어다.

그 외에도 태크니컬 스티어링 커미티(Technical Steering Committee)나 아키텍트 그룹(Architect Group) 등의 조직이 있을 수 있지만 능력과 경험에 따른 역할의 구분이지 이들을 윗사람으로 생각하지는 않는다. 

부서간 커뮤니케이션에서도 서열은 많은 영향을 미친다. 합리적인 결정보다 서열에 의한 결정이 종종 발생한다. 대리급 개발자가 영업부서의 부장에게 직급으로 눌려서 합리적인 결정을 못하기도 한다. 이렇게 서열문화는 생산성을 떨어뜨리고 개발자의 전문성 향상을 저해한다. 

최근에 몇몇 젊은 회사에서 서열 파괴 시도를 하고 있다. 직원들간 직급을 모두 없애고 서로 이름을 부르며 나이와 상관없이 모두에게 존칭을 사용하는 것이다. 이러한 시도는 상당히 긍정적으로 평가한다. 물론 부작용이 없는 것은 아니다. 연공서열을 파괴 했을 뿐이지 나이 어린 사람이 또 윗사람이 되어서 서열화가 되는 경우도 발생한다.

결국 서열을 없애고 조직을 수평화시키는건 제도만으로 완성되는 것이 아니다. 조직이 전문화되고 전문가를 우대하는 문화도 정착이 되어야 한다. 각자 역할에서 전문가로 성장할 수 있고 관리자를 넘보지 않아도 대우를 받으며 일할 수 있어야 한다. 

소프트웨어 산업은 특수성이 강하다. 엄청나게 복잡한 지식산업이면서 예술성이 강하다. 서열에 의한 역할분담이나 지시에 의한 업무 진행은 소프트웨어 개발에 적합하지 않다. 서열보다는 각자의 특성, 실력에 따라서 수평적으로 일을 나눠서 하는 수평적인 조직문화가 필요하다. 

수평적인 조직이라도 다 같이 똑 같은 일을 하는 것은 아니다. 일반적으로 고참은 더 어려운 일을 하고 리뷰도 많이 한다. 대우도 서열보다는 실력에 의해서 차별화 되어야 한다. 그러려면 모든 개발이 투명화 되어 모든 개발자의 실력과 성과가 만천하에 드러나야 한다. 

결국 서열을 없애고 수평적인 조직을 만들기 위해서는 개발 방식 자체도 바뀌어야 한다. 조직뿐만 아니라 프로세스, 시스템도 모두 바뀌어야 한다. 제도만 바꿔서는 실패할 가능성이 크다. 모든 문화는 서로 얽혀 있어서 하나만 바꾼다고 될 일은 아니다. 연관된 모든 문화를 같이 바꿔야 하고 꾸준히 투자해야 한다. 

가장 중요한 것은 경영진의 마인드이다. 그래야 꾸준히 변화의 추진력을 얻을 수 있다. 변화는 1,2년에 마무리되는 것이 아니고 회사가 지속되는 한 끊임없이 투자를 해야 하는 것이다. 

본 칼럼은  ZDNet Korea에 기고한 글입니다.

2009년 10월 1일 목요일

SW가내수공업

우리나라 SW회사들의 개발 상황을 보면 크나 작으나 가내수공업 형태를 벗어나지 못한 경우가 많습니다. 회사가 작을 경우에는 이런 가내수공업 형태의 개발이 큰 문제를 일으키지 않기도 하지만, 회사 규모가 가파르게 커 나가는데도 계속 그런 형태를 유지한다면 회사의 효율성은 급격하게 떨어지게 됩니다.

마치 원생동물이 군집생활을 하는 것 같은 이런 조직은 서로 같이 일함으로써 상승효과를 얻기는커녕 점점 비효율적으로 바뀌게 됩니다.

SW개발조직은 정교하게 진화된 생체조직과 같이 서로 분업이 잘 이루어져 있고 각 역할은 전문적으로 발전을 해야 하고 시스템적으로 커뮤니케이션이 원활하게 진행이 되어야 합니다. 이러한 조직을 회사가 커진 이후에 준비를 하려고 하면 이미 늦습니다. 회사가 아주 작거나 심지어는 혼자서 회사를 하더라도 조직과 시스템을 갖춰놔야 자연스럽게 회사의 성장에 맞춰서 효율적인 조직을 유지할 수 있습니다.

아직도 전적으로 각 개발자 한 명, 한 명에 너무 크게 의존을 하고 개발의 대부분이 코딩이며, 프로젝트의 성패는 소수의 개발자에 달려 있다면 원생동물의 군집생활과 비슷한 조직이라고 보면 됩니다.

이런 조직을 효율적이고 리스크가 적은 조직으로 탈바꿈하기 위해서는 가장 먼저 필요한 기반시스템을 통해서 모든 개발 과정과 커뮤니케이션을 투명화 하면서 잘 분업화된 전문조직으로 하나씩 바꿔나가야 합니다. 물론 이 과정이 그렇게 쉬운 일도 아니고, 책보고 따라 하기도 쉽지 않죠. 그래도 일단 이 정도만 해도 상당한 효과를 볼 수 있죠. 그만큼 투명한 개발이라는 것은 대단한 변화를 가져옵니다. 그리고 나면 각 개발자들의 역량 향상인데, 이는 대단히 오래 걸리는 일입니다. 

가내수공업형태를 못 벗어난 여러 SW회사들이 미국에 진출한다고 해서 수많은 실패를 경험한 것을 잘 알고 있습니다. 동네 축구 좀 한다고, 월드컵에 나가 보겠다고 하는 것처럼 무모하게 들리기도 합니다. 물론 동네축구에도 정말 뛰어난 인재들이 있습니다. 하지만 박지성이 기회 없이 계속 동네 축구만 했다면 세계적인 선수가 못되었겠지요. 조직은 전문화가 되고 개발자는 진짜 개발자에게 필요한 역량을 키워나가고 해야만 그나마, 게임이 좀 될 수 있습니다.  

이 와중에 이를 해결해보고자 방법론들을 기웃거린다면 문제가 될 수 있습니다. 왜냐하면 방법론에서는 조직이나 시스템에 대해서는 별로 가이드를 하지 않기 때문에 엉뚱한 곳에서 헤맬 수가 있습니다. SW를 효율적으로 잘 개발하는 방법은 특별한데 있지 않습니다. 우리가 소홀히 하는 아주 기초적인 것들에 있습니다. 기본에 충실해야 할 때입니다.

2016년 4월 22일 금요일

이우소프트에서 개발자의 경력을 보장하는 방법

현재 필자가 CEO로 있는 이우소프트에서는 2015년 여름까지 K수석연구원이 개발실장 역할을 맡고 있었다. K수석은 경력이 20년이 넘고 개발은 매우 잘 하지만 관리는 싫어하는 천상 개발자다. 하지만 회사에서 개발실 관리를 맡기니 어쩔 수 없이 관리를 해야 했고 보고서 작성, 회의 등으로 거의 모든 시간을 보내고 정작 자신이 잘하고 좋아하는 개발 일은 거의 못했다. 그래서 스트레스도 매우 심했다. 

우리나라 대부분의 소프트웨어 회사에서 비슷한 일이 벌어진다. 개발자 경력이 10년쯤 되면 팀장, 실장 등 여러 가지 타이틀로 관리에 발을 들인다. 개발자가 일단 “장” 타이틀을 달기 시작하면 커리어가 꼬이기 시작한다. 그럴듯한 보고서도 만들어서 경영진에게 보고도 해야 하고 회의도 많아져서 개발을 할 시간이 점점 줄어든다. 일단 관리에 발을 들이게 되면 관리에 많은 시간을 쏟아야 하고 기술과는 점점 멀어지고 어정쩡한 관리자로 자리를 잡게 된다. 그런데 전문성이 별로 없는 일반 관리자가 될 뿐이다. 다시 개발자로 돌아오지도 못한다. 그러다가 못 버티는 개발자들은 업계를 떠나 치킨집을 차리기도 한다.

이렇게 고참 개발자에게 본인의 의사에 반해서 관리를 맡기면 회사는 무엇을 얻게 되는가? 

회사에서 가장 뛰어났던 SW 개발자들이 잘 하지도 못하고 전문성도 없는 관리 일을 기웃거리다가 대부분 밀려나게 된다. 그럼 개발자는 10년을 넘어가면 더 이상 개발을 못하는 것인가? 전혀 그렇지 않다. 계속 개발에만 매진한다면 10년, 20년, 30년 경력이 쌓일수록 실력이 향상된다. 단지 회사에서 개발자 경력을 보장하지 않기 때문에 개발자의 경력을 지키지 못할 뿐이다.

개발자는 여러 종류가 있다. 어플리케이션 개발자, 알고리즘 개발자, 이미지 프로세싱 전문가, 커널 개발자 등 다양한데 이들에게 고참이 되었다고 관리, 사업, 경영을 하라고 회사에서 압박을 하는 것이다. 이들의 대부분은 관리자로서 실패한다. 원래부터 그쪽으로는 영 소질이 없는 경우가 대부분이다. 하지만 조직에서 힘있는 위치이기 때문에 관리도 잘 못하고 망치고 있어도 팀원들은 불만을 얘기하지 못하고 경영자는 이들이 회사를 망치고 있다는 것을 잘 알아차리지 못한다. 이들은 조직문화의 피해자이며 가해자가 된다. 

이렇게 뛰어난 고참 개발자들이 사라지는 회사는 개발 생산성이 낮아 질 수 밖에서 없다. 어떤 경영자는 밤을 새워 가며 일할 수 있는 젊은 개발자를 더 선호하지만 SW는 작업시간이 생산성과 비례하지는 않는다. 창의적 지식산업인 SW개발에서는 시니어 개발자가 주니어 개발자보다 몇 배 더 뛰어난 것이 일반적이다. 시니어 개발자일수록 회사에서 잘 지켜내야 한다. 그래서 실리콘밸리에서는 60세가 넘는 개발자를 보는 것이 그렇게 어렵지 않다. 

그럼 우리나라에서는 개발자 경력 보장이 왜 잘 안될까? 뿌리깊은 상하관계 위주의 조직문화가 중요한 이유다. 관리자가 윗사람으로서 팀원에게 지시를 하고 팀원은 이를 따라야 한다. 그런 조직에서 일하다 보면 왠지 팀장 등 관리자가 되어야 승진을 한 것 같고 힘도 생기며, 팀원으로 계속 남아 있으면 피곤해진다. 이런 상하관계 조직문화가 계속 남아있는 회사에서는 개발자의 경력을 보장하기는 어렵다. 

우리나라에서는 개발자의 분포가 나이 들수록 개발자의 인원수가 급격히 줄어드는 위가 뾰족한 삼각형 모양이다. 하지만 구글 등의 글로벌 회사들은 나이에 따른 개발자 인원수가 사다리꼴에 가까운 네모 모양이다. 즉 개발자들은 꾸준히 자신의 경력을 보장 받으며 실력을 키워간다는 것이다. 그런 회사와 어떻게 개발 실력으로 경쟁이 되겠는가? 

그럼, 과거 이우소프트는 어떤 상황이었을까? 

개발실의 고참들은 실장, 팀장의 이름으로 관리에 바빴고 개발과는 점점 멀어지고 있었다. 또한 회의와 보고에 불려 다니느라고 정신 없는 나날을 보내고 있었다. 그래도 다시 팀원이 되라고 하면 좋아하지 않을 상황이었다. 팀장이 되어야 연봉도 더 오르고 행정적인 파워도 생기기 때문이다. 

그래서 나는 먼저 개발실 내에서 “상하 관계 철폐”를 강력하게 추진했다. 제도를 바꾸고 마인드를 바꾸기 위해 노력했다.

개발팀장의 인원수도 대폭 줄이고 팀장의 역할도 최소한의 결재로 축소를 했다. “직급”도 거의 통일해서 대부분의 개발자가 “책임연구원”이 되어 호칭도 수평적으로 바뀌었다. 개발팀장도 95%의 시간을 순수 개발에 투입하도록 했다. 개발자들에 대한 개별 관리는 완전히 제거를 하고 스스로 일하게 했다. 

PM조직을 신설하고 전문PM을 영입했고 전문PM이 프로젝트 관리를 전담하게 했다. PM과 개발자는 완전히 수평적인 관계를 형성했고, 개발팀 내에서도 누가 윗사람이라는 의식은 거의 없어졌다. 각자 전문분야가 다른 전문 개발자들일 뿐이다. 직급통일로 위아래 구분도 어려워졌다. 어린 PM과 나이 많은 개발자가 같이 일하는데 거북함은 없는 분위기다.

이제 개발도 하고 관리도 하는 어정쩡한 개발자는 없으며 채용도 하지 않는다. 20년 경력의 개발자를 채용할 때도 코딩테스트는 필수다. 날고 긴다는 개발자도 코딩테스트를 통과하지 못하면 입사를 할 수 없다. 그리고 개발자들도 원한다면 평생 개발을 할 수 있다는 확신을 가지게 되었고, 관리자가 되고 싶어하는 개발자는 이제 거의 없다. 

물론 단 몇 개월 만에 조직 문화와 모든 직원들의 마인드까지 완전히 바꾸는 것은 쉽지 않고 끊임없이 과거의 습관들이 튀어나올 수 있다. 스스로 일하는 문화는 적응이 어렵고 윗사람이라는 권위의식도 한번에 없어지지 않는다. 그래서 수많은 기업들이 개발자 경력보장을 제도로 만들어도 고착된 문화에 가로막혀 정착이 잘 안 된다. 필자의 회사 내에서도 수평적인 조직과 전문가 중심의 조직을 유지 발전 시키기 위해서 끊임 없이 노력하고 있으며 그런 노력이 소홀해지면 순식간에 과거로 회귀할 수 있다는 것을 잘 알고 있다. 공든 탑을 쌓는 것은 어렵지만 무너지는 것은 순식간이다.

우리나라도 개발자가 선택에 의해서 안심하고 평생 개발자로 일할 수 있는 환경이 되어야만 한다. 여러 기업 문화가 서로 얽혀 있어서 하나만 바뀐다고 이 문제가 해결이 되지 않는다. 앞으로 글로벌 기업들과 경쟁하기 위한 최소한으로 바뀌어야 하는 기업문화를 실제 사례 중심으로 계속 이야기 해보고자 한다. 

이글은 ZDNet Korea에 기고한 글입니다.

2012년 7월 9일 월요일

무늬만 개발자

우리나라에서 소프트웨어를 개발한지 10년이 넘은 개발자 중에서 진짜 개발자는 생각보다 적다. 15년쯤 지나면 자신은 스스로를 개발자라고 생각할지 몰라도 진짜 개발자인 경우는 급격히 줄어든다. 대부분은 개발과 관리의 경계에서 애매한 포지셔닝을 하다가 다시는 개발로 돌아오지 못하곤 한다.

그럼에도 자신은 개발자라고 착각을 하는 경우가 많다. 또는 자신을 Architect라고 우기기도 한다.

선임급 개발자를 채용하기 위해서 인터뷰를 하면 이런 "개발자가 아닌 무늬만 개발자"를 자주 볼 수 있다.

매일 수많은 회의에 쫓겨 다니고, 온갖 보고서를 만들고, 수시로 경영진에게 보고하고, 팀원들 관리하고 평가하느라고 시간을 다 보내면서, 스스로는 개발에 관해서 아는 것은 많다고 생각해서 개발할 때마다 간섭하고 스스로 뛰어난 Architect라고 생각한다.

이런 사람들은 개발을 좀 안다고 해도 절대로 개발자가 아니다. 개발과 관리의 차이에 대한 개념도 희미한 상태이다. 대부분은 개발자로 다시 돌아갈 수 없는 상태이다.

절대로 "개발"과 "관리" 둘 다 잘할 수는 없다.

우리나라 대부분의 기업에서 본부장, 부문장, 부서장쯤 되면 이러한 상태에 이르게 된다.  그래도 팀장급에서는 개발자의 모습을 아직도 간직하고 있는 경우가 종종 있다.

하지만 팀장급 이상으로 올라가게 되면 개발자이고 싶은 관리자가 되게 된다. 물론 외형적으로도 완전히 관리자를 선언한 사람도 있겠지만, 여전히 개발자이고 싶은 사람들도 매우 많다.

이렇게 되는 결정적인 이유는 경영자의 개발조직 관리에 대한 오해에서 비롯된다. 경영자는 개발조직을 관리하는 관리자는 개발을 매우 잘 알아야 하기 때문에 가장 뛰어난 개발자들이 관리를 하는 것이 옳다고 생각한다. 그래서 경험 많은 선임 개발자들에게 본부장, 부문장, 부서장을 맡기곤 한다.

개발조직을 관리하는 관리자는 개발에 대해서 개발자만큼 잘 알 필요가 없다. 개발자가 개발에 대해서 아는 정도와 관리자가 알아야 하는 정도는 엄청나게 다르다. 그런데 경영자는 이 둘을 같은 것으로 착각하곤 한다.

개발을 잘하는 개발자는 관리는 전혀 하지 않고 개발에 몰두할 때 가장 높은 가치를 창출한다. 경영자의 착각 속에 개발자는 점점 잘 하지도 못하는 관리 일에 치중하게 된다. 자연스럽게 회사는 개발 파워를 잃게 된다. 그럼 남는 것은 정치적인 경쟁밖에 없게 된다. 불쌍한 개발자들이다.

이렇게 관리자화 된 개발자들은 이직도 곤란하게 된다. 동일한 분야가 아니라면 이직을 해도 회사에 도움이 별로 안된다. 다른 분야로 이직을 한다면 관리 능력이 중요한데 사실 관리는 전문 관리자보다 훨씬 못하기 때문이다. 이미 전문 개발자는 아니기 때문에 다른 분야에서 개발자로서 활약하기도 어렵다. 정말 어중간한 위치기 된다.

결국 그 회사에서 관리자의 길을 걷거나 선택할 옵션이 별로 없게 된다.

물론 개발자 본인이 스스로 이런 선택을 하지 않았지만 결국 이런 결과에 이르는 것이 우리나라 개발자들의 안타까운 현실이다.

개발자가 원하고 실력이 된다면 은퇴할 때까지 개발자의 경력이 보장되는 외국의 상황은 부러울 따름이다.


주변의 환경을 무시하고 스스로 개발자로 계속 살아남는 다면 대단한 결심이 필요할 것이다.
하지만 결국 이런 개발자들이 언젠가는 대우를 받을 수 있을 것이다. (당장은 글쎄 …)
그런 환경을 만들고 싶다.

이글은 Tech it!에 기고한 글입니다.

2010년 10월 4일 월요일

개발팀장과 프로젝트관리자(PM)

오랫만에 찾아뵙니다.
요즘 워낙 바쁜 날을 보내고 있다는 핑계로 블로그 포스트를 자주 못하고 있습니다. 다시 힘을 내서 시작하려고 합니다.

최근에 컨설팅에 많은 시간을 보내고 있는데, 컨설팅을 하면서 주로 겪게 되는 현실적인 얘기 위주로 적어볼까 합니다. 그 중에서 가장 흔히 보게 되는 것이 개발팀장의 애매한 포지션입니다.

당신이 개발자라면 또는 개발팀장이라면 어떠한 일을 하고 있는지 잘 살펴 보시기 바랍니다. 제가 여러 회사를 컨설팅하면서 만나본 개발팀장의 역할은 천차만별이었습니다. 

공통점은 있습니다. 개발자로서 오랫동안 일을 하다가 개발팀장이 되었다는 것입니다. 
하지만 현재 하고 있는 일들은 천차 만별입니다.

어떤 개발팀장은 여전히 코딩에 90% 매진하고 있고, 어떤 사람은 프로젝트 관리만 하고, 어떤 사람은 회사 경영회의 쫒아다니면서 바쁜 나날을 보내고 있고, 어떤 사람은 코딩도 하고 관리도 하고 정신 없이 시간을 보내는 사람도 보았습니다.

개발팀장은 "개발팀"의 "장"이란 의미를 가지고 있어서 관리자로서의 역할을 요구하고 있는 듯하지만 대부분의 소프트웨어 회사에서는 가장 경험이 많고 뛰어난 개발자들이 맡고 있습니다.  

하지만 회사에서는 "장"이라는 의미에 따라서 개발자로서의 뛰어난 역할도 계속 해주기를 원하면서 관리도 하기를 원하는 경우가 많습니다. 개발팀에서 필요한 관리란 일반관리와 프로젝트관리인데, 보통 개발팀에서 일반관리는 할일이 별로 많지 않습니다. 일반관리 이슈가 매우 크다면 프로세스나 시스템을 개선해야 할 것입니다. 

따라서 이슈가 되는 것은 프로젝트 관리인데, 이것이 그렇게 만만한 일이 아닙니다. 즉, 개발팀장이 최고의 개발자로서 스펙도 잡고, 설계, 코딩도 하면서 할 수 있을 만큼 프로젝트관리가 간단하지 않습니다. 보통 어디하나 펑크가 나게 되어 있습니다. 

제 경험상 보통 프로젝트 관리에서 문제가 생기는 경우가 많습니다. 개발팀장은 개발자체는 원래 하던일이고 익숙하지만 프로젝트 관리는 경험도 적고 대부분 방법도 모르기 때문에 상식선에서 개발하느라고 바쁜 시간에 짬을 내서 하기 때문에 문제가 생기기 십상입니다.

그래서 필자는 개발팀장은 계속 최고의 개발자로서 개발 조직을 기술적으로 이끌고, 프로젝트 관리는 전문 PM(Project Manager)에게 맡기는 것을 권장합니다. 물론 개발자 출신으로 꼼꼼하고 관리를 좋아하는 사람이 PM으로 성장하는 것도 좋습니다.

개발조직이 10명 미만이고 대부분 소규모 프로젝트만을 진행한다고 하면 PM을 따로 두지 않아도 어떻게든 프로젝트가 진행이 될 수 있을 겁니다. 하지만 조직이 커지고 프로젝트가 복잡해지고 많은 프로젝트를 수행한다면 프로젝트의 성패는 요소기술에 달려 있지 않다는 것을 알게 될 것입니다. 이쯤되면 전문 PM이 없다면 가장 뛰어난 개발팀장들은 기술에 매진하지 못하고 잘하지도 못하는 프로젝트 관리에 허덕일 것입니다.

개발팀장은 쉽게 대체가 되지 않지만 PM은 외부에서 영입을 하는 것도 가능합니다. 즉 외부에서 영입한 사람이 할 수 있는 일을 회사에서 가장 바쁘고 가치 있는 일을 하는 개발팀장에게 맡기는 것은 비효율적입니다.

그렇다고 PM이 아무나 할 수 있다는 뜻은 아닙니다. 이또한 전문적인 일로서 전문가가 해야 하는 일입니다.

지금 일반관리자, 개발팀장, PM 등이 마구 섞여서 일을 하고 있다면 일단 임무를 나누어서 생각하는 습관을 들여야 할 것입니다. 그리고 현재 어느부분에서 문제가 생기고 있고 어느 역할을 보충해야 할지 계획을 세워서 조직을 튼튼하게 해야 합니다. 그렇지 않고 개발자 인원수만 늘여서는 현재의 많은 문제들이 해결되지 않습니다.

2012년 9월 13일 목요일

바람직한 스타트업 SW 개발문화의 조건


우리나라 소프트웨어 회사들의 가장 큰 취약점 하나만 꼽으라고 하면 나는 개발문화를 꼽겠다문화란 오랫동안 습득된 구성원들의 공통된 행동 양식이기 때문에 개인이 전체의 문화를 짧은 시간에 바꾸기가 매우 어렵다특히 조직이 크면 클수록 문화를 바꾸는데 엄청난 시간과 비용이 필요하다.

하지만 개발문화의 개선 없이는 소프트웨어 개발 역량을 얘기하기가 어렵다소프트웨어 개발은 너무 복잡하기 때문에 획일화된 프로세스대로 따라 한다고 잘 할 수 없다하나 하나는 완벽해 보이지 않는 문화적인 활동들이 모여서 개발을 효과적으로 이끄는 것이다

효과적인 개발문화의 필요성을 먼저 깨달은 많은 개발자들도 조직 내에서 접목을 시도하다가 쓴맛을 봐온 것이 사실이다그만큼 집단을 바꾸는 것은 쉬운 일이 아니다.

조직 문화의 방향을 이끄는 가장 큰 힘은 바로 경영자의 마인드다누구나 공감하는 당연한 개발 문화도 최고 경영자가 몸으로 이해하지 못했다면 실패할 가능성이 99%이다지식으로 알고 있는 것은 언제든지 몸에 베인 행동 양식에 밀리게 되어 있다.

그래서 새로 시작하는 스타트업은 좋은 개발문화 사례를 만들 수 있는 최고의 장소가 된다대부분의 스타트업은 기술 주도적이고 소수의 인원으로 출발한다이들이 개발문화를 제대로 이해하고 필요성을 알고 있다면 좋은 개발문화를 가진 회사가 탄생할 가능성이 매우 높다.

실제로 실리콘벨리의 수많은 성공한 스타트업들은 기존의 기본적인 개발문화 위에 자신들만의 독특한 문화를 계속 더해감으로써 소프트웨어 업계 전체의 문화를 리드하고 있다.

그럼 스타트업이 가져야 할 개발문화가 어떤 것이 있는지 알아보기 전에 자가 진단을 먼저 한번 해보자아래 나열할 개발문화에 대한 의견을 어떻게 생각하는가?

1. 좋은 개발 문화에서는 개발이 더 느리지만 옳기 때문에 따라야 한다.
2. 좋은 개발 문화는 일부 개발을 느리게 하는 요소가 있지만 장기적으로 필요하므로 따라야 한다.
3. 좋은 개발 문화는 당장 현재의 프로젝트부터 빠르게 개발하기 위해서 필요하다장기적으로는 말할 나위도 없다.

일반적으로 정답은 3번이지만 이에 대해서 의문을 가지 있다면 좋은 개발 문화를 경험해보지 못했거나 비효율적으로 적용했었을 수 있다또한 회사마다 환경이 다르므로 가장 효율적인 문화도 조금씩 다르다가장 알맞은 문화를 만들고 발전시켜 나가는 것도 스스로 해야 할 일이다.

그럼 대부분의 스타트업이 가져야 할 공통적인 개발 문화는 어떤 것이 있을까여러가지가 있을 수 있지만 대표적인 것을 뽑아보자

첫째문서화이다.
소프트웨어 개발에 있어서 문서화의 필요성을 여기서 설명할 필요는 없을 것이다많은 회사들이 형식에 얽매인 과도한 문서화 시도로 문서화 정착에 실패를 해왔다면 스타트업에서는 형식적인 구속이 적기 때문에 가볍게 시작할 수 있다핵심 개발자들이 이를 주도할 수 있고 불필요한 문서는 만들지 않을 수 있다문서는 꼭 필요한 내용을 가장 적게 적는 것이 가장 좋고 형식은 크게 중요하지 않다간단한 프로토타입을 개발하기 위해서는 10분 정도 투자를 해서 한 페이지의 스펙을 적을 수 있다메모장에 정리를 해도 된다이런 개념은 기존기업에도 적용 되지만 큰 회사에서 이렇게 적용하기는 쉽지 않다문서를 잘 적고 스펙을 제대로 작성하는 것은 쉬운 일은 아니지만 시작이 반이라고 시작을 해야 역량이 꾸준히 증가한다.

둘째투명한 개발이다.
소프트웨어 개발에서 있어서 모든 정보를 투명하게 오픈하는 것이 좋다는 것은 이미 알려져 있다하지만 기존의 회사에서는 과도한 보안에 대한 우려 또는 기존 관습 때문에 정보 공개를 꺼려한다막상 투명하게 개발을 해본 사람들은 숨기려고 했던 일들이 별거 아니라는 것을 알게 되고공개를 함으로써 얻는 이득이 훨씬 크다는 것을 금방 알게 된다스타트업은 소수의 핵심 인력들이 시작하기 때문에 투명한 개발 문화를 갖추기 아주 좋은 환경이다이슈관리시스템을 제대로 활용하여 정보를 모두 공개하면서 개발하는 방법이 정착된다면 회사가 커져도 투명한 개발이 계속 유지될 것이다.

셋째수평적인 조직과 자율적인 관리다.
스타트업이야 말로 상명하복 관계를 벗어나 자율적으로 일할 수 있는 아주 좋은 기회다몇사람의 역할을 해야 할 스타트업의 개발자들이 시키는 일만 해서는 효율적으로 일하기 어렵다스스로 해야 할 일을 능동적으로 찾아서 자율적으로 해나가는 방법이 훨씬 효율적이다일부 잘못된 방향으로 일이 진행되는 경우도 있을 수 있지만투명한 개발을 하기 때문에 언제든지 누가 무슨 일을 하는지 다 감지가 되어서 잘못된 일을 계속 하는 것을 방지하는 장치가 다 되어 있다여러 문화가 잘 어우러져야 각각의 문화가 힘을 발휘한다.

넷째창의력과 오픈 마인드다.
많은 스타트업은 처음에 시작한 아이디어로 성공하지 않았다대부분은 초기 전략의 일부분 또는 전체가 바뀌었다스타트업에서는 개발자를 비롯하여 모든 직원들에게 창의력을 더 요구하게 되고 고정관념 없이 참신한 아이디어를 받아들일 수 있는 자세가 필요하다이는 좋은 문화를 넘어서 스타트업의 생존에 필요한 요소이다.

다섯째아끼는 문화다.
무엇을 아끼느냐 하면 바로 ''이다스타트업은 어느 정도 성공하기 전까지는 자금이 풍족하지 않기 마련이고 회사 돈을 자신의 돈처럼 아끼는 문화가 필요하다대부분의 스타트업은 초기 멤버와 주식을 공유하기 때문에 회사에 주인의식을 가지는 것이 그렇게 어렵지는 않다하지만 초기 투자에 성공하면 이런 문화를 잃어 버리는 경우가 많다좋은 사무실과 불필요한 비용 지출에 무뎌지기도 한다초심이 변하지 말아야 한다.

사실 스타트업의 3년 생존률은 5% 미만으로 높지는 않다마케팅이나 전략 또는 기술에서 실패할 수도 있다하지만 이런 좋은 개발 문화와 역량은 남는 것이고 재도전 시 가장 큰 무기가 될 수 있을 것이다또한 많은 스타트업이 생기고 이런 문화가 확산된다면 전체 소프트웨어 업계도 변화가 있을 것으로 생각한다.


이 글은 Tech it에 기고한 글입니다.