기술은 무기다
들어가는 글: 프로그래머는 기술자입니다. 기술자로서 어떤 무기를 선택하느냐가 본인의 커리어를 크게 좌우하기도 합니다. 유행을 타는 기술이 있고 유행을 타지 않는 기술이 있습니다. 진입장벽이 높은 기술이 있고 누구나 책만보면 쉽게 익힐 수 있는 기술이 있습니다. 이에 대해서 좀더 알아보겠습니다.
제 얘기를 좀 하겠습니다. 제 주언어는 Java 입니다. 1999년부터 했으니까 좀 되었네요. 학교에서는 한 과목도 개설되어 있지 않은 언어였는데 우연히 '자바카페'라는 커뮤니티를 만나 활동하면서 모든 프로그래머 커리어가 변하게 되었습니다. 한때 2년정도 C언어로 개발하기도 하였습니다.
- 주특기: Java
프로그래머에겐 주특기가 있습니다. 가장 back 단으로 보면 DB 나 data , network 을 다루는 사람이 있고 가장 front단으로 보면 JavaScript 등의 web 언어들이 있습니다. 그리고 범용언어라고 불리우는 전통의 강호인 C , C++, Java 등이 있고 신흥의 함수형 언어들도 있습니다.
나는 왜 이 기술을 주특기로 선택하게 되었나? 이렇게 주변 프로그래머에 물어보면 다양한 이유가 나옵니다.
1) 학교에서 많이 써서
2) 회사들어가서 배운거
3) 외부 커뮤니티에서
4) 그냥 좋아서 등등
나의 주특기는 무엇이 될까? 가능하면 그것을 잘 키워나가는 방향으로 커리어를 발전시키셨으면 좋겠습니다.
우연한 계기로 찾아오는 경우가 있는데 잘 받아들이셔서 색깔있는 프로그래머가 되었으면 좋겠습니다.
저는 개발 경력에 비해서 기술 스펙트럼은 비교적 좁은 편입니다. 주특기라는 Java라는 언어를 그대로 유지하면서 통신장비제조 / 정보시스템개발 / App 개발로 소위 도메인만 옮겨간 경우입니다. 주로 장기 프로젝트(길게는 2년)를 담당했기 때문에 접해본 프로젝트의 갯수가 많지는 않습니다. 단, 프로젝트의 최초 시작과 마지막 폐기까지 함께한 경우가 많았습니다.
어떤 프로그래머는 여러 회사를 거치면서 다양한 환경과 언어를 접한 경우도 보았습니다.
제 개인적인 생각입니다만.. 가능하면 주특기는 많이 바꾸지 않으셨으면 좋겠습니다. A에서 B로 B에서 C로 새로운 기술을 배울때 가능하면 기존에 내가 알던 것과 일관성을 이어갈 수 있는 커리어패스면 좋을 것 같습니다.
급격한 점프는 커리어 성장에 방해요소로 작용할 수 있습니다.
처음부터 새로 배우는 것은 너무 어려워요.
압니다. 그것이 내맘대로 되지는 않는다는 것을.. 특히 단기간의 프로젝트를 자주 접하게 되면 다양하고 서로 상이한 기술들을 연속적으로 접하게 되는데.. 할수만 있다면 피하시라고 하고 싶습니다.
저는 여기서 구체적으로 어떤 기술이 좋다 나쁘다를 얘기하지 않겠습니다. 큰 의미도 없거니와 기술의 발전속도로 볼때 현재는 아무리 완벽한 것도 10년만 지나면 명운이 다하는 경우가 수두룩 하거든요.
기술을 보는 눈을 키우려면 주도적으로 기술을 선택해봐야 합니다. 부딪쳐 봐야 합니다.
업무를 수행하면서 기술을 선택할 수 있는 기회가 있다면 반드시 도전해보세요. 많이 배우게 됩니다. 새로운 솔루션을 도입한다던가, 요즘 유행하는 함수형 언어로 무엇을 만들어 본다던가 말이죠. 직급이 낮을 때는 실수해도 크게 혼나지 않습니다.
이 기술은 왜 좋은가?
이 기술은 왜 별론가? (기술이 나쁜 경우는 거의 없죠. 모두 상대적으로 단점이 많을 뿐..)
이 기술은 언제 도입하면 좋을까?
젤 중요한 물음
이 기술은 무엇인가? 나름대로의 정의를 해보시기 바랍니다.
대부분의 기술공부가 기술을 사용하는 방법에 치중되어 있습니다. 사용하는 방법은 매뉴얼보고 공식 문서보고 예제 따라하면 누구나 금방할 수 있습니다. 요즘은 구글링과 stack overflow가 워낙 훌륭하니까요.
하지만 이 기술은 나랑 맞는가? 이기술은 우리 조직에 적합한가? 등의 물음은
스스로 해보지 않으면 답할 수 없습니다.
1. 스스로의 기준을 가지고 선택해보세요
2. 우연히 다가오는 주특기도 놓치지 말고 내 것으로 만드세요
3. 갯수보다는 본인의 색깔에 맞는 몇 가지에 집중해보세요
어떤 기술을 선택할 것인가는 후배 프로그래머만 고민하는 것이 아니라 기술 리더나 팀장이 가장 고민해야 할 몫입니다. 실패해도 좋으니 초보 개발자도 나름대로의 시행착오를 겪는 것은 큰 공부가 될 것 같습니다.
사용법보다는 개념에 강한 프로그래머가 되시길 바랍니다.
가끔은 뜬구름 잡는 '객체란 무엇인가?' 이런거 고민해보셔도 좋을 것 같습니다.
2016.04.28 @Home