관리 메뉴

드럼치는 프로그래머

[프로그래머 이야기] 개발조직과 개발자 본문

★─My Life/☆─프로그래머's

[프로그래머 이야기] 개발조직과 개발자

드럼치는한동이 2013. 3. 29. 16:28

 

(삼성전자 기흥 반도체 공장, 삼성전자)

9년전 작은 회사에서 SI Hell 프로젝트를 수행하면서 적었던 글을 다시 꺼내보았습니다.
회사의 전략적 방향에 대해 개발경험이 없던 임원진들께 “제조업 사례”를 들어 이야기를 했었는데요.
아직도 비슷한 고민을 하는 회사가 많아, 문장과 문맥을 다듬어 정리해보았습니다.

최근의 스타트업 이야기와는 거리가 있습니다.
프레임이 낡아서 두서없고 부족한 내용이지만, 읽으시는 분들께 충분히 시사점이 전달되었으면 합니다.

 

1. 개발자

※ 정의 : IT 산업에서 개발자는 “판단능력을 보유한 지능적 생산수단 (Intelligent Intellectual production unit)”이다.

(영업, 계획 등이 아닌)“프로젝트 수행”조직에 있어서 제일 중요한 사람은 “일을 하는 개발자”다.
물론, 일의 완급조절과 효율적인 개발자 관리를 하는 PL,PM 도 중요하다.
하지만, 개발자가 어떠한 생각과 어떠한 관점에서 일을 진행하는가는 제품의 품질과 직결된다고 할 수 있다.

개발자가 사람이다 보니 충분한 동기부여가 없는 환경에서는 좋은 품질의 제품은 나오지 않는다.
충분한 동기부여란, 꼭 꿈이나 비전같은 거창한 것만을 말하지는 않는다.

어떤 현장에서는 제품완성도의 기준없이 일할 때도 있다. 특히 정치 프로젝트는 현실감있는 목표가 없다.
정치프로젝트는 무엇을 완성해야 하는지, 얼마만큼 완전해야 하는지에 대한 기준도 없다.
“제품 완성도에 대한 합리적 기준”은 최소한의 목표수립이자 “개발자 동기부여”에 포함된다.

분석 설계 과정의 이야기(Story)가 개발에 충분히 투영되지 않으면, “좋은 구현”은 되지 않는다.
성공적인 프로젝트를 하려면 분석, 설계, 개발 모두를 잘해야만 한다.
크게는 이런 과정을 관리하는 활동 전체가 개발자들에게는 “동기부여”가 되기도 한다.

개발자가 일할 수 있게 하게 위한 합리적인 개발환경이 모두 “동기부여”라고 할 수 있다.

 

2. 개발조직

“IT에서 가치생산수단은 개발자”이기 때문에, 개발자를 어떻게 다루는가 하는 것은 매우 중요하다.
전통적인 개발방법론은 개발자는 ‘싸구려 기계’로 취급하고 있기 때문에, 훌륭한 컨설턴트를 써서 업무분석과 좋은 설계를 한다고 하더라도 좋은 제품이 절대 나올 수가 없다.

1) 팀은 기술을 교육시키고 훈련시키기 위한 기본 단위이다.

IT산업에서 개발자는 곧 생산수단이다. 제조업에 비유하면, 제조기계이다.
개발자를 “싸구려 기계”가 아닌 “비싼 기계”라고 생각하라.
당신을 떼부자로 만들어 줄 비싼 반도체 기계라고 생각하라.
따라서, 처음부터 기계가 오작동하지 않게 관리해야 한다.

군대에선 아무리 싼 기계도 닦고 조이고 기름칠하지 않는가?
개발자도 최소한 그렇게 관리해야 한다. 교육시키고 훈련시켜야 한다.
사후조치보다 사전조치로 효과적인 개발자 관리 시스템을 유지하는 것은 IT사업에 매우 중요하다.

2) 팀은 개발자 소통의 기본단위이다. – 소통채널을 확보하고 소통훈련을 해야 한다.

개발자는 이상과 설계를 현실화하는 수단이다.

개발자는 설계를 완벽히 이해해야만 제대로 구현할 수 있다.
개발자가 이해한다는 것은, 마치 기계에 작동프로그램을 입력하는 것과 같다.
입력하지 않고 어떻게 결과를 바랄 수 있는가?
개발자와 소통채널을 확보하는 것은 제품을 만들기 위한 기본 중의 기본요소이다.
훌륭한 관리자를 두는 것도 좋은 방법이지만, 개발자 소통을 쉽게 하기 위해 스킨쉽을 높이는 것은 매우 좋은 방법이다.

3) 협업체계는 생산라인이다.

여러 대의 단위기계가 모여 하나의 자동차를 생산하듯, 개발자가 다른 개발자와 협업하게 되는 것은 필연적인 일이다.
일이 분업화, 전문화되고 유기적으로 결합되지 않으면, 아무리 뛰어난 개발자로 구성되어 있다고 하더라도 프로젝트는 성공적으로 마무리되지 않는다.

개발자는 맡은 부분에 대한 책임완수가 목표이지만, 제품이 만들어지기 위해서는 유기적 결합시스템이 필수이다.
관리자나 사업가가 이 시스템을 만드는 것은 “공장을 짓는 것”과 같아서, 땅을 고르고 건물을 짓고, 기계를 들이는 것과 같은 “부단한 노력이 필요하다.”

 

3. 기타 – 고급개발자에 대한 짧은 생각

새로운 걸 만든다면, 분석,설계단계에서 최종 구현물건에 대해 정확한 그림을 그릴 수 있는 사람이 고급 개발자다.
일반적으로 분석,설계단계의 이야기들은 개발자의 입장에서 다분히 추상적이다.
더구나 기존에 존재하지 않은 것을 만들어내는 프로젝트라면, 추상적인 모습들을 현실적으로 해석해서 말해줄 수 있는 사람은 개발자뿐이다.
구현에 경험이 많은 사람이라면 실제 어떻게 구현이 될 지 정확하게 조언을 할 수 있다.

그러나, MIS와 같은 업무라면 반대다.
일반적으로는 개발자보다 현업담당자의 업무경험이 더 많고 이해수준이 높다.
이 경우 개발자에게는 담당자로부터 구체적인 정보를 얻어내는 스킬이 중요하다.
고급개발자는 인터뷰 스킬에 능숙하다.
담당자조차도 예상치 못했던 것을 끄집어 내기도 한다. (물론 뜬구름 잡는 소리 하면 외면 당한다.)
MIS와 같은 업무개발에서는 인터뷰 스킬은 프로젝트의 성공여부를 좌우한다.
고급개발자가 꼭 익혀야할 스킬이다.

 

[출처] http://subokim.wordpress.com/2012/11/29/developer-and-team/

Comments