신입 개발자가 들어오면 어떻게 하시나요?
회사에서 소프트웨어를 개발하기 위해서는 많은 것을 알아야 함에도 불구하고 딱히 가르칠게 별로 없는 경우를 많이 보았습니다. 체계적인 교육 방법로 마땅치 않고요.
어떻게 신인 개발자를 가르치고 있는지 제가 아는대로 한번 나열을 해보죠.
- 멘토(사수)를 지정해서 맨투맨으로 이거 저거 생각나는 대로 알려준다.
- 회사에 문서는 정말로 많다. 책꽂이로 한 벽 가득이다. 그 중에서 뭘 보라고해야 할지 잘 모르겠다.
- 제품에 관한 변변한 문서가 하나도 없다. 있다 하더라도 부실하거나 옛날 버전이다. 그래서 말로 아는대로 설명해준다.
- 개발하는 제품의 메뉴얼을 보여주고 제품의 기능을 익히게 한다.
- 일단 일을 시키고 본다. 물어보는 것이 있으면 그때 그때 알려준다.
- 소스코드를 보게 한다. 소스코드를 분석해서 스스로 제품의 구조를 알아내는 것도 큰 공부다.
위와 같은 현상이 소설은 아닙니다. 실제로 주변에서 흔히 있는 일을 적어본 겁니다.
우리는 전혀 다르다라고 하시는 분도 있나요?
아니면 이게 무슨 문제지? 라고 생각하는 분도 있나요? 음... 그럼 그렇게 생각하는 것이 또 문제네요. ^^
사실 신입개발자가 들어왔을 때 효율적으로 교육을 시킬 수 있는 역량을 갖추는 일은 쉬운 것이 아닙니다.
그 정도 되면 회사가 소프트웨어 개발 회사로서 왠만한 모든 것은 다 갖추고 있는 것이니까요.
이는 "닭이 먼저냐 달걀이 먼저냐"와 비슷합니다.
그렇게 잘 교육된 신입 개발자는 나중에 고참이 되어서 새로운 신입사원에게 자신이 겪은 대로 할 것입니다.
모든 것을 다 갖추어야 한다고 하면 막막하니까 핵심적인 것만 몇 가지 얘기를 해보죠.
내가 어느 소프트웨어 회사에 신입 개발자로 입사를 했습니다.
당연히 그 소프트웨어 회사는 다음과 같은 기본적인 시스템은 갖추고 있어야 합니다.
- 소스코드관리시스템
- 버그관리시스템
- 개발 프로세스
- 코딩컨벤션(프로그래밍 가이드)
그리고 입사를 하면 가장 먼저 위의 시스템과 프로세스, 규칙을 익히고 제품에 대한 기본적인 개발문서를 보게 됩니다. 이때 문서가 너무 많거나 아예 없거나 부실해서 있으나마나 하면 소용이 없죠.
그래서 제품의 스펙문서(SRS, Software Requirements Specification)을 먼저 보고 제품을 이해하게 되면 설계서를 보게 되죠. SRS라는 용어가 낯선 분이 있을텐데, SRS는 앞으로 제가 올리는 수많은 글들의 주요 주제가 될 예정이니 지금은 그냥 소프트웨어의 스펙을 정리한 문서라고만 생각해도 됩니다.
이제 저는 소프트웨어 개발에 투입될 기본적인 준비는 된 겁니다.
그리고 나면 버그를 고치는 일부터 할당이 됩니다. 아주 쉬운 버그부터 시작합니다.
고참은 고치는데 10분이면 될 일은 나는 반나절은 걸려서 해야 할 겁니다. 그래도 그만한 가치가 있는 일이지요.
- 먼저 버그관리시스템에서 버그를 할당 받습니다.
- 선배가 어느 파일을 어떻게 고쳐야 하는지도 가이드를 해줍니다.
- 소스코드관리시스템에서 코드를 내려 받아서 소스코드를 수정합니다.
- 선배들이 코드리뷰를 해줍니다.
- 빌드스크립트를 이용해서 빌드도 해봅니다.
- 개발자 Unit Test도 수행하고요.
- 버그관리시스템도 갱신합니다.
이런 일을 몇 번 하면서 점점 더 어려운 일을 하지만 항상 선배들이 코드리뷰를 해줍니다.
그러고 나면 설계에도 참여를 하고 새로운 모듈이나 제품도 맡게 됩니다.
엄청나게 많은 일을 몇 줄로 작성을 하다 보니 너무 간단해지기는 했지만 기본은 아래 3가지 입니다.
- 제대로된 시스템(Infrastructure system)과 개발 프로세스
- 최신 버전으로 업데이트된 제대로 적힌 핵심 개발문서(SRS)
- Code Review, Peer Review
사실 이 기본을 갖추는 일은 매우 어려운 일입니다.
어떻게 이러한 기본을 갖춰나가야 할지에 대한 의문이 있다면 저와 계속 의논을 해나가면 어떨까요?