2019 네이버 캠퍼스 핵데이 서머 참가 후기

2019. 7. 13. 17:16IT/Retrospective

들어가며

이 글은 2019 NAVER CAMPUS HACKDAY SUMMER에 참가한 후기를 작성한 글입니다.

해커톤으로 신입을 받는 기업이 있다?! 뿌슝빠슝

올해 2월에 있던 노마드코더 해커하우스에 참가했을 때의 일이다. 네이버에 재직 중인 민혁님과 같은 방을 쓰게 되었는데, 당시에 난 민혁님이 어느 회사에 다니는 지를 몰랐었는데 (어느 회사 다니는 지 물어보는게 실례처럼 느껴졌달까), 첫 날에 민혁님이 나에게 해줬던 말이 있었다.

혹시 생각 있으면 우리 회사도 와보세요. 저희 회사는 해커톤으로 신입을 뽑거든요.

그 때에는 막연하게 '해커톤으로 신입을 뽑는다니 꽤 특이한 기업이네' 정도로 생각하고 있었는데, 나중에서야 그게 네이버라는 걸 알게 되고 놀라 나자빠진 기억이 있다.

내가 알기로 네이버도 그렇고, 대부분의 IT 기업들이 신입보단 경력직이 훨씬 많이 근무하며, 채용도 경력직 위주로 행해지는 경향이 있다. 피터지게 경쟁하는 업종이다보니 바로 투입이 가능한 인재가 절실해서 그러는 것이리라. 그러나 그렇다한들 신입을 아예 안 뽑을 수는 없지 않겠나.


(흑흑 너무 슬퍼요)

그런 상황 속에서도 가뭄에 내리는 단비같이 신입이 들어갈 수 있는 기회는 생기기 마련이고, 네이버의 경우엔 CAMPUS HACKDAY가 그에 해당한다고 볼 수 있겠다. 이 캠퍼스 핵데이는 다음과 같은 특징들이 있다.

  1. 대학생 대상이다. 기졸업자는 불가능하다.
  2. 팀 별로 서로 다른 주제를 맡는다. 그리고 이들은 경쟁하지 않는다. 우수 팀 시상같은 건 따로 없으며, 24시간 동안 프로젝트를 열심히 만들고, 회고하고 집에 가면 된다.
  3. 멘토로부터 우수하다고 생각된 참가자는 인턴십 면접을 볼 수 있다.

기업에서 주최하는 대회에서 입사시 혜택을 주는 경우는 꽤나 빈번하니 특이하다고 볼 수는 없겠다. 참가가 된다면, 일단 네이버에서 주최하는 해커톤에 진출을 해보았다라는 경력이 한 줄 생기는 것이고, 그 중에서도 두각을 나타낸다면 네이버에서 인턴십까지 할 수 있게 되는 것이니, IT 개발자를 꿈꾸는 학생들이라면 누구든 가고 싶어할 것이다.

올해 상반기에 취준 코스프레를 하고 있던 나는 망설임없이 지원하기로 했다.

지원 과정

참가 신청

참가 신청은 무난했던 것 같다. 일단, 신청에 앞서 해커톤에서 지원할 수 있는 주제가 제공된다. 이번에는 37가지의 주제가 제공이 되었다.

이번 2019 네이버 캠퍼스 핵데이에서 제시되었던 주제들. 각 주제별로 제시되는 조건이 전부 다르다.

특이한 점은 각 주제들이 정말 달랐다는 것이다. 어떤 주제는 채용 연계형 인턴십과 연결되어 있었고, 또 다른 주제는 체험형 인턴십과 연결되어 있었다. 어떤 주제는 Java를 사용하는가 하면, 또 어떤 주제는 C++를 사용하도록 했다. 정말로 머리부터 발 끝까지 전부 다른 주제들 뿐이었다.

지원서를 작성할 때, 자기 소개 이외에, 내가 어떤 주제를 하고 싶은지를 작성해야만 했다. 총 2가지 주제를 선정해서 보낼 수 있었는데, 나는 미세먼지 데이터 시각화네이버 오픈API를 이용한 서비스 개발 두 가지를 지원했다. 사실 예전에 현미농을 이용해 미세먼지 앱을 만들어 봤기에 미세먼지 데이터 시각화를 1순위로 두고 싶었지만, 이 주제는 체험형 인턴십 연계였기에 어쩔 수 없이 2순위로 미루고 지원했다.

최종적으로 내가 하기로 결정된 주제는 네이버 오픈 API를 이용한 서비스 개발이었다.

코딩 테스트

지원 이후에 코딩 테스트를 봤다. 올해 봤던 코딩 테스트는 전부 다 프로그래머스에서 봤었는데, 이번에는 Codility에서 보게 되었다. 예전에 일본 취직 준비할 때에 한번 써본 적 있는 곳인데, 이렇게 다시 만나니까 기분이 묘했다.

테스트는 총 3문항이 영어로 나왔고, 굉장히 평이하지만 또 의외로 복병(?)이 숨어있는 문제가 나왔다. 특히 3번 문제는 효율성을 해결하는 부분이 다소 어려웠다. (결국 N^2의 시간복잡도로 제출해버리고 말았는데, NlogN으로 해결할 수도 있는 문제였다.)

그렇게 슥 하고 테스트를 제출하고, 아무런 기대도 안 하고 있었다. 그러고 얼마 안 가 라인 인턴십이 시작되어서 아주 까맣게 잊고 살았었다.

연차가 있었는데요, 없었습니다

조금씩 라인 인턴십에 적응해가고 있을 때, 갑자기 메일 한 통이 날아왔다. 캠퍼스 핵데이에 참가하라는 명령서(?)였다.

메일을 받았을 땐 믿기지가 않았고, 기분이 좋기도 했지만 곤란한 점이 있었다. 핵데이 일정이 목,금으로 진행된다는 것. 화목금으로 근무하고 있던 터라, 이틀을 아예 쉬어야하는 상황이 오고 말았다. 인턴 종료 때까지 연차를 쓸 일이 없겠구나 하고 생각하고 있었는데…

그래도, 내가 언제 대학생 신분으로, 네이버에서 주최하는 행사에 참가할 수 있을까! 라인 정규직 전환이 불투명한 상태이기도 했으니, 이 기회 또한 놓치고 싶지 않았다. 그래서 고심 끝에 연차를 올렸다.

한 가지 재미있던 점은, 해커하우스에 같이 참가했고, 서로 취준을 위해 정보를 공유하던 Geon Lee님도 캠퍼스 핵데이에 선정이 되었고, 심지어 같은 주제로 배정이 되었단 것이다.

노파심에 말하지만, 짜고 치기(?)같은 과정은 전혀 없었다.

멘토님과의 만남

핵데이 일정을 앞두고 멘토님, 다른 멘티들과의 만남이 잡혔다. 팀은 건님, 나, 그리고 또 다른 멘티분으로 3명의 멘티와, 1명의 멘토로 구성되어 있었다. 네이버 그린팩토리에서 만나 서로 어색하게 인사를 나누고, 핵데이 때 진행할 프로젝트에 대해 서로 이야기를 나눴다. 역할 분담은 어떻게 할 것인지, 기술 스택은 어떻게 쓸 것인지에 대해 의견 교환을 했고, 핵데이용 N클라우드 인스턴스도 받았다.

첫 만남 이후로는 멘티들끼리 몇 번 만나서 프로젝트를 준비하는 과정을 거쳤다. 프로젝트에 대해서는 아래에 서술하겠다.

핵데이 시작

핵데이는 춘천에 있는 네이버 커넥트원에서 진행되었다. 정말 시설들이 좋았는데, 안타깝게도 커넥트원은 사진 촬영 및 공개 게시를 금하고 있으므로 여기에서도 올릴 수가 없다. (이 좋은 걸 밖으로 보여줄 수 없다는 것이 참 아쉬울 따름이다.)

2시간동안 버스를 타고 가 커넥트 원에 도착했고, 도착한 지 얼마 되지 않아 24시간 카운트가 시작되었다. 15시부터 그 다음날 15시까지. 멘토님과 함께 바로 프로젝트에 착수했다.

열심히 프로젝트에 착수하는 우리 팀의 모습. 이건 네이버에서 찍어준 사진이라 공개해도 된다.

프로젝트의 골격은 대부분 건님의 아이디어에서 나왔다. 건님이 영화를 많이 보는 편이라, 우리의 프로젝트도 영화와 관련된 프로젝트로 결정이 되었고, 그에 맞춰서 상세 기능과 api를 정의하고, 그 다음 코딩이 착수되었다. 백엔드는 나 혼자, 다른 두 분이 프론트의 구성이었다.

그렇게 끊임없이 제공되는 간식을 섭취하며(헨젤과 그레텔인 줄 알았다.), 버그와 씨름하고, api를 뜯어고치고, 어느 게 더 좋은 방법일지 서로 설전을 벌이는 과정을 거치며 프로젝트를 조금씩 완성해갔다.

명목상 해커톤의 진행 시간은 24시간이었지만, 주최 측에서는 날밤을 새는 것을 권장하지 않았다. 철야를 하고 뒤늦게 잠이 든 사람들이 체크 아웃을 못 하는 등 차질들이 있었다고. 멘토님도 자정이 되자 자러 들어가셨고, 우리도 결국 눈치를 보다 3시에 자러 들어갔다.

물론 그래놓고 다시 7시에 일어나서 재빨리 다시 착수했다. 어찌되었건 결과물 완성은 해야했으니..

핵데이 종료, 그리고 회고

여차저차 프로젝트는 완료가 되었다. 본래 생각했던 스케일보다 조금 축소된 프로젝트가 되긴 했지만, 겉보기에는 나름 그럴싸하게 나왔다. 프론트 분들이 많이 힘써준 덕이었다고 생각한다.

그러나 나 스스로에겐 아쉬운 점이 많이 남았다.

  1. 나를 너무 과신한 나머지, 아직 익숙하지도 않은 Spring Boot로 구현하려다 낭패를 보았다.

원래 내가 다룰 줄 아는 백엔드 프레임워크는 node.js express였다. 핵데이는 한정된 시간 내에 어떻게든 결과물을 내야 했으므로, 익숙하기도 하고, 생산성이 좋은 express를 그대로 사용할까 싶었으나, 멘토님의 주력 기술이 Spring이었고, 나도 마침 인턴 과정 중에 Spring boot를 배우고 있었으니 이 참에 핵데이를 통해 내가 가진 지식을 더 고도화시키면 되겠다는 생각이 들어 Spring boot로 선회를 하였다.

그러나 그러기엔 내가 가진 지식이 너무 낮았고, 이를 멘토님이 커버해주는 데에도 한계가 있었다. (노하우 정도를 조언할 수는 있어도, 구현을 대신 해달라고 할 수는 없으니까) jdbcTemplate, restTemplate도 제대로 다루지 못해 쩔쩔맸고, 여러 초보적인 실수들이 많이 터졌다. 무엇보다도, 잦은 설계 변경이 내가 미처 예상하지 못한 변수였다. 노드와 달리 자바는 json을 그대로 쓸 수 없으니, API 스펙이 바뀔 때마다 클래스를 전부 수정해야만 했다. 나중에 듣기론, 이와 같은 이유로 해커톤에서 백엔드는 주로 장고, 루비 온 레일즈, 노드를 사용한다는 것을 알게 되었다.

그리고 회고에서 '그렇다면 과연 노드로 구현했을 때, 결과물이 더 잘 나왔을 것이라 생각하나?' 라는 질문도 받게 되었다. httpClient와 db를 사용하는 노드 프로젝트를 만들어 본 경험이 있었으니, 노드로 진행했을 경우 더 좋은 결과물이 나왔을 것이라고 난 개인적으로 생각하지만, 아무래도 그 분께는 '이 정도 문제도 핸들링하지 못하는 사람이 과연 프레임워크를 다른 걸 쓴다고 잘 극복할 수 있었을까?' 라고 보였던 것이 아닐까 싶은 생각이 들었다. 무엇보다도 본인의 실력이나 프레임워크의 특성을 잘 고려하여 올바른 선택을 하지 못했단 것 자체가 미숙하단 증거였으니, 그런 지적을 받아도 할 말이 없다고 생각이 된다.

  1. 해커톤에 대한 접근 방식이 적절하지 못 했다.

사실 우리의 프로젝트는 db에 넣을 자료가 조금 필요했다. 영화의 흥행에 관한 정보였는데, 적어도 1년치 정보는 확보해야만 했다. 여기에 사용하는 데이터들은 하나의 소스에서만 나오는 것이 아니라, 여러 사이트에서 제공하는 api를 조합하여 적절히 가공하는 것이었다. 기획 단계에서는 이 부분이 크게 어렵지 않을 것이라 예상했는데, 이 부분이 사실 프로젝트의 진행을 더디게 하는 원흉이었다.

핵데이 이전에 준비 기간이 충분했음에도 불구하고, 데이터 가공에 집착한 나머지 난 핵데이 시작하고 나서야 백엔드 프로젝트를 시작할 수 있었고, 그 결과 멘토님께 정말 멍청한 질문들을 해야 했다. 아마 멘토님은 표현은 안 했지만 '아니, 이런 기초적인 질문을 이제서야 물어본다고?' 싶었을 것이다. 3년치 이불킥 흑역사다.

회고 때도 멘토님이 이 부분을 집어서 '데이터 수집 및 가공에 대한 시간을 대폭 줄이고, 프로젝트 자체에 집중하는 것이 좋았을 것 같다'는 평가를 주셨다. 사실, 나도 이 부분은 고민을 했었다.

  • 좀처럼 오지 않는, 네이버 개발자와의 해커톤이니, 멘토님의 도움을 적극적으로 받아 데이터 수집 문제를 해결하는 것이 맞을지
  • 이런 문제들을 스스로 해결하는 과정이야 말로 더 좋은 개발자로 거듭나는 방법이 아닐지

..를 고민하다 결국, 나는 후자로 결론을 내리고, 멘토님 도움 없이 이를 해결하려다 많은 시간을 빼앗기게 되었다. 멘토님은 '앞으로 해커톤에 참가할 일이 있다면, 지원받을 수 있는 부분은 전부 지원받도록 하는 게 좋다. 말 그대로 해커톤에서만 주어지는 혜택 아닌가' 라는 조언으로 전자가 더 적절한 결론이었음을 확인시켜 주셨다.

님은 저희와 함께 가실 수 없습니다

다시 인턴으로 돌아가 일을 하고 있다보니 결과 메일이 날아왔다. 네이버 인턴십 면접 대상자가 되지 못했다는 메일이었다. 어느정도 예상하고 있었던 부분이었기에, 실망스럽거나 그렇지는 않았다.

대신, 프로젝트를 주도적으로 진행했던 건님은 면접 대상자가 되어, 면접을 보러 갔고, 현재 네이버에서 인턴 일을 하고 있다. 건님을 오래 보진 않았지만, 포텐셜을 많이 가지고 있는 사람인데(개인적으로 나보다 많이 뛰어나다고 생각한다.) 생각처럼 기업에서 주목을 안 해주는 것 같아 친구로서 안타까움을 조금 느끼고 있었다. 이제서야 빛을 발했다는 느낌이 들어 오히려 기분이 좋다.

..라고 써놨더니 건님이 깨알같이 자기 블로그 홍보도 좀 하라고 해서 덧붙인다. 여기에서 응원해주도록 하자

이 경험을 잊지 말자

연차 이틀과 바꿀 가치가 충분한 행사였다. 취준생 입장에서, 네이버 현직 개발자를 곁에 두고 프로젝트를 해볼 기회가 어디 흔할까. 나로선 정말 과분한 경험을 했다고 생각했고, 다들 합심하여 프로젝트에 골몰하는 모습을 보며, '나도 아직 한참을 더 달려야겠구나' 싶은 자극도 많이 받았다. 2달이 채 안되는 시간이 지나면서 난 더 이상 취준생이 아니게 되었지만, 그 때의 심정은 계속 가져가야겠다는 생각이 든다.

하.. 내일 모레 출근해야 해..