글쓰기/소프트웨어개발

개발자로서 , 엔지니어로서 갖추려 노력하면 좋을 것들

[짱가™] 2011. 12. 15. 00:49
개발자들이 가져야 할 것들... 참 많습니다.
이 시대는 요구하는게 참 많아 졌고 기술의 등장 속도와 발전속도 역시 잠깐 신경 안쓰면 뒤쳐질 만한 굵직한 놈들이 많이 튀어 나옵니다. 그런 시대에서  대한민국에서 개발자로 살아가기라... 정말 하고 싶은 말이 많지만... 
공통된 개발자의 자세? 정도의 주제를 가지고 굵고 짧게 세가지 정도로만 이야기 해 보고 싶습니다. 


 
1. 자신의 Product 를 가져라.
제가 주로 했던 분야가 자바 분야 인지라 알고 있는 분들 역시 자바 또는 객체지향 분야입니다.  
예전에 자바를 처음 배울때 제 뇌리에 박혔던 웹상에서 '수리바다' 라는 닉네임을 가진 분이 있었습니다. 
수 많은 게시판 소스 중에 이 분의 소스는 제게 빛났습니다. 빛났던 것은 가만히 생각해 보면 자신의 로직을 가지고 
자신의 게시판 소스를 통해서 새로운 라이브러리나 새로운 프레임워크가 나올때마다 적용해서 오픈 한 것이 정말 인상깊게 보였습니다. 항상 오픈을 하셨구요. 
그리고 지인들의 예를 들어보면....  
현재 운영되는 자바 계열의 가장 오래된 커뮤니티 okjsp 허광남씨 역시 항상 소스를 오픈하고 데이타베이스를 오픈하곤 합니다. 그리고 여러 엔지니어링+엔터테인먼트(?^^;;) 영역에서 영향력을 행사하시고 있죠.
Spring 의 스타강사 였던 javajigi 박재성씨 역시 자신이 고민한 것들을 오픈하고 같이 토론하려 애쓰는 모습을 볼 수 있습니다. 
근래에 스타강사가 되신 김형준씨를 빠트릴 수 없죠.  몇년간의 삽질을 그루터 서비스에 녹여 냈고 이분 역시 자신의 책을 내시고 자신의 네임밸류 향상을 이뤘습니다. 국내 오픈소스 클라우드 구축의 선두주자 이기 위해서 매일 노력을 기울이시는 분이구요. 국내 엔지니어 모델중 새로운 모델을 만들고 있는 중이죠. 
또한, 많이 알려지진 않았지만, UML2.0 책을 썼고 RSM 을 설파하고 있는 김현남씨 역시 자신이 몇년간 연구해온 모델링 기법을 꾸준히 연구하고 꾸준히 발전시켜서 '행위 형식화' 라는 기법을 만들었고 그 기법의 실천을 통해서 모델러를 꿈꾸는 사람들을 교육해 오고 있습니다. 
 
그외에 여러 훌륭하신 분들이 자신의 Product 를 가지고 발전시켜가고 있습니다. 
현업에서 볼수 있는 '소위' 재야의 고수들이라고 하는 분들 역시.. 자신들만의 솔루션을 가지고 있습니다. 
고객이 원하는 패턴을 파악해서 그에 따른 솔루션들을 스스로 가지고 있다가 요구사항 정리와 함께 자신의 노하우를 담은 솔루션을 풀어 놓고 생산성에 지대한 영향을 미치곤 하죠. 
이와 같이 자신이 고민한 것들을 가지고 끊임없이 자신의 솔루션을 갈고 닦은 이들은 항상 비범하게 일을 처리합니다. 
마침내는 엔지니어 사회에서 명망을 떨치거나 경제적으로 혜택을 받거나 커뮤니티에서 환영을 받게 됩니다. 
아니, 그것보다는... 무엇보다 자신감을 가지게 되고 리드를 할 수 있게 되는  것이  정말 좋은 일입니다. 
스스로 자신의 제품을 가지고 자신이 새롭게 알게된 기술을 적용하고 있다는 것.
그것은 자신의 한계를 극복하는 일이며 고객의 돈과 시간을 테스트 베드로 삼는 것이 아닌.. 새롭게 알게된 지식을 시험할 수 있는 토양이 됩니다. 
저 역시 꿈꾸고 있지만, 개발자들에게 자신을 성장할 수 있는 첫번째 길을 말한다면, '자신의 제품을 만들라' 입니다. 

2. 주위와 소통하려는 노력을 소홀히 하지 말아라.
어떤 이는 말합니다. '커뮤니티 열심히 하는 사람 만나봤더니 다 똑같더라.' 또는 'xxx 별로더라' 
네 맞습니다.  기존에 생각했던 선입관보다 못할 수 있습니다. 
커뮤니티에서 잘 나가는 사람이 잘 하고 커뮤니티에서 잘나가보라고 말 하는 것이 아입니다. 
커뮤니티 생활을 하고 어떤 사이트에서 , 블로그에서 개발자들과 소통할 수 있다는 것은 자신을 내 보이는 것이고 
다른 이들과 소통할 준비가 되어 있다는 것입니다. 
그런 소통을 통해서 자신이 경험하지 못한 것들, 자신이 도움받아야 할 대상들을 알게 됩니다. 
10년 넘게 개발을 해 온 사람이 자신이 한 분야 외에 다른 분야를 알지도 못하고 자신의 기술력에 대해서 위기감 없이 공부도 하지 않는 다면 둘중 하나 입니다. 
'천재' 이거나 '귀머거리' 이거나 . 
여기서 귀머거리란 같은 업종을 하는 사람들과의 소통에서의 귀를 막고 있다는 뜻입니다. 
커뮤니티 생활을 활발히 한다는 것은 양날의 검일 수 있습니다. 
위에서의 사람들의 선입견(잘 할것이다... 대단할 것이다... ) 을 정리를 잘 할 수 있어야 하고, 
스스로의 역량에 맞는 일을 할 수 있어야 합니다. 
어쩔수 없는 것이 사람과 사람의 일이 커뮤니케이션과 정치의 영역을 배제하고는 진행될 수가 없기 때문입니다. 
평소에 개발자로서 소통하고 자신의 한계가 무엇이고 다른 영역에 있는 이들의 생각에 귀 기울일 수 있으며 
자신이 무엇을 더 계발해야 하는지를 알 수 있게 하는 단초는 단연, 커뮤니티라고 말하고 싶습니다. 
커뮤니티를 통해 자신을 계발하고 그들과 함께 하고 따라가고 이끌어주는 재미를 한번 가져보세요. 

3. 진정 자신이 하고싶은 것이 무엇인지 끊임없이 성찰해라.
우리나라 사회에서 4년차 , 5년차가 되면 요구를 받게 되는 일반적인 부분은 엔지니어로 갈 것이냐? 관리로 갈것이냐? 로 귀결됩니다. 
일반적인 대기업에서는 후자로서의 요구를 받게 됩니다. ( 물론 근래에는 좀 달라졌지요. )
제 선배들 중에도  국내 3대 SI중 한 업체에서 근무하시다가 10년쯤 되었을 때 '엔지니어로서 살고싶다!' 는 출사표를 던지고 다른 회사로 옮기신 분도 있습니다. 
물론, 대안은 있습니다. 포탈, 연구소, 등의 여러가지 선택지들.
그러나 우리가 먼저 고려해야 할 것이 있습니다.
자신이 소속되어 있는 조직의 성향을 파악하는 것이 중요합니다. 
저 역시 얼마전 회사를 나오게 된 결정적인 계기는 제가 근무하던 조직의 성격을 스스로 정의 내려보니 어쩔수 없이 회사에서 필요한 역할을 해야 하는데 그 역할은 제가 바라던 저의 미래가 아니었다는 생각이 들어서 입니다. 
기술 기반의 조직, 내가 만든 서비스가 우선이 되는 조직 이 아닌 이상
소위 '전산 자회사' 급의 회사, 기술 보다는 다른 제품 들이 중요시 되는 회사, 자신이 만든 서비스가 아닌 중요한 다른 서비스를 위한 뭔가를 해야 하는 회사... 그런 회사에서 자신이 원하는 것이 그 부분인가? 하는 생각이 중요합니다. 
일반적으로 운영/SM 위주의 회사는 '서비스' 가 우선이므로 '기술', '개발능력' 등이 우선 될 수가 없지요. 
스스로 자신이 있는 조직의 가치와 정체성을 정의 내려 보시기 바랍니다. 
그런 이후에 '내가 이 조직에서 맡을 수 밖에 없는 역할이 진정 내가 하고 싶은 일인가?' 를 생각해 보시기 바랍니다. 
개발자로서 살던, 개발의 경험을 가진 아키텍트 혹은 관리자로 살던 '내가 하고 싶은 일' 을 한다면 행복할 것입니다. 
항상 자신이 하고 싶은 일이 무엇인가? 를 끊임없이 성찰하는 개발자가 되길 제안합니다. 




글을 쓰고 보니 이미 식상한  얘기일 수도 있습니다만, 
그럼에도 불구하고 프로그래머, 개발자, 소프트웨어 엔지니어 로서 이 사회에서 스스로 만족하면서 살아가고 싶다면 소통, 자기 성찰, 자신의 테스트 베드 는 스스로 갖출 필요가 있습니다. 

소프트웨어 개발은 건축물 처럼 결과물을 만져보거나 구조를 볼수도 없고 사람들의 머릿속의 컨셉이 최종 결과로만 눈으로 보이게 되고
실제 과정은 '문서화'라는 과정을 통해서만 우리가 검증이 가능하게 됩니다. 
그리고 항상 사람의 문제로 귀결됩니다.

이렇게 쉽지 않은 분야에서 우리가 어떻게 스스로를 계발할까를 고민한다면 위에서 이야기한 세가지는 우리가 이 업을 수행하고 스스로 자부심을 가지게 해 줄 무기가 될 수 있을 것이라고 생각이 됩니다. 

물론, 실제 자신이 사용할 무기 ( 랭귀지, 시스템, 데이타 등 )를 갈고 닦는 것은 말할 것도 없겠죠?