개발자, 어떻게 성장해 나갈 것인가.

seaofmagic의 이미지

자바컨퍼런스에 다녀왔습니다. 거기서 [개발자, 어떻게 성장해 나갈 것인가]라는 주제의 토론내용을 들어봤던걸 적어봅니다. 메모를 그대로 옮겨놓아서 말이 안 맞는 것도 많습니다...=_= 혹시 토론 패널분이시나 질문하셨던 분들중에서 말씀하신것과 틀린것이 있다면 거침없이 말씀해주시기 바랍니다. (김창준님, 감사합니다~)

1 주제 #
개발자 어떻게 성장해 나갈 것인가?

2 운영시간 #
15:30~17:30

3 소주제 #

1. 개발자 성장맵을 어떻게 구성할 것인가?
2. 개발자의 성장 단계별 필요한 능력은 무엇인가?
3. 커뮤니티 활동등을 통한 개발자의 능력 신장 및 경력 관리

4 패널 #

1. M : Matt Thompson (Sr. Director, Developer Outreach & Open Source Programs Office, 썬마이크로시스템)
2. Y : 양수열 (한국 자바 챔피언, 전 JCO 회장)
3. L : 이진행 (SAS Korea)

5 참관인 #

1. 김창준 (애자일 컨설팅)
2. 김형기
3. SDS (삼성SDS 12년차, 매니저)
4. ???
5. 그 외.

6 내용 #

6.1 (임의주제분류) 개발자의 분류 #
L : 초급개발자를 어느 정도의 수준까지 성장시키려면 각 단계를 설정한 다이어그램이 필요할 것이다. 다음과 같이 분류할 수 있을 것.

1 Coder
2 Programmer 코더+노하우
3 Developer 비즈니스를 정규화할 수 있고, 전산적으로 구성할 수 있는 능력이 있는 사람
4 Consultant 시장을 만들어나가는 사람
5 Manager 자신을 대체할 차세대 리더 육성/성장 로드맵을 제시할 수 있는 사람

한국에서는 보통 1~3단계까지를 개발자로 통칭한다. 그리고 3단계의 사람들을 Consultant라고 하기도 한다.

Y : 3~4 단계에 추가를 하자면, Modeler(아키텍터의 청사진으로 모델을 작성하는 사람)와 Architector(해당프로젝트의 철학(사상)을 이해하고 방향성을 제시할 수 있으며 청사진을 그려낼 수 있는 사라)이 들어갈 수 있겠다. 그렇게 될 때 Developer는 모델을 기반으로 코드를 작성하는 사람으로 볼 수 있다. 결국 위와 같은 분류방식은 역할에 따른 분류인데, 우리나라에서는 관리자직군이 따로 분류가 되고 있다.

개발자가 성장할 수 있는 밑바탕에는 성장할 수 있는 환경이 전제되어야 한다. 크게 나누자면 2가지 길, 즉, Technical분야와 Management분야로 나눌 수 있다. 자신이 최근 사회 각계층에 2가지 길의 분류 중요성을 알리고 있다. 그렇게 클 수 있는 사회적 환경이 만들어져야 한다. 그렇다면 그런 환경을 만들기 위해선 무엇을 해야 할 것인가.

우리나라에는 SI벤더는 많지만 Global Product를 만드는 회사는 적다. 이것이 해결되어야 2가지 분류환경을 만들어나갈 수 있는 것이다.

6.2 (임의주제분류) 개발자로서의 자세 #
M : James Gosling 은 아직도 코드를 매일 작성하고 있고 경영도 하고 있다. Andy Herzfeld 는 맥킨토시 Interface를 19살 학생때 만들었지만 경영도 매우 즐긴다.

분야별로 한정지어 생각한다면 그것이야말로 스스로를 제약하는 것이다. SUN에는 CEO에 맞먹는 엔지니어 단계(Sun Fellow)가 있다. 엔지니어를 통해서도 얼마든지 관리자 직급에 맞먹는 단계로 나아갈 수 있는 것이다. 코딩단계의 경우는 인도나 중국으로의 아웃소싱을 생각할 수도 잇는 것이다. 중국에서는 한국을 경쟁상대로 느끼기 때문에 추월당하지 않으려면 한국 고유의 Process에 대한 부가가치를 창출해야 한다. Programmer와 Developer의 단계는 한국이 유지를 해야 한다. 그러기 위해서는 개발자의 IDEA가 중요하다. 일에 있어서 자존심을 필요없는 것이다. 즐기는 자세가 있어야 낮은 단계의 직무도 거리낌없이 할 수 있는 것이다.

Y : 방금 M이 말한 시스템을 만들기 위해선 개발자의 노력도 필요하다. 글로벌 추세는 아웃소싱이다. 하지만 그 중에서도 아웃소싱을 할 수 없는 한국적인 분야가 있다. 그것은 외국 업체들에게는 진입장벽이고 우리에게는 보호벽이다.

개발자로서 자신만의 Domain(분야) 있는지 자문해 봐야 한다. 그러려면 Domain에 대한 이해가 필요하다. 바로 그 Domain에 대한 이해를 높일 수 있는 능력개발이 요구된다.

또한 사회적 이슈 발생에 기여하는, 달리 말하면 개발자의 문제를 이슈화하려는 노력이 부족하다. 그것은 개발자들이 Carrier Path의 중요성을 모른다는 것과 같다.

김창준 : 화이트보드에 도식화된 우리나라 개발자의 성장 단계를 보면, 우리의 소프트웨어 개발 방식과 유사하다. 코더는 statement 레벨에서 작업하고, 메소드와 클래스 레벨에서는 프로그래머나 디벨로퍼가 작업하며, 모델러나 아키텍트는 패키지나 서브시스템 등의 레벨에서 작업한다. 이것은 우리가 어떤 식으로 일을 나눠 진행하는가가 반영되어 있다. 우리가 어떻게 소프트웨어를 개발하는가와 개발자의 성장 단계는 서로 맞물려 있다. 개발자 성장 단계에 새로움을 추구하려면 어떻게 소프트웨어를 개발하는가 하는 쪽의 변화가 필요하다.

김형기 : 도입후 버려지는 도메인의 활용이 낫지 않는가?

Y : Global 과 Korean 은 양날의 칼과 같다. 한국적이라는 것은 충분히 경쟁력이 있다. 우리나라 개발자들이라면 핸드폰으로 영상을 본다는 것에 대해서 별 문제없이 생각해낼 수 있을 것이다. 하지만 외국의 경우에는 아직도 모뎀을 쓰는 경우가 있다. (M : 미국은 아직도 핸드폰으로 그렇게 할 수 없는데요.^^;) 그렇다면 우리가 한국적인, 즉 한국에서의 모델을 개발해 뒀다면 그것은 시간이 지나고서 외국에서 먹히는 모델이 된다는 것이다. 그것이 바로 Korean Solution이 Global 환경에서 먹히는 것이다. 하지만 그러기 위해서는 Korean이란 분야에 대한 핵심적인 이해가 반드시 필요하다.

L : 고객의 산업분야에 대한 지식이 있는 상태에서 Trend를 읽고 자신의 것으로 만들어야 한다.

오픈소스 공동체에서 시작하는 것을 추천한다.

6.3 (임의주제분류) 직장내에서 필요한 조건 #

SDS : 아까 말한 분류의 코더에서부터 시작해서 지금은 manager단계에 와 있다. 후배들을 어떻게 각 단계를 효과적으로 적용하여 교육할 수 있는가? 개개인의 역량 수준을 가늠할 수 있는 방법은 어떤 것이 있는가. 우리나라에서는 경력을 굉장히 우선순위로 치고 있다. 해외에서는 경력말고 다른 어떤 기준이 있는가?

M : SUN에서는 직무레벨에서 근속연수(경력)을 완전해 빼버렸다.
레벨 명칭 특징
1 1 level
2 2 level
3 3 level 기술적 관리도 전담해야 함
4 4 level 기술적 관리도 전담해야 함
5 Principal Engineer
6 Senior Stem Engineer
7 SUN Fellow
우리가 중요시 하는 것은

1. 의사소통 능력.
2. 팀웍.
3. Technical skill. 이것이 가장 중요하다.

승진되기 전에 앞서 자신이 승진후 해당 직책의 직무를 수행할 수 있음을 보여주어야 한다. 위의 세가지 항목이 완벽해야 확실한 인사이동이 결정이 된다. 가령 어떤 사람이 현재 단계보다 상위의 업무수행능력이 있다면 일선관리자가 3가지 항목에 대하여 평가해야 한다. 하지만 직속상관뿐 아니라 상위 모든 관리자의 개별평가가 다시 들어가서, 만장일치에 가까운 결과가 나와야 인사이동이 결정이 된다.

모두가 자신을 바라보고 평가한다는 것은 기분이 나쁠 수 있는 것이지만 (SUN에서) 굉장히 잘 돌아가는 시스템이다.

6.4 (임의주제분류) 개발 비용 #

SDS : 고객과 계약시 경력직이 얼마나 되는지도 가격책정의 요인이 된다. 외국의 경우엔 어떤가?

M : 프로젝트의 기술적인 복잡성에 따라 가격이 책정된다. 충분한 마진이 나지 않는다면 쉬운건 사업파트너에게 넘기고 어려운 것만 맡아서 시행한다.

경력은 양날의 칼이 될 수 있다. 한국 소프트웨어 공동체의 발전을 위해서는 경력뿐 아니라 능력도 매우 중요하다. 일본의 경우 경력은 높아도 능력이 낮은 경우가 많아 발전이 없는 사례가 많다.

??? : 한국의 경우에는 소프트웨어 개발 방식이 건축개발 방식과 매우 유사하다. 그렇기 때문에 건축사업과 비슷하게 하도급으로 프로젝트를 수주하게 되어 굉장히 낮은 댓가를 받게 된다. 한국의 그런 문제를 알고 있는지, 혹은 미국에서도 이와 유사한 문제가 있는지?

M : 15년 전 쯤, 미국에서 내가 갓 대학졸업을 할 당시에는 신생기업이 많이 생겨났다. 능력이 된다면 창업이 충분히 가능한 상황이 미국의 경우였다. 8년 전쯤, 한국에 처음 방문했을 때, 상황이 안 좋았던 것으로 기억하고 있다. Skill이 얼마나 되는가가 자유시장 체제에서 매우 중요하다. 한국의 경우 창업기회가 많이 만들어지는 것이 중요하다고 본다. 충분한 보상이 없다면 어떻게 해야 내 기술이 인정받을 수 있는지 고민해야 한다. 미국의 경우에는 자신의 Skill이 높다는 것을 인지하고 있다면 학생들의 경우에도 창업을 한다. 대우를 제대로 받기 때문에.

6.5 (임의주제분류) (다시) 개발자로서의 자세 #

L : 예상은 했지만 토론의 주제가 상당히 빗나갔다. 중간정리를 해서, 3가지 소주제를 하나로 합쳐보자. 어떻게 하면 개발자로서 성장하고, 그에 따른 제대로 된 보상을 받을 수 있을까?

Y : 외국의 경우에는 벤처캐피털이 굉장히 많이 발전되어있다. 캐피털에서 리스크분석까지 해서 투자가 들어가지만 우리나라의 경우에는 돈만 대는 소위 쉬운 투자만 했었다.

우리도 아이디어를 가지고 준비를 하고, 개발도 하고 해야 한다. 자기 아이디어를 형상화 시키는 노력이 필요하다.

경력개발자는 2가지로 나눠볼 수 있다. 같은 3년차 개발자라 하더라도,
1년차 경험을 3년간 되풀이한 사람
1년차에서 해야 할 경험 + 2년차에서 해야 할 경험 + 3년차에서 해야 할 경험
2번째 개발자가 진정한 3년차 개발자라 할 수 있을 것이다.

나 자신의 레벨은 나보다 상위레벨의 사람에 의해서 평가가 될수 있는 것이다. 그것은 경력이 아니라 개인의 질에 의해 평가되어야 한다.

엔지니어라면 한국적인 아이디어의 형상화를 가능하게 해야 한다. 그러기 위해서는 자신의 역량을 어떻게 하면 키울 수 있는가 하는 고민이 필요하다. 그제야 Mission Critical한 분야의 개발자도 나올 수 있는 것이다.

L : 엔지니어는 발명가가 아니다. 예술적인 코드가 아니라, 고객의 원하는 코드를 짜야 한다. 그러기 위해서는 Industry에 대한 지식을 쌓는 것이 중요하다. 오히려 Industry에 대한 이해가 프로젝트의 이해를 높일 수 있다. (여담 : 책을 많이 봐야 한다!!!) 엔지니어도 비즈니스 룰을 알아야 한다. 그것이 싫다면 비즈니스를 잘 아는 친구를 사귀도록 하라.(^^;)

Y : 알고리즘은 이론을 열심히 배우는 것도 중요하지만 실제문제를 어떻게 해결해야 하는지에 대한 정확한 이해가 뒷받침되어야 좋은 알고리즘이 나온다.

오픈소스에 관심을 가져라. 언어의 장벽을 넘어라. 배워놔야 기회가 왔을 때 잡는다. 배워놔야 Global환경에서 인정받는다. 한국이라는 환경에 갇혀있지 마라. 오픈소스 커뮤니티를 최대한 활용하라. 오프라인 커뮤니티도 찾아가 최신의 Trend를 계속해서 파악해라.

L : 기회를 잡으려면 준비해라. 준비하면 기회가 찾아온다. 준비하면 기회를 아~주 잘 낚을 수 있다.

M : 인터넷의 공용어는 영어다. 그건 현실이다. 한국분들, 영어를 익히십시오. 남부아시아 베트남의 경우 대학에서 영어로 강의하는 것이 의무화 되어서 IT분야에서 빠른 발전이 이루어지고 있다. 대만인 이제 의무화가 되고 있다. 영어가 최고의 언어라고 생각하지 않고 내 경우에도 20년후의 비즈니스 언어는 중국어가 될거라 생각해 딸아이에게 중국어를 가르치고 있다.

배우는 것을 멈춘다면 리더가 될 수 없다. 오픈소스를 활용하라. ClosedSource는 배울 수 있는 것이 없지만 오픈소스는 가능하다. 개발자로서, 다른 사람의 빌드를 살펴보고 검토하는 것이 가장 많이 배울 수 있는 방법이다.

배우는 데 쓰는 시간투자는 굉장히 가치 있는 일이다.

김창준 : 빠르게 성장하는 사람들의 비결은?

M : 모든 것에 끊임없는 호기심을 가져라. 지시에 대해 2가지 이상의 해결책을 제시한다면 상관에게 깊은 인상을 심어줄 수 있을 것이다. 자신의 사고가 빠르게 돌아가야 한다.

위키에 정리해 두었습니다. 사실 밑의 링크를 붙여넣기 했습니다.ㅋㅋㅋㅋ
http://esc.cl.hangkong.ac.kr/moniwiki/wiki.php/%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%96%B4%EB%96%BB%EA%B2%8C%EC%84%B1%EC%9E%A5%ED%95%B4%EB%82%98%EA%B0%88%EA%B2%83%EC%9D%B8%EA%B0%80?action=show

hey의 이미지

이 많은 내용을 어떻게 다 메모하셨나요? 감사합니다. ^^

May the F/OSS be with you..



----------------------------
May the F/OSS be with you..


ratsbomb의 이미지

아쉽네요. :-)
다음 JCO행사땐 토론트랙 가보고 싶습니다.

뒤늦은 개발자로서의 입문자로서 저도 로드맵 좀 그려보고 싶습니다. ㅠ_ㅠ

/**
* We need Divide and Conquer 美德
* @return Nothing
*/

白頭山石磨刀盡,豆滿江水飮馬無,男兒二十未平國,後世誰稱大丈夫

neomark의 이미지

덕분에 좋은 내용 잘 읽었습니다.

느껴지는 바가 많군요...

익명동생의 이미지

좋은 내용이네요.

공유해 주셔서 고맙습니다.

김정섭의 이미지

무엇보다도 중요한게 개발자의 미래의 비젼이 아닌가 생각이 드네요.
비젼이 있어야 IT의 미래도 있지 않을지..^^

papabear의 이미지

저도 한때는 IT에 비전이 없는가 고민을 많이 했지만, 역시 우리(개발자)의 비전은 개발자가 만들어가는게 아닌가 합니다. 저는 다른 친구들이 도전하고 성공할만한게 IT라고 확신합니다. 지금 환경이 열악해도 점차 SW 개발자는 가치를 인정받을 거라고 생각하고, 그 생각에는 변함이 없습니다.
다만 지금 좀더 그 시기를 앞당기려고 많은 개발자의 참여를 말씀 드리고 있는 거구요.
글 남겨주셔서 정말 감사드리고 다른 컨퍼런스나 세미나에서 뵙겠습니다.^^

warpdory의 이미지

아.. 아빠곰 ~

요새도 java 를 잡아먹고 있어요 ?

---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.
http://akpil.egloos.com


---------
귓가에 햇살을 받으며 석양까지 행복한 여행을...
웃으며 떠나갔던 것처럼 미소를 띠고 돌아와 마침내 평안하기를...
- 엘프의 인사, 드래곤 라자, 이영도

즐겁게 놀아보자.

rollin96의 이미지

재밌는 글 잘 보았습니다. 자바컨퍼런스 가보고 싶었는데...저 패널토의를 보니 더 아쉽군요. ^^;
발정 -> 발전
오타가 하나 있네요 :)

ㅡ,.ㅡ;;의 이미지

개발자, 어떻게 성장해 나갈 것인가..

개인적인생각...-> 사업..ㅡㅡ;;
----------------------------------------------------------------------------
C Library Development Project


----------------------------------------------------------------------------