프로그래머로 사는 법 2012. 11. 15. 16:14

http://blog.hanb.co.kr/375

[프로그래머로 사는 법 기획연재 08 : 대한민국에서 나이 많은 개발자가 살아남는 법]

사용자 삽입 이미지


* 본 내용은 도서의 내용을 일부 발췌하여 작성한 것입니다. 도서에는 더 많은 이야기를 담고 있답니다 :)
변종원(43세)
CodeIgniter 한국사용자포럼 운영진으로 활동했으며, 웹사이트 통합 관리 시스템 webmaker3를 개발했다. 2011 PHPFest에서 CodeIgniter 관련 발표를 했으며, 그 외 다수의 세미나에서 발표했다. 현재 ㈜프리비 개발팀 부장으로 재직 중이다.


곰곰이 생각해보니 연차가 올라감에 따라 급여도 올려야 하고 그러다 보면 순수하게 개발자로서 받을 수 있는 급여수준을 넘어가는 순간이 있는데 계속 개발만 하면 다행이지만 회사 입장에서 나이 어린 개발팀장이 자기보다 수준도 높고 나이 많은 차장급 개발자를 관리하는 게 쉽지가 않습니다. 주변의 개발자를 보면 빠르면 30대 초반 또는 중반에 개발팀장을 하고 그 이후에 CTO급이 되지 못하면 기술 영업으로 가거나 전직을 해야 했습니다.

한때 우스갯 소리로 사수가 없는 초급 개발자에게 개발하다가 막히면 회사 근처의 통닭집 사장님에게 물어보면 금방 해결된다는 말을 했습니다. 많은 개발자가 외식 프랜차이즈 쪽으로 전업했던 때가 있었습니다. IT 회사 근처의 통닭집 중에 그런 분이 계셨고 그분들께 물어보면 다양한 경험을 하셨던 분이었기에 쉽게 답변을 얻을 수있었다고 합니다. 안타까운 현실이지만 저도 전업을 심각하게 고민을 했던 때가 있었습니다.

5년 차 정도까지는 급여에 만족하면서 지냈는데 경력이 7년이 넘어가면서 급여는 기대만큼 오르지 않고 제2의 IMF라는 시기와 맞물리고 급여가 밀리는 등 39살이던 2008년 즈음에 전업을 심각하게 고민해야 했습니다. 그러던 중에 자영업을 하다가 부동산 개발회사를 거쳐 모 보험사 컨설턴트로 일하고 있는 대학교 친구를 우연히 만나게 됐고 외제차를 타고 다니는 친구와 제 처지를 비교할 수밖에 없었습니다. 그 친구와 저는 사람 만나는 것을 좋아하는 성향이 비슷했기에 제게 보험 쪽 입사를 권유했고, 모 보험사 지점에서는 저의 대학 시절 활동(과 홍보부장, 농구동아리 회장)과 PC 통신 시절의 하이텔 지역모임 대표시삽 활동 등을 인정하여 6개월에 걸쳐 부지점장과 수차례에 걸친 미팅과 교육, 2번의 시험을 거쳤고, 최종적으로 지점장 인터뷰까지 끝내고 출근할 날만 정하면 되는 상태였는데 마지막으로 생각을 해봤습니다. “내가 개발을 그만두고 다른 일을 하면서 정말 후회하지 않을 수 있을까?” (제 신념 중의 하나가 후회 없는 삶입니다) 그리고 여태까지 쌓아왔던 경험(인사, 총무, 경리, 물류, 교육, 배송, 제휴, 기획, 사이트 운영, 쇼핑몰, 솔루션 개발)과 SVN, 이슈트래커, 스크럼 등 을 회사에 정착시켰던 경험과 노하우를 이대로 사장하기엔 너무나 아까웠습니다.

전직을 하게 되면 그동안 쌓아왔던 다양한 경험과 노하우를 사장시킬 수 있기에 “앞으로 나는 개발자로 살아야겠다”고 생각을 굳게 다짐을 했고 현재 회사에 입사할 때 “나는 계속 개발을 하고 싶다”고 이야기했습니다(회사는 다 어쩔 수 없나 봅니다. 요즘은 살짝 관리도 넘나듭니다. PM도…).

물론 주변에 성공적으로 전업을 한 분도 계십니다. 저보다 3살 많은 형님인데 비슷한 시기에 웹 개발에 입문하여 그분은 보안 솔루션 기술 영업으로 전직했다가 지금은 취미 생활을 직업으로 삼아 일산에서 나름 알려진 목공방을 운영하고 계십니다. 또 한분은 저와 같은 시기에 저는 개발자로, 그분은 관리자로 시작하여 5년 정도 같이 근무했습니다. 그 후에는 자기 사업을 하겠다고 독립하셨고 이러저러한 과정을 거쳐 지금은 그분도 취미 생활이었던 여행을 업으로 삼고 계십니다. 제 경우에는 개발 자체가 저에게는 즐거움이었기 때문에 계속 개발을 할 수 있었던 것 같습니다. 개발이 주는 즐거움이 스트레스를 덜 받게 해주었던 것 같습니다.

2008년 CodeIgniter를 만나게 되면서 제 개발자 인생에 큰 전환점이 됩니다. 날코딩에 지쳐 있을 때였고 SNS를 개발하는 회사에 입사했는데 처음 시작하는 회사라 프레임워크 도입을 강력하게 주장하여 영문 매뉴얼과 외국 포럼의 Q&A를 보면  개발을 시작했습니다. 그러다 최용운이라는 친구가 매뉴얼을 한글로 번역을 하여 PHPSCHOOL에 공개를 했고 자주 의견을 나누던 사람들 몇몇이 모여 술 한 잔을 하기로 한 날 CodeIgniter 한국사용자포럼이 발족됩니다. 돈을 모아 도메인을 구입하고 CodeIgniter로 사이트를 만들고 소스도 공개하고 운영을 시작한 것이 2009년입니다.

초기에는 친목 수준이었는데 한글 매뉴얼과 질문답변 그리고 PHP에서도 프레임워크를 이용하고자 하는 열망이 맞물려 국내 PHP 프레임워크 모임 중에서는 제일 활발하게 활동을 하고 있습니다.

공통 관심사를 가진 사람들이 모여 포럼을 운영하고 소스를 공개하고 노하우를 나누다 보니 저에게 어느새 금전적 보상이 돌아오기 시작했습니다. CodeIgniter 개발 의뢰라던가 교육, 이직 시 유리함, 더 나아가서는 컨설팅까지 단순히 회사 내부의 개발자로서만이 아니라 외부에서도 인정을 받을 수 있었습니다.

포럼에서 한 달에 한 번 정모를 진행하는데 1년에 한 번 정도를 빼고 항상 정모를 진행합니다. 엠티도 가고 술자리도 하고 세미나도 하고 하는데 술자리에서 포럼 후배들에게 하는 이야기가 있습니다. “힘들게 이 자리까지 왔는데 더 가겠다.”라고요. 주변에 누군가 나이가 많은데도 현업에서 개발을 하고 높은 연봉과 부수입을 가진 선배 개발자가 있다면 “나도 저렇게 할 수 있겠다. 저런 길이 있을 수 있겠구나.”라고 생각하고 그런 길을 갈 수 있을 거로 생각합니다.

가끔 면접을 보다 보면 이력서에 “백발이 될 때까지 개발을 하고 싶다.”라고 쓰여 있는 것을 보게 됩니다. 저도 그런 생각으로 현재의 길을 가고 있습니다. 그러기 위해서 개발자에게 신기술 습득과 트렌드에 대한 이해, 지속적인 공부는 필수입니다. 자기 자신의 계발을 위해 투자하지 않는 개발자는 진정한 개발자가 아닙니다. 회사에서 시켜서, 남들이 하니까 따라 해서는 오래 살아남을 수가 없습니다.

저는 5년 차쯤에 항상 하던 일과가 하나 있었습니다. PHPSCHOOL이나 기타 사이트에 새로 공개된 프로그램을 설치해보고 소스를 열어보고 공부하는 것입니다. 거기서 얻는 것은 새로운 알고리즘과 새로운 경험입니다. 문제를 다른 시각에서 바라보고 개발한 소스를 보게 되면 제가 만든 소스와 비교를 해봅니다. 똑같은 문제를 어떤 시각에서 보느냐에 따라 다른 해결 방법과 소스가 나옵니다. 맞고 틀리고의 문제가 아닙니다. 다른 사람의 개발 방식이 효율 면에서 떨어질 수 있지만, 나중에 다른 상황에서는 그런 방식을 써야 할 수도 있습니다.

너무 잡다하게 많은 것을 알고 있을 필요는 없지만 힘들었던 시절에 습득했던 다양한 경험과 다른 사람의 소스를 보고 분석하는 일을 습관처럼 반복한 결과 지금은 문제 해결과 변수 제거에 많은 도움을 주고 있습니다.

포럼에서 질문, 답변을 하다 보면 내가 접하지 못했던 상황과 내가 모르는 질문이 올라옵니다. 내가 접하지 못했던 상황을 만났을 때 제 PC에서 재현을 해봅니다. 어떤 때는 PHP 버그라던가 CodeIgniter 버그 같은 것도 발견하게 됩니다. 그러면서 그러한 상황에대한 간접 경험을 할 수 있고 모르는 질문은 구글이나 다른 검색 사이트를 통해 찾아보거나 올라온 소스를 실행해보거나 아니면 프레임워크 코어 소스를 열어서 찾아봅니다. 그러면서 또 하나의 지식을 습득합니다.

웹메이커3라는 솔루션을 만들 때는 CodeIgniter 외국포럼의 wiki에 올라온 라이브러리나 소스를 모두 설치해서 실행해보고 소스를 본 적도 있습니다. 솔루션에 사용할기술을 선별하고 당장 사용하지 않더라도 나중을 위해 어느 분야에 사용하면 좋을지 기록하고 보관했습니다. CodeIgniter의 라이브러리는 클래스 형태라서 누군가가 개발한 대부분의 PHP 클래스를 그대로 사용할 수 있습니다. CodeIgniter 입문 초기에는 시간이 날 때마다 PHPCLASSES.ORG라는 PHP 클래스 소개 사이트에서 많은 시간을 보내기도 했습니다.

이런 일련의 활동이 내 지식을 살찌게 하고 내 가치를 높이고 PHP만 다룰 수 있는 43세인 제가 개발자로 살 수 있는 비법(?)입니다.

언젠가부터 꿈인 연구소에서의 개발자도 언젠가는 이루고자 합니다. 현재는 회사의 개발 규약을 정하고 소스와 개발에 적용하게 하고 Redmine이라는 이슈 트래커를 이용하여 업무를 히스토리화 하고 SVN을 통해 협업 개발을 할 수 있는 환경을 구축하였고 스크럼 개발방법론에서 일부 차용하여 회의를 진행하고 있습니다. 개발에 집중할 수 있도록 시스템을 구축하는 것도 경험 많은 개발자의 롤이라는 생각이 들고 앞으로는 정말 개발에만 매진할 수 있는 그런 환경을 만들고 싶습니다.

후배 개발자에게 당부하고 싶은 것은 지속적인 자기계발을 하라는 것입니다. 구글플러스에 개발자의 비애 비슷한 내용으로 신기술이 지속해서 나오기 때문에 계속 공부해야 한다고 썼더니 의사도 마찬가지라고 어떤 의사분이 써주셨습니다. 새로운 수술방법이 나오고 기계가 나오면 방법을 습득해야 먹고 살 수 있다고… 개발자도 마찬가지입니다. 바뀌는 트렌드에 대응하지 못하는 개발자는 도태될 수밖에 없습니다. 개발자는 타성에 젖어 있으면 안 됩니다. 끊임없이 노력해야 합니다. 얼리어답터가 되어야개발자로서 오래 살아남을 수 있습니다.

간혹 포럼의 팁 게시판을 보면 PHP 함수 하나면 처리할 수 있는 것을 함수를 만들어서 올리는 사람이 있습니다. 공부하는 목적에는 맞으나 프로젝트 시간에 쫓기는 상황에서 알고리즘을 공부하고 있는 우를 범하지 말았으면 합니다. 어떤 것이 우선순위가높은지 잘 판단해야 합니다.

같이 일했던 개발자 중에 클래스, 인터페이스를 구조적으로 잘 만드는 개발자가 있었습니다. 빡빡한 프로젝트 일정 속에서 어느 날부터인가 일 진척도가 떨어지길래 봤더니 API에 1:1로 대응하는 클래스를 만들고 있었습니다. 외국에서 개발된 API라 사용법이 불편하기는 했는데 굳이 전부를 1:1로 만들지 않아도 되는데 숲을 보지 못하고 시간을 허비하고 있었습니다. 프로젝트 초기 스터디가 가능한 시간이 있을 때나 유지보수로 넘어가서 하면 좋을 일이었는데 프로젝트 중간에 사용법이 불편하다고 자기 입맛에 맞게 API에 1:1로 대응되게 100여 개의 함수를 만들고 있었던 것은 일의 순서, 무엇이 중요한지 파악하지 못해서 그런 것입니다. 나중에 범용 함수 하나로 통일했습니다. API라는 것이 함수명, request, response로 구성된 것이라 범용적으로 처리가 가능했습니다.

또 하나의 케이스는 변화에 익숙하지 않은 개발자입니다. 닷넷 개발사 개발팀장으로 근무할 때였는데 현재도 그렇지만 닷넷 개발자 구하기가 쉽지 않습니다. 지원한 이력서를 보던 중에 53세의 닷넷 개발자가 있었고 화려한 경력과 기술 등이 마음에 들어 면접을 보게 됐고 나이가 많음에도 하고자 하는 열정이 보여서 구인을 했습니다. 그런데 웹보다는 CS 프로그램 위주로 개발하시던 분이라 웹의 생태에 대해 이해도가 떨어지고 변화를 빨리 받아들이지 못하는 성향이어서 4개월이 지나서야 제대로 커뮤니케이션이 될 정도였습니다. 자신감은 충만했지만, 변화를 두려워(?)하여 회사에 도움이 되고자 했던 구인이 오히려 다른 개발자의 리소스를 할당하게 만드는 상황이 되었습니다. 그리고 간혹 직위는 대리인데 PM만큼 넓은 시야를 가진 사람이 있습니다. 나중에는 좋습니다. 그런데 이런 유형은 개발할 때 개발자가 신경 쓰지 않아도 될 부분을 신경을 써서 개발에 집중을 못 하는 경우가 있습니다. 큰 시야는 가지고 있지만 제대로 볼 수가 없으므로 마음만 다급하고 복잡합니다. 반대로 아주 좁은 시선을 가지고 있는 개발자가 있습니다. 소위 땅파기를 잘하는 개발자입니다. 숲을 봐야 하는데 나무만 보는 격입니다. 개발과 관련이 있지만, 특정 부분에 집착하거나 해결하지 못할 경우 혼자서 끝까지 해결하려고 하는 경우인데 이런 때에도 시간을 허비하게 됩니다. 사원, 대리, 과장, 차장, 부장 직위가 올라갈수록 사물을 보는 시야가 넓어지고 단락을 구분할 수 있게 되며 문제점을 빨리 파악을 할 수 있습니다. 선택을 빨리할 수 있고 우선순위를 빨리 결정할 수 있습니다. 

개발자로 오래 살아남으려면 사회 풍토도 바뀌어야 하지만 개발자 본인의 부단한 노력이 필요하고 약간의 운(시류)도 필요합니다. 6년을 넘게 재직했던 회사에서 이직해야 했을 때 “내가 갈 곳이 있을까?”라는 생각을 했습니다. 걱정도 많이 했는데 필요로하는 곳은 있었고 요즘은 개발을 빨리하느냐 잘하느냐 이런 것보다는 내가 가지고 있는 경험을 요구하는 것이 아닌가 생각이 됩니다. 신생 회사는 조직 세팅이라던가 개발 시스템 구축이라던가 한 명의 시니어가 멘토 역할, 길잡이 역할을 수행해주기를 바랍니다.

현재 재직 중인 회사에서 제가 나이가 제일 많습니다. 직책은 없습니다. 명함의 직위는 부장이고 이전 회사가 연구소 구조라서 수석 연구원이었기에 회사 직원들은 그냥변 수석님이라고 부릅니다. 직책이 없지만 웹, 모바일 모두 관여하고 있고 개발 시스템 구축, 스크럼 회의 등을 진행하고 있기에 제가 미치는 영향력은 적지 않습니다. 회사에서 앱 게임 출시를 목전에 두고 있는데 그 앱 게임과 통신을 위한 서버 전문 프레임워크를 구상하고 개발하여 실무에 사용하고 있고(앱 뿐만 아니라 하이브리드 앱, 모바일 웹, 웹에도 대응할 수 있도록 개발되어 있습니다. CodeIgniter기반) 매출이나 수익에 크게 신경 쓰지 않고 개발 쪽에만 전념하고 있습니다.

조직의 기대도 만족 시켜야 하고 제 꿈도 펼치기 위해서는 부단한 노력이 필요합니다. PHP 솔루션으로 신규 사업 제안도 하고 여러 가지 역할을 하고 있지만 제 본분은 개발자이고 제가 꿈꾸는 백발이 성성한 개발자가 되기 위해서 열심히 노력하고 있습니다. 언어의 종류와 관계없이 개발자의 길을 가고자 한다면 끊임없는 자기계발과 업무에 대한 공부가 필요하다는 것을 다시 한번 강조하고 싶습니다. 열정만 있는 개발자가 되지 말고 열정과 실력을 겸비한 개발자가 되세요.

대한민국의 모든 개발자 분들 힘내세요!
 

<한빛미디어 페이스북 놀러가기>