SW 개발자를 위한 멘토링

무엇을 배워야 할까

dextto™ 2013. 5. 12. 21:56


  신입사원이 처음 팀에 투입되면 방치되는 경우가 종종 있다. 맡게 되는 업무라고 해 봐야 팀내 자산조사와 같이 그다지 가치를 느끼지 못하는 일이 대부분이다. 당장 급한 업무를 신입에게 맡기기에는 못 미더울 뿐더러 업무를 일일이 가르치면서 진행하기에는 시간이 너무 오래 걸린다. 하지만 당신은 이 시기를 허비해 버리면 안된다. 당신은 앞으로 회사생활을 하면서 이 시기만큼 마음대로 공부할 시간을 얻지 못할 수도 있다. 평소 항상 좋은 책들을 찾아 읽어라. 무슨 책을 읽어야 할 지 모른다면 선배에게 자문을 구해보라. 필요한 지식을 얻기 위해 노력하는 후배를 위해 기꺼이 시간을 내 줄 것이다. 사내에 멘토링 제도가 있다면 멘토를 적극 이용해라. 멘토는 멘티의 실력을 키워서 한 명의 어엿한 팀원으로 키워내야 할 의무가 있다.


  어떤 책을 찾아 읽어야 하는 지, 어떤 분야의 지식을 쌓아야 하는 지도 중요하다. 내가 처음 입사했을 때 동기들과 책을 제본해서 본 적이 있다. 한 녀석이 휴대폰 개발자의 필독서라고 하면서 침을 튀기며 추천했던 "GMS Switching, Services and Protocols" 라는 책이다. 그 친구가 속해 있던 파트의 업무가 퀄컴과 같은 칩셋 업체가 제공한 SW가 제대로 동작하지 않을 경우 휴대폰 망의 규약을 잘 알고 있어야 문제를 해결할 수 있는 것들이었기 때문에 이 책은 필독서였다. 우리 팀 선배에게 이책을 공부해야 되냐고 물어봤는데 "뭐 공부해 두면 좋긴 하지"라는 어정쩡한 대답이 돌아왔다. 휴대폰을 만드는 제조사에 몸담고 있으니 모르는 것보다 알아두면 도움은 된다는 그런 뜻이었다. 우리 팀은 애플리케이션을 만드는 팀이었기 때문에 사실 망이 어떻게 구성되는 지 프로토콜은 어떻게 이루어져 있는 지 몰라도 업무에 크게 지장은 없었다. 나는 사실 팀에 바로 기여할 기술을 익히기에도 바쁜 신입시절에 언젠가 도움이 될 지 안 될지도 모르는 책을 파고 있었던 것이다.


  나의 요즘 주 업무는 휴대폰에 기본 탑재되는 안드로이드 앱 개발과 관련된 일이다. 문서를 검토하고 회의를 통해 의견조율을 한 후 프로그래밍으로 요구사항을 구현한다. 이후는 검증 부서에서 등록한 이슈들을 해결한다. 이외에도 자잘한 일들이 매우 많이 있지만 개발자들의 업무를 단순히 압축하면 이정도가 된다. 주 업무가 안드로이드 앱 개발이지만 순수 앱 개발 자체에 대한 서적은 한 권도 가지고 있지 않고, 처음부터 끝까지 독파한 책도 없다. Framework을 분석한 책 한 권만 가지고 있다. 개발에 필요한 대부분의 지식들은 Android Developer's 사이트에 잘 정리되어 있고, 시중에 나와 있는 많은 책들이 이 사이트의 문서를 번역한 수준이기 때문이다. 또한 구글링을 조금만 해 보면 개발 팁이 넘쳐난다.


  그렇다고 이런 책을 읽을 필요가 없다는 뜻이 아니다. 나는 Android가 이제 시장에 나와서 사람들에게 퍼지기 시작할 즈음 - 당시 버전이 Cupcake이었다 - 1주일짜리 사내 교육을 통해 앱 개발에 필요한 기초 지식을 쌓았고, 팀내 세미나를 통해 좀 더 세부적인 사항들을 공부했다. 그 후에 책을 한 권 사려고 서점에서 몇권 뒤져 봤는데 그다지 볼 만한 책이 없었다. 지금은 그런 기초적인 책이 필요하지 않게 된 수준이 되어 보지 않을 뿐이다.

  아무리 웹상에 정보가 넘쳐나도 책의 가치는 떨어지지 않는다. 책을 한 권 쓰기 위해 저자는 그 분야에 대해 독자보다 앞서 공부하고 개념을 이해하기 위해 자료를 뒤지고 쉬운 표현으로 전달하려고 고민한다. 위에서 말한 개발자 사이트를 단순 번역한 수준의 책에서도 한글로 매끄럽게 표현하는 데에 노력을 기울일 것이다. 예전에는 컴퓨터 관련 일선에서 뛰고 있는 전문가가 아닌 전문 번역가가 번역한 전공 서적이 많이 있었다고 하지만 요즘은 그렇지 않다. 해당 분야에 충분한 경험이 있고 저자의 뜻을 완벽히 이해한 후 독자에게 충실히 전달하려고 하는 좋은 책들이 많이 있다.


  주위에 도움 줄 사람이 없다면 다음 내용이 도움이 될 것이다.


1. 기본기

  SW 개발자들 중에는 학교에서 컴퓨터 관련학과를 전공으로 하지 않은 사람이 많이 있다. 당신이 만약 이런 부류라면 더 늦기 전에 컴퓨터 공학과의 커리큘럼을 찾아보고 관련 전공서적을 구해 업무와 관련 있는 것부터 읽어야 한다. 운영체제, 자료구조와 알고리즘, 객체지향 설계, 데이터베이스 뿐 아니라 개발 언어도 2가지 이상은 자유자재로 구사할 수 있도록 해야 한다.


2. 유행하는 최신 기술

  SW분야에도 유행이 있다. 개발 방법론에도 유행이 있고, 사용하는 언어나 프레임워크 같은 시스템에도 유행이 있다. 지금은 휴대폰에서 사용되는 대부분의 OS가 Android나 iOS이고 그 위에서 돌아가는 애플리케이션은 Java나 Objective-C로 작성된다. 하지만 앞으로 몇년 후에는 시장의 판도가 어떻게 변할 지 아무도 모른다. HTML5가 시장을 장악하여 사용자가 쓰는 대부분의 프로그램이 웹 애플리케이션이 될 수도 있다. 최신 기술에 뒤쳐지지 않게 1년에 하나 정도 새로운 언어를 익혀 두도록 하자. 마이크로 소프트웨어와 같은 잡지를 구독한다면 최근 유행하는 기술이 무엇인지 감을 잡는 데에 도움이 된다.


3. 업무 프로세스와 사내 시스템

  SW개발은 수많은 파트의 사람들과 함께 쌓는 탑과 같다. 각자 맡은 역할이 다르고 전문 분야가 다르다. 서로의 의견을 조율하기 위한 커뮤니케이션 능력은 매우 중요하다. 서로의 의견을 쉽게 소통하고 공유, 관리하기 위해 만든 시스템도 많이 있다. 가장 간단하게는 이메일이나 게시판이 그 역할을 한다. 위키도 있고, 사내에서 직접 만든 시스템도 있을 것이다. 이를 능숙하게 사용할 수 있도록 익히도록 해야 한다. 빠르고 정확한 커뮤니케이션은 업무효율을 배가시켜 주지만, 약속하지 않은 일방통행식 소통은 문제만 낳을 뿐이다. 

  또한 업무에 관련 파트가 늘어나면 정치가 끼어 들고 입장 차이가 생기기도 한다. 이게 맞는 방향인 것 같은 데 왜 일을 어렵게 만드는 지 이해가 되지 않을 때도 허다하다. 이를 매끄럽게 진행하기 위해 사내에는 업무 프로세스라는 게 존재한다. 이는 게임의 룰이다. 서로 지키고 따를 때 일이 원할하게 돌아간다. 불필요한 프로세스라고 생각된다고 해서 무시하지 마라. 당신의 안일한 생각으로 인해 프로세스를 따르는 많은 사람들에게 피해를 끼칠 수도 있다. 마음에 들지 않는 프로세스는 정식 루트를 통해 개선하도록 해라.


4. 개발 문화

  회사마다 독특한 기업문화가 있지만 업계를 관통하는 문화도 존재한다. 이른바 개발 방법론이라고 하는 것인데 최근에는 애자일이 인기를 얻고 있다. 하지만 이를 만병통치약인 것처럼 맹신하면 안된다. 조금씩 시도해 보고 팀에 맞는 것을 골라 사용하도록 해야 한다. 당신의 업무는 훌륭한 소프트웨어를 만드는 것이지 프로세스를 완벽히 지키고, 완벽한 문서를 만드는 게 아니다.


5. 개발자 모임

  업계 동향을 넓게 바라 볼 필요가 있다. 사내에만 갇혀 지내는 것은 경력을 쌓는 데에 도움이 되지 않는다. 웹상에는 많은 개발자 사이트와 동호회가 있다. 맘에 드는 것을 하나 골라 적극적으로 활동하는 것도 좋다. 최근에는 정부에서 Open Source SW에 많은 관심을 가지고 있으니 committer로 참여하는 것도 실력도 쌓고 인맥도 늘리는 좋은 방법이라고 생각한다.


  세부적인 책과 좋은 자료들을 추천해 주고 싶지만 너무 내 관심사에 국한되는 것 같아 제외했다. 공부할 자료를 직접 찾아서 정리하는 시간을 가지는 것만으로도 좋은 공부하고 생각하니 시간내서 나만의 커리큘럼을 정리해 보자.

반응형