공부하는 개발자

학교를 떠나 개발자로 살아가기 시작하면서 은연 중에 계속 부담으로 느끼는 것은 새로운 것에 대한 학습니다. 분명히 세상에 내가 학습할 수 있는 속도보다 더 빠르게 변화하고 있어서 아무리 열심히 공부를 한다고 해도 어느 순간에는 따라갈 수 없는 것 같습니다. 결국 관심 분야를 좁히고 좁혀서 이 정도로 좁히면 내가 최고라도 말할 수 있는 영역을 찾아야 할 터인데, 또 그렇게 분야를 좁히면 내가 할 수 있는 이 별로 많지 않은 것 같아서 심기가 불편합니다.

마이크로소프트 데브데이 2007에서 김명호 박사님이 “개발자는 공부와 변화를 두려워해서는 안 된다”라고 하셨다는군요. 강연을 들은 것은 아니지만 기사를 보니 하지만 개발자가 개발을 오래 한다고 저절로 레벨이 올라가거나 아키텍트로 성장하는 것이 아니다라는 말을 하면서 건설 현장에 오래 있으면 미장이나 반장을 할 수 있어도 저절로 건축 설계사가 되는 것은 아닌 것과 마찬가지라는 말이 있네요.

근데 듣고 있다 보면 묘한 생각이 듭니다. 개발자로 가장 성공한 삶은 결국 개발을 관두라는 게 대부분이거든요. 아키텍트가 되든 PM이 되든 소프트웨어 컨설턴트가 되던지 결국 빨리 직접적인 개발에서 손을 뗄수록 성공한 개발자라는 구도가 만들어지고 있다는 생각입니다. 훌륭한 미장이로 건설 현장에서 오래 활동하며 최고의 명성을 쌓아봐야 대학 갓 졸업한 신출내기 건축 설계사만 못하다는 인식이 소프트웨어 개발에도 그대로 적용되고 있군요. 개발을 잘하고 못하고를 떠나서 소프트웨어 개발 자체가 천한 작업이라면 너무 슬픈 일이 아니겠습니까.

코딩 중독

저는 소프트웨어 분야에서 만큼은 업무와 직접적인 관련이 없더라도 다양하게 공부하자는 주의입니다. 그래서 기술 조사를 빙자해 다양한 분야의 공부를 하려고 노력을 많이 합니다. 그래서 하루 업무를 100이라고 치면, 실제로 코딩하는 시간은 20-30도 안 되는 경우가 많았습니다.

요즘은 코딩에 푹 빠져삽니다. 어느 정도 가속이 붙어서 재밌기도 하고, 또 한 번 필 받을 때 바짝 구현해야 나중에 슬럼프가 찾아와도 시간을 벌어둘 수 있기 때문에 스스로 무리해서 일을 하는 편입니다. 근데 코딩에 많은 시간을 할애하면 할수록 블로그도 안 보게 되고, 책을 읽거나 공부를 하는 시간이 현저히 줄어 들더군요. 하루에 1-2시간 정도는 누가 강제로 업무를 멈추게 하고, 새로운 걸 공부하게 만들어 줬으면 하는 생각이 듭니다-.-

코딩 작업은 이상하게 중독성이 있어서 분명히 업무 효율이 현저히 떨어지는 지점을 지났는데도 멈추지 못하고 질주하고 있는 나 자신을 발견합니다. 주로 밤을 하얗게 지새고 아침 해가 떠오르는 걸 보면서 아, 자고 일어나서 할 걸 하는 후회를…

명품 개발자의 8대 조건

25일자 매일경제신문을 보면 “빌 게이츠에게는 있고 피오리나에게는 없는 것”라는 제목으로 명품 CEO의 8대 조건을 말하고 있습니다. 근데 이런 조건은 사실 CEO 뿐만 아니라 정력적으로 일하는 어떤 직군에나 해당되는 것이겠죠. 명품 CEO의 조건을 그대로 개발자에 대입시켜 명품 개발자의 조건을 만들어 보았습니다. 상당 부분은 그대로 표절해서 ‘CEO’를 ‘개발자’로만 바꿨고, 약간 내용을 보탰습니다.

선견지명

미래를 한발 앞서 예측해 준비하고 적을할 수 있는 선도력이 필요하다. 개발자는 큰 눈으로 비전을 보고 입체적으로 사고해야 하며 동물적 감각과 직관으로 판단하고 행동에 옮길 수 있는 용기도 필요하다.

이미 뜬 기술을 뒤늦게 학습하며 따라가는 사람이 되기 보다는 앞으로 뜰 기술을 예측하고 해당 분야의 기술을 주도해 나갈 수 있어야 한다. 경쟁사가 이미 개발을 끝내고 제품화까지 한 분야에 뒤늦게 뛰어들어 모두를 레드오션에 빠뜨려서는 아무도 돈을 못버는 불행한 게임을 하게 된다.

창의성

개발자의 창의적 능력은 회사의 미래를 결정하는 힘이다. 남이 힘들여 만든 제품을 그대로 모방하려 하지 말고, 항상 새롭고 신선한 소프트웨어를 만들어 낼 수 있도록 열린 마음을 가져야 한다. 어떻게 만들 것인가 보다 무엇을 만들 것인가가 더 중요함을 잊지 말자.

용병술

아무리 슈퍼맨 같은 개발자라도 모든 제품을 혼자서 다 만들 수는 없다. 빼어난 개발자를 선별해내고 채용해 활용할 줄 아는 용병술을 겸비해야 한다. 주목받는 미디어 기업 Joost는 개발자 선발에 아파치 등 유명 오픈 소스 프로젝트의 스타 개발자를 스카웃해 오는 방식을 사용했다.

인간미

개발자에게 있어 진정한 인간미는 따뜻하고 순수한 가슴으로 구성원들을 감싸 안아주는 배려를 뜻한다. 구성원들을 긍정의 힘으로 변하게 하는 칭찬,개발자에 대한 깊은 신뢰와 존경심을 형성하는 겸손 등 3박자를 고루 갖춰야 한다.

배움에 대한 열정

바쁘다는 것을 핑계로 개발자가 공부를 게을리하면 소프트웨어는 더 이상 발전하지 못한다. 뛰어난 개발자일수록 다른 직원들이 퇴근 후에도 홀로 남아 개발서적을 탐독하며 내공을 기른다.

넘치는 활력과 정력

몸과 마음이 건강하지 못한 개발자는 쏟아지는 스트레스의 중압감을 견디지 못하고 무너질 가능성이 크다. 특히 주당 평균 근무시간 100시간으로 어느 직군보다 오랜 시간 일하는 개발자는 체력 관리가 필수다.

정직한 품성과 도덕성

개발자는 한치 흐트러짐 없이 정도를 걸어야 한다. 정직한 품성과 도덕성을 갖추는 것은 존경받는 개발자의 근간이다. 각종 키보드 보안 프로그램처럼 바이러스와 다를 바 없는 악성 소프트웨어를 만들어내거나, 남의 코드를 훔쳐서 사용해 놓고 자기가 만든 것처럼 오리발 내미는 개발자는 존경받지 못한다.

사회적 책임

사회적으로 존경받는 기업이 장기적으로 성공할 확률이 높다. 개발자도 지도층에게 요구되는 솔선수범과 높은 수준의 도덕적 의무를 이행해 사회적 책임을 다해야 한다. 특히 오픈소스를 통해 많은 도움을 얻은 회사는, 버그 패치나 기능 강화 형태로 오픈소스 커뮤니티에 받은 만큼 돌려주는 미덕을 보일 필요가 있다.

여러분이 생각하는 명품 개발자의 조건은 뭔가요? 전 요즘 체력의 중요성을 절절히 느끼고 있습니다. 여름이라 그런지 하루종일 힘도 없고 피곤하니깐 개발 진도도 잘 안 나가고 책 읽어도 머리에 잘 안 들어오네요. 체력과 열정을 어떻게 유지할 것인가가 제일 중요한 일인 것 같습니다.

A급 인재 어떻게 잡을 것인가?

굳이 마이클 델, 스티브 잡스, 가이 가와사키, 짐 콜린스 등을 인용하지 않더라도 A급 인재를 뽑아야 함은 이제 누구나 인지하고 있는 사실일 것입니다. A급 인재가 회사에 반드시 필요한 존재임을 알았다면 다음 질문은 다음과 같습니다.

  1. A급 인재를 어떻게 알아볼 것인가?

  2. A급 인재를 어떻게 영입할 것인가?

1번과 관련된 이슈에는 인재 발굴, 추천, 면접 등의 이슈가 있을 것이고 애자일 이야기를 비롯한 많은 곳에서 여러 가지 이야기하고 있습니다.

하지만 제가 생각하는 정작 중요한 문제는 어렵게 찾은 A급 인재를 어떻게 데려올 것이냐는 문제입니다. 여러분의 회사가 구글이나 MS 등이면 크게 고민할 필요 없습니다. 이미 인재가 제 발로 찾아오는 기업이니깐요.

하지만 이제 시작하는 벤처 기업이나 규모가 작은 기업의 경우 문제가 달라집니다. 이런 회사들이 A급 인재를 뽑고 싶다면, 크고 안정적이며 다양한 기회를 제공하는 대기업과 비교해서 A급 인재에게 제공할 수 있는 가치가 무엇이냐는 질문을 던져야 합니다. 여기서 인간적인 개발 조직이나 앞으로의 비전, 개발자 위주의 사고 등 다소 무형적인 가치만을 주장한다면 A급 인재는 이미 물 건너가고 없을 지도 모릅니다.

회사가 반드시 영입하고 싶은 A급 인재라면 그 사람은 나름대로 회사에서 주도적인 역할을 하기를 원할 것이고, 자신이 만들어 낸 부가가치의 상당 부분을 가져가고 싶어할 것입니다. 결국 A급 인재를 뽑고자 하는 기업은 A급 인재에게 그에 걸 맞는 급부를 반드시 돌려줘야만 하는 것입니다.

벤처 붐이 꺼지고 대부분의 사람들이 대기업, 안정적인 직장을 희망하고 있는 이 시점에서 현재 벤처 기업의 선발 관행으로는 절대로 A급 인재를 뽑을 수 없습니다. 대기업보다 나은 연봉이나 조건을 제시하는 것도 아니면서 앞으로의 비전을 공유하지도 못하고, 회사가 성장했을 때 나눠가질 수 있는 가치에 대한 이야기도 생략하고, 허무맹랑한 이야기만 해서는 A급 인재의 마음을 잡을 수가 없는 것이죠.

결국은 회사가 성장하면, 개인도 함께 성장할 수 있는 모델을 가져야 합니다. 그 성장이라는 게 반드시 물질적인 것을 의미하는 것은 아닙니다만, A급 인재를 뽑아야 한다고 외치면서도 의외로 이 부분에 대한 이야기는 애써 기피하는 사장님들이 많이 계시더군요. 결국은 자신이 스스로 인재를 놓치고 있으면서, 쓸만한 사람 없다고 한탄하는 상황이 되는 것이죠.

SpiderMonkey와 Tamarin

Channy님이 작성하신 “Mozilla와 Adobe 손잡다!”라는 글을 의견을 달아봅니다.

Adobe 사가 자사의 Flash Player 9에 탑재되어 있던 ActionScript 실행 엔진인 Action Script Virtual Machine(AVM2)를 오픈소스화하여 모질라 프로젝트에 기부하였습니다. 현재 3.0 버전인 ActionScript는 ECMAScript에 기반하고 있고, 마찬가지로 ECMAScript에 기반한 자바스크립트와 형제 관계입니다. 따라서 AVM2는 현재 Firefox 2에 탑재되어 있는 자바스크립트 엔진인 SpiderMoneky를 대체 혹은 보완하는데 사용될 수 있는 것이지요.

AVM2는 오픈소스화 되면서 원숭이 이름을 따서 코드명을 짓는 모질라의 관습에 따라 Tamarin 프로젝트로 이름을 바꾸게 됩니다. Tamarin은 다른 자바스크립트 엔진과 달리 JIT(Just In Time) 컴파일을 지원합니다. 쉽게 말해, 실행 전에 바이트코드를 머신 코드로 변경해 빠른 속도로 자바스크립트를 실행하는 기술을 말합니다. Adobe 사의 벤치마킹에 따르면 Tamarin을 사용하면 최대 10배 이상의 성능 향상 효과를 볼 수 있다고 합니다.

코드 통합이 순조롭게 진행되면 Firefox 3부터는 Tamarin을 자바스크립트 엔진으로 사용하게 될 것입니다.  FIrefox는 Gecko 엔진과 XUL 엔진 부분을 제외하면 브라우저도 자체도 대부분 자바스크립트로 작성되어 있습니다. JIT 엔진을 도입하면 브라우저의 속도가 향상되는 효과가 있을 것으로 예상합니다.

하지만 이 기술이 의미하는 바가 단순히 브라우저의 실행 속도 향상은 아닙니다. 웹 2.0을 표방하는 사이트들이 기술적으로는 AJAX를 바탕으로 하고 있고, AJAX는 결국 자바스크립트를 더욱 많이 사용함을 뜻합니다. 따라서 Tamarin 엔진 도입으로 자바스크립트의 실행 속도가 비약적으로 빨라진다면, 점진적으로 지금보다 좀 더 상호작용이 강하고 동적인 웹 2.0이 더욱 확산될 수 있는 인프라를 만드는 셈이 됩니다.

Frank Hecker가 작성한 “Adobe, Mozilla, and Tamarin”를 읽어보시면 이에 대한 좀 더 자세한 내용을 얻을 수 있습니다.