신입 사원 교육 후기: 이상과 현실

연말에 회고를 쓰신 분들을 많이 보게 됩니다. 저는 여러 일들이 있어 이제서야 한숨 돌렸는데요. 작년 회고는 두 개의 글로 나누어 작성하려고 합니다. 먼저 최근에 진행했었던 신입사원 교육 후기(가르치는 사람의 입장에서)를 먼저 공유해 드립니다. 나머지 이야기는 이번 주말에 작성하려고 합니다.

어떻게 해서 신입 사원을 뽑게 되었는가?

저희 팀의 인프라 담당자는 저를 포함하여 두 명뿐이었습니다. 시간이 지나면서 저희가 갖고 있는 데이터를 기반으로 하는 서비스가 조금씩 늘어났고, 그러면서 업무가 늘어나는 상황이었습니다. 이에 처음에는 경력자를 뽑으려고 했으나, 어려웠던 상황이었는데요. 우연히 외부 교육을 갔다가 AWS 및 인프라 관련 교육을 받고 있는 분의 이력서를 받게 되었고, 채용을 진행하게 되었습니다.

첫번째: 역량과 장단점 파악하기

저희 팀은 신입 및 주니어 개발자 면접 전에 저희가 자체적으로 출제한 시험을 봅니다. (오해를 방지하기 위해 말씀드리자면, 저희 회사의 다른 팀은 면접 방식이 상이할 수 있습니다. 지원 시 참고해 주세요)

인프라 파트의 시험은 다음과 같이 구성했습니다.

  • AWS 기초 (EC2, S3, Lambda 등과 같이 기본적으로 사용하는 서비스들 위주)
  • Python (인프라 관리에 사용 중이므로)
  • Linux 기초 (기본적인 콘솔 명령, 모니터링 시 봐야 하는 것들 위주)
  • 네트워크 기초 (웹 서비스를 구성하기 위해 필요한 것들 위주)

시험에 시간을 많이 할애할 수 없어서, 4지선다 문항과 단답형, 간단한 코딩 문제를 섞어서 준비했습니다. 면접 시에는 신입으로 입사하는 점을 감안하여 교육 받은 내용과 관련된 질문을 많이 했습니다. 지원자의 역량을 파악하기 위해, 하나의 주제에 대해 조금씩 심화된 질문을 하려고 노력했습니다.

그리고 10월 중순, 신입사원이 입사하게 되었습니다.

두번째: 교육 목표와 내용 설정하기

제가 사수 역할을 하게 되어 신입사원 교육을 맡게 되었습니다. 어떻게 할 지 고민하다가 다음과 같이 교육 과정을 만들었습니다.

교육 목표는 다음과 같습니다.

  • 협업을 위한 도구에 익숙해 지기 (Git, Jira, Confluence, …)
  • 협업을 위한 규칙에 적응하고, 원활하게 협업하기 (개발팀 내/외)
  • AWS 시스템 구축, 운영, 비용 관리에 필요한 것들을 배우기

교육 내용은 다음과 같이 구성했습니다. 연말까지 10주가 남아 다음과 같이 구성했습니다. 기본적인 룰은 필요한 교육을 월요일에 하고, 수요일에 중간 리뷰, 금요일 퇴근 전에 최종 리뷰로 정했습니다.

  1. 시스템 구성도를 보고 궁금한 내용을 물어보기 / 팀 내 Git 브랜치 관리 규칙 및 협업 툴 사용 방법 배우기
  2. 리눅스 소개 및 실습: 디렉터리 구조, 자원 관리, 시스템 모니터링을 위해 필요한 것들, 원하는 패키지 설치
  3. CLI로 AWS 인프라 자동화
  4. Python 학습: 다음 강의를 참고하여 자습
  5. Python으로 AWS 인프라 자동화하기: boto3
  6. Serverless 인프라 구축: SAM / CloudFormation
  7. Docker 이해하기: Docker, Dockerfile 실습 (사내에서 진행하셨던 내용을 참고했습니다)
  8. Docker 이해하기 2: ECS/ECR에 대한 이해
  9. 컨테이너 자동 배포: CodePipeline
  10. 컨테이너 모니터링: 일단 방안만 검토해 보는 걸로…

그러다가 제가 생각하지 못했던 문제가 있었는데요. 12월 초에 re:Invent 참석이 급하게 잡혔고, 중간에 외부 교육 일정이 잡혀 있었습니다. 그리고 개인적인 사정 때문에 중간에 연차를 써야 할 일들이 좀 있었습니다.

결국 다음과 같이 교육 과정을 바꿔야 했습니다. 물론 수요일 중간 리뷰/금요일 주간 리뷰라는 규칙은 유지했습니다.

  1. 1주차: 현재 인프라와 협업 방식에 대한 이해
    • 시스템 구성도를 보고 궁금한 것들을 정리해 보기 (코드화 되지 않은 부분들이 많아 그림으로 설명)
    • Git, Jira와 같은 협업을 위한 툴과 팀 안에서 사용하는 규칙 설명
  2. 프로젝트 1: 데이터 수집 관련 리포팅 자동화
  3. 프로젝트 2: 데이터 사이언티스트를 위한 데이터 분석 환경 개선

세번째: 교육 진행, 그리고 시행 착오

교육 시작: 현재 인프라와 협업 방식에 대한 이해

첫 주의 교육은 무난하게 진행했습니다. 저희 회사의 주니어 개발자 모임 단톡방에도 공지를 드렸는데요. 이 주의 교육에 저희 팀원 한 분과 신입사원, 다른 팀에서도 여러 분들이 오셨습니다. 개인적으로는 저희 팀이 하는 일에 대해 간략하게 설명을 드릴 수 있어서 좋았습니다.

교육 후에는 내용에 대한 피드백을 받았는데, 다행히 좋은 평가를 내려주셔서 감사했습니다. 개인적으로는 시간을 오후 1시로 잡았던 점이 실수였다고 생각합니다. 😂

프로젝트 1

저희 팀에서 보고 자료를 만들 때 필요한 것들을 자동으로 생성해 주는 프로젝트를 진행했습니다. Lambda를 이용했고, 필요한 리소스를 생성하는데 SAM을 이용했습니다. (SAM과 관련해서 제가 겪었던 일들은 이 문서를 참조해 주세요. )

제가 이 프로젝트 진행을 통해 의도한 바는 다음과 같습니다.

  • 팀 내부 구성원 간 커뮤니케이션
  • Lambda에 대한 이해 및 Python으로 Lambda 함수를 만들고 실행하는 연습
  • 필요한 인프라를 코드로 구성해 보는 작업

여러 사정을 감안하여 2주 정도의 시간을 주고, 틈틈이 리뷰하는 시간을 가졌습니다. 제가 출장으로 빠졌던 주에는 메일로 리뷰를 대신했습니다.

생각보다 신입사원이 빠른 시간에 적응했고, 기본적인 기능을 빠르게 구성하였습니다. 그리고 원래 보고자료 관련 업무를 진행하셨던 분께서 도와주셔서, 저의 부담을 조금이나마 덜 수 있었습니다.

프로젝트 2

두번째 프로젝트는 데이터 사이언스 팀에서 요청했던 사항을 함께 구축해 보려는 것이 목적이었습니다. 또한 개발자가 아닌 사람들과 커뮤니케이션을 하는 경험이 필요하다는 생각이 들었습니다.

시작하기 전에, 저와 데이터 사이언스 팀이 PoC를 하는 중에 EMR을 잠깐 테스트 해 본 적이 있었습니다. 그래서 Hadoop 관련된 내용에 대해 먼저 공부해 보도록 했습니다. 예를 들어 클러스터 구성이라거나, Hadoop에서 사용되는 어플리케이션과 그 용도 등에 대해 알아보도록 했습니다.

그러다가 데이터 사이언스 팀에서 요구사항을 받았는데, EMR보다는 일단 EC2로 진행하는 것이 좋겠다고 말씀해 주셨습니다. 다만, 데이터 분석을 위해 필요한 것들이 미리 설치되어 있으면 좋겠다고 하셔서 필요한 것들을 검토해 보도록 했습니다. 이에 EC2 + S3 등으로 간단하게 구성했고, 인프라 관리 효율화를 위해 CloudFormation을 사용하도록 했습니다. 굳이 CloudFormation을 사용한 이유는, SAM을 사용해 봤기 때문에 좀 더 익숙하게 쓸 수 있을 것이라는 기대를 했기 때문입니다.

이번 교육을 진행할 때, 저는 re:Invent에 가게 되었습니다. 그리고 서비스 개편이 있어서, 저희도 그에 맞춰 해야 하는 작업들이 있었습니다. 출장 중에는 되도록이면 메일이나 CodeCommit의 Pull Request를 이용해서 리뷰를 했습니다. 하지만 서비스 개편이 임박했을 때는, 교육을 중단하고 서비스 개편에 대비한 테스트를 먼저 진행하기도 했습니다.

이러다가 연말이 되었는데, 뭔가 확실하게 마무리한 느낌이 아니어서 좀 많이 아쉬웠습니다.

마무리

이번 교육을 계획하면서 떠올렸던 것은 첫 직장에서 3개월 동안 교육을 받았던 기억이었습니다. 첫 달은 네트워크 기본과 리눅스, C 언어를 배웠구요. 나머지 두 달은 팀장이나 선임들께서 주신 과제를 수행하고 발표하는 과정이 있었습니다.

하지만 그 때와 지금은 상황이 다릅니다. 업무와 분리된 상태로 신입사원 교육을 할 수 있었던 그 때의 상황과는 다르게, 지금 회사는 좀 더 스타트업과 비슷하게 일하는 분위기라 최대한 빨리 실전에 투입해야 하는 상황이었습니다. 그럼에도 불구하고 팀 내에서 여러 가지로 배려를 해 주셔서, 업무 투입 전에 여러 과제로 팀 내외의 사람들과 협업하는 경험을 제공할 수 있었습니다.

한편으로는, 신입사원(또는 신규 입사자)이 팀에 적응하기 위해서 어떤 것이 필요한 지 고민할 수 있었습니다. 일단 어떤 업무를 할 것인지, 입사 후 참고할 만한 자료를 정리해서 먼저 공유를 해 드렸는데요. 올해 입사하시는 분께는 이에 더해 개발 환경 구성을 자동화 하는 것을 목표로 삼으려고 합니다.

다음에 이런 기회가 있다면 시작부터 마무리까지 좀 제대로 해 보고 싶네요.

읽어주셔서 감사합니다.