본문 바로가기

분류없음

인턴 준비 해본 후기

안녕하세요, 블로그에는 오랜만인것 같습니다. 그동안 많은 일이 있었고 저는 19년 1월부터 2월까지 약 2개월간 강남에 있는 M사에서 인턴을 하게 되었습니다. 생각해보니 제가 프로그래밍을 처음 할 때는 상상도 못하던 일이었네요. 이 글에서는 인턴 준비를 해본 후기를 적어보려 합니다 :)

고등학교 입학

일단 나는 대졸자가 아니고 2020년에 졸업하는 고등학생이다. 중학교때 처음 프로그래밍을 관심을 가져서 어쩌다가 대덕소프트웨어마이스터고라는 좀 특이한 고등학교를 들어가게 되었고 처음에는 선배 몇분의 영향으로 딥러닝을 공부하게 되었고 지금은 백앤드 쪽을 하고 있다.

백엔드 개발을 처음 하게 된 계기는 학교 입학시스템 개발팀이었던 것 같다. 그렇게 1학년때 몇개월동안 Node.JS를 공부하면서 접수된 원서 관리 시스템의 일부를 작업했었는데 1학년 때는 딥러닝 공부를 더 하느라 제대로 된 코드를 짜진 못했던것 같다.

그렇게 1학년 말까지 딥러닝 공부를 하고 있었는데 과연 딥러닝으로 내가 벌어먹고 살수 있을까 라는 근본적인 질문에 봉착하고 재미가 딱 떨어지면서 꽤 심각한 슬럼프 비슷한 상태에 빠지고 그후 어쩌다가 다시 그나마 해 본 백앤드 개발 분야를 하기로 결정했을 때는 벌써, 2018년 2~3월이었다. 그때 Flask를 접하게 되었고 그때부터 Flask로 개발을 시작했다.

백앤드 개발자가 되자

뒤늦게 백앤드 공부를 시작했을 때 단 한가지 목표를 가지고 공부를 시작했다. "경력같은 신입이 되자" 그러기 위해서 1학년때와는 다르게 공부했다. 플라스크를 위한 유지보수 가능한 대용량 애플리케이션 구조나 DB 모델링이나 Docker, AWS 등 프로덕션에 밀접한 기술 중심으로 공부를 하기 시작했다.

프로젝트

경력같은 신입이 되기 위해서 가장 중요한 건 프로젝트를 통해 경험의 부족을 채우는것 같다. 다행히 나는 두가지의 프로젝트를 하면서 경험의 부족을 조금이나마 극복하게 되었다. 첫번째는 학교 입학전형시스템의 면접시스템 부분, 두번째는 학교 조별과제(...)다.

특히 작년에는 제대로 참여하지 못했던 입학전형시스템에 온전히 힘을 쏟기 시작해 2차 전형인 면접 시스템을 개발하게 된 것이 가장 좋은 경험이었으며 나에겐 큰 터닝 포인트였다. 백앤드 개발은 실 서비스 개발 경험이 중요한데 학교 안에 있으면서도 실제로 서비스하는 프로젝트에서 중요한 역할이 되면서 자연스럽게 목표가 생기고, 그 목표에 맞추어 공부를 할 수 있었다. 조별과제는 GraphQL을 실제로 적용해본 첫 프로젝트였고 처음으로 AWS를 실제로 사용해보면서 새로운 기술을 시험할 수 있는 좋은 기회였다.

그 밖에도 Viper 팀에서 Flask 익스텐션 몇가지를 만들어 릴리즈하기도 했고 Flask-GraphQL을 위한 대용량 애플리케이션 구조를 공개하는 등 오픈소스 활동을 하는 등 개인 프로젝트도 진행했다.

포트폴리오 정리

프로젝트를 하던 중 이제 슬슬 포트폴리오를 한번 정리해 보는게 좋겠다는 생각이 들었다. 포트폴리오는 Zety라는 온라인 서비스를 통해서 쉽게 작성했고 유우영 님 덕분에 권문범님께 1대1로(!!) 첨삭을 받을 수 있었다.(감사합니다 ㅜㅜ) 권문범님께서 해주신 충고 중 가장 와닿았던 것은 이력서가 단순히 내가 해본 것들의 나열이 아니라 면접관이 나를 알 수 있도록 WHY와 HOW가 나타나 있는 경험이 느껴지는 이력서가 되어야 한다는 것이다.

인턴 기회 레이더 가동!

6월쯤 되어서 어느정도 자신감이 붙을 무렵 이제 본격적으로 인턴 기회를 찾아봐야겠다는 생각이 들기 시작했다. 그리고 그 기회는 PyCon KR 2018에서 찾아보자는 생각을 하게 되었다. 그리고 관심이 있었던 Sanic 관련 발표자 분이 소속된 M사에서 인턴을 뽑는다는 것을 알게 되었다.

면접

다행히 첫 시도임에도 불구하고 바로 면접을 보게 되었고 면접은 코딩 테스트와 백앤드 개발자 면담을 통해서 이루어진다는 메일을 받았다. 문제는 코딩테스트였다. 코딩테스트를 어떻게 준비해야 잘 봤다고 소문이 날까?

알고리즘을 잘 하지 못했기 때문에 면접까지 남은 5일 남짓한 기간동안 코딩테스트를 준비하기는 쉽지 않았다. 또한 선택과 집중을 해야했기 때문에 주로 다이내믹 프로그래밍 관련 문제를 풀었다. 또한 선배와 친구들에게 많은 도움과 조언을 받았다.

코딩테스트는 상당히 자유로운 분위기에서 치러졌다. 노트북을 모니터에 연결한 다음 코딩테스트를 푸는것을 개발자 분들에게 설명하는 방식이었다. 구글을 검색하든 스택오버플로우를 검색하든 상관없었다. 30분동안 문제를 풀면서 개발자 분들에게 내 풀이를 설명하면서 풀었는데 개발자 분들깨서 힌트를 주시기도 하는등 꽤 재밌게 풀었다.

코딩테스트 준비를 하면서 여러 사람의 경험을 들어보고 실제로 해 보니 코딩테스트는 알고리즘 테스트가 아니라 문제 해결 스타일을 본다는 것이 맞는 표현인것 같다. 문제 해결은 알고리즘만으로 이루어지는것이 아니기 때문에 많은 회사가 커뮤니케이션 스킬 검증을 위해 코딩 테스트를 하면서 설명을 요구하기도 한다고 하고 나같은 경우에는 구글링을 허용되기도 했다.

코딩테스트가 끝난 후 제출한 이력서 기반으로 면접을 보았다. 면접은 그냥 백앤드 개발자 분들이랑 개발 관련 이야기 했는데 인프라 이야기가 좀 나왔었다.

결과

놀랍게도 첫 면접임에도 불구하고 합격했다. 학생인지라 2개월 조금 안되는 겨울방학 일정 때문에 아쉽긴 하지만 19년 1월부터 2월 말까지 인턴을 하게 되었다. 
그러나 내가 너무 과대평가 된것이 아닌가 하는 불안감은 여전히 존재하기 때문에 여기서 멈추지 않고 남은 프로젝트들을 끝까지 완수하고 더 많은 공부를 해야할것 같다.