[네이버 부스트캠프 AI Tech 4기] 지원 ~ 합격 후기

Jewon Joel Park·2023년 2월 6일
0
post-thumbnail
일단 초반부에선 필자가 어떤 길을 걸어왔고
무슨 생각으로 부스트캠프에 지원했는지를 서술할 계획이오니, 

'닥치고 합격 후기 내놔라'

하시는 분들은 스크롤을 내려서 확인하시기 바랍니다.
3줄 요약도 있음

프로그래밍을 시작한 계기

이전 회사에 입사 지원 하면서 제출했던 자기소개서의 일부를 소개하고 싶다.

[31살, 인생의 전환점: 프로그래밍]
...(중략)...
그러던 2020년 1월 퇴사 이후, 휴식기를 가지며 정말 제가 좋아하고 잘 할 수 있는 일이 무엇이 있는지 고찰하다, 관심은 많았지만 섣불리 시작하지 못했던 프로그래밍에 도전해보자는 생각이 들어 Python을 독학하게 되었습니다. 내가 필요로 하는 프로그램을 직접 만들어 사용할 수 있다는 점에 즐거움을 느꼈고, 잘못 작성한 코드를 수정하여 정상적으로 작동하게 만들었을 때의 희열이 잊혀지지 않아 제대로 배워야겠다는 생각을 하게 되어 Java와 Python을 활용한 빅데이터 관련 직업훈련을 받게 되었고, 관련 자격증인 정보처리기사에 응시하여 최종 합격까지 이룰 수 있었습니다.
...(후략)...

그렇다.

그냥 코드짜고 그 코드가 제대로 돌아가는게
그저 즐겁기만한 변태라서 그렇다.


부스트캠프 AI Tech 지원 계기

To be honest, 부캠 수료하면 '짜자잔'하고 ML/DL 엔지니어가 될 수 있을 것만 같았다.

조금 더 보태보자면, Backend Engineer로 근무하면서 봤던 ML Engineer들은 연차가 비슷해도 돈을 더 받아가는 것 같아서 내심 부러웠던 것도 있다.
그리고 그 지식 수준은 언제나 내 선망의 대상이었다.

더군다나 입사 동기였던 6살 어린 동생(갓 대학교 졸업하고 입사)한테 부스트캠프 얘기를 꺼냈더니, 그냥 극찬이 쏟아졌다.

'지인 중에 부캠 수료한 사람이 있는데, 어지간해선 서류는 다 통과하고 회사 골라가는 느낌이다' 부터, '커리큘럼도 탄탄하고 국내에선 최고 수준이라고 봐도 된다' 등등 사람 구미 당기게 영업을 굉장히 잘했던 것 같고, 나도 영업을 잘 당해버렸다.

(ML/DL 분야에서 석사가 우대되는 이유는 부캠을 헤쳐나가면서 자연스럽게 체감하게 되니 너무 걱정하지 않아도 된다..)

Anyway, in short words, 똑똑해져서 돈 많이 벌고 싶었다.


Computer Vision Track을 선택한 이유

첫 번째 이유는 그냥 '친숙해서'이다.
왜 이렇게 싱겁냐고 할 수 있겠지만, 항상 이럴 때 나오는게 어깨 너머로 배운 도둑질 아니겠는가.

예전 회사에서 했던 업무가 그저 Backend에 한정된 것이 아니라 인공위성 영상(Image) 정보를 처리해야 했는데, 덕분에 np.array()라거나 cv2.imread() 같은 라이브러리와 함수들을 꾸준히 다뤄 어느 정도 친숙했던 상태였다.

이 것은 곳 두 번째 이유와도 연결되는데, 같은 팀 팀원이라고 BE(나), FE(후배), CV(동기) 이렇게 3명 있는 와중에 CV 엔지니어가 인도 사람이었기 때문이다.

'CV 엔지니어가 인도 사람인게 뭐 어쩌라고?'

  • 얘가 일단 성격도 밝은데다 업무 스타일이 굉장히 잘 맞았고
  • 내가 데이터를 받아서 얘한테 건내준 뒤에, 산출된 결과물을 내가 처리하는 프로세스였으며
  • 한국어를 조금 할 줄 알긴 하지만 여전히 영어가 편한데, 때마침 내가 Ex-Ex 직장에서 영어로 밥을 벌어먹었었고
  • 바로 옆자리에 나란히 앉아 있었으며
  • 둘 다 흡연자였고 술을 좋아하며
  • 하필 집이 같은 동네였다.

이 정도면 충분히 납득할만한 이유가 됐으리라고 생각된다.

얘랑 담배피러 나갔다가 들어오면서 Small-talk으로 듣게되는 CV 관련 지식은
업무 효율에도 엄청나게 긍정적인 영향을 끼쳤고,
시간이 지나면서 자연스럽게 Computer Vision이라는 도메인에 관심을 가지게 된 것이다.

그래서인지 필자는 NLP, RecSys는 아얘 거들떠도 안보고 CV를 선택했다.


모집 일정과 지원 준비

Ex 회사를 퇴사한 날짜는 datetime.date(2022, 2, 28)로, AI Tech 3기 모집이 끝나고 한 달 정도 지난 시점이었다.

당시에는 고장난 몸 때문에 한참 병원을 다닐 때라
휴식이 필요했고, 4기를 준비하기로 결정했다.

그렇다면 다음 기수는 대략 언제쯤 모집을 시작하는지 파악해야하지 않겠는가?

우리 Engineer들은 언제나 Data에 기반한 분석을 해야한다.
이제 이전 기수들의 모집 시기를 찾아보자

"""AI Boostcamp 1기"""

start_date = datetime.date(2021, 1, 18)
end_date = datetime.date(2021, 6, 25)
period = end_date - start_date  # 158
# 159일 중 110일 / 주말: 44일
# 연휴: 구정(5일), 삼일절, 휴식(03.23.~26./4일), 어린이날, 석가탄신일, 마지막 3일

# 자가진단 테스트: https://blog.naver.com/boostcamp_official/222142410782
apply_start = datetime.date(2020, 11, 16)
apply_end = datetime.date(2020, 12, 14)
ai_test = datetime.date(2020, 12, 16)  # BAT(부스트캠프 AI 테스트)

coding_test_1st = datetime.date(2020, 12, 22)  # 화요일
coding_test_2nd = datetime.date(2021, 1, 5)  # 화요일
announce = datetime.date(2021, 1, 8)

hrd_apply_start = datetime.date(2021, 1, 11)
hrd_apply_end = datetime.date(2021, 1, 15)
# 합격수기: https://zhonya-j.tistory.com/11

(나름 변수명 이해하기 쉽게 잘 적어놨으니 찬찬히 보시길..)

"""AI Boostcamp 2기"""

start_date = datetime.date(2021, 8, 2)
end_date = datetime.date(2021, 12, 27)
period = end_date - start_date  # 147
# 148일 중 100일 / 주말: 42일
# 연휴: 광복절(대체), 추석(3일), 개천절(대체), 한글날(대체)

# 자가진단 테스트: https://blog.naver.com/boostcamp_official/222345119688
apply_start = datetime.date(2021, 5, 12)
apply_end = datetime.date(2021, 6, 13)

coding_test_1st = datetime.date(2021, 6, 17)  # 목요일
coding_test_2nd = datetime.date(2021, 7, 2)  # 금요일
announce = datetime.date(2021, 7, 13)

orientation = datetime.date(2021, 7, 16)
precourse_end = datetime.date(2021, 8, 1)

2기에는 AI 테스트가 없었다.. 뭔가 찝찝했다.

"""AI Boostcamp 3기"""

precourse_start = datetime.date(2021, 10, 25)
precourse_end = datetime.date(2022, 1, 16)
# Precourse 링크: https://www.boostcourse.org/onlyboostcampaitech3

start_date = datetime.date(2022, 1, 17)
end_date = datetime.date(2022, 6, 15)
period = end_date - start_date  # 149
# 150일 중 100일 / 주말: 42일
# 연휴: 구정(3일), 삼일절, 대선, 어린이날, 지방선거, 현충일

# 자가진단 테스트: https://blog.naver.com/boostcamp_official/222543585249
apply_start = datetime.datetime(2021, 10, 25, 11, 00)
apply_end = datetime.datetime(2021, 12, 6, 10, 00)

ai_test_1st = datetime.datetime(2021, 12, 10, 19, 00) + datetime.timedelta(hours=2) # 금요일

precourse_duedate = datetime.datetime(2021, 12, 13, 18, 00)  # Pre-Course 수료증 제출 시 선발 심사 우대

ai_test_2nd = datetime.datetime(2021, 12, 18, 13, 00) + datetime.timedelta(hours=2) # 토요일
announce = datetime.datetime(2021, 12, 29)

hrd_apply_start = datetime.date(2021, 12, 29)
hrd_apply_end = datetime.datetime(2021, 12, 31, 17, 00)

갑자기 테스트 명칭이 코테에서 AI 역량 테스트로 바꼈다.
그리고 date 객체였던 정보들이 datetime으로 무더기로 변경됐으며
Pre-course 수료증 제출 시 심사 우대가 있다고 한다.
(남들 다 제출하는 수료증, 제출 안하면 감점이라고 생각하는게 속 편하다)

아무튼 이렇게 자료를 종합하고 보니, 대략적인 4기 모집 일정의 윤곽이 잡혔다.

"""AI Boostcamp 4기 예상"""

apply_start = datetime.date(2022, 6, 13)
apply_end = datetime.date(2022, 7, 15)

아직 한참 남았네? 싶어서 로스트아크를 굉장히 열심히했다.
로아 성장표


예상 1차 코테 시험일 1개월 전

게임만 하다보니 똥줄이 타기 시작했고, 4기 오픈 채팅방에도 사람들이 하나 둘씩 들어오기 시작했다.
멍하니 넋놓고 있을 수 없어서 코테 스터디에 참여하기로 했다.

스터디라는 건 대학교 다닐 때 조차 단 한 번도 해본 적이 없었던 데다가, 코딩테스트 준비였기 때문에 굉장히 긴장됐던 것 같다.

생각날 때마다 백준이나 프로그래머스에서 한 두 문제씩 풀고 블로그에 정리했었는데,
스터디장이 지원자가 많다며 뭐든 좋으니 코딩 실력 보여줄 수 있는 걸 달라고 하길래
블로그 주소를 줬었던 기억이 난다.

다행히 스터디장은 내 블로그 포스팅에 만족했고... 그렇게 모인 7명이 스터디 일정을 세우게 되는데, 백수 나부랭이였던 필자는 오전팀에 지원해서 오전팀 3명 / 오후팀 4명으로 나뉘었다.

이 때 오후팀은 스터디를 하는지 안하는지 모를 정도로 조용했고, 오전팀(스터디장, 나, 미래의 캠퍼 1명)은 주 3회 각자 2문제씩 매주 총 18문제를 한 달 가량 공부했다.
(나중에 들어보니 오후팀은 리드하는 사람이 없어서 파토났다고 했었다)

프로그래머스 Level1 부터 시작했고, 끝날 때 쯤 되니 Level2 문제를 거의 다 풀었던 걸로 기억한다.

한참 코테 스터디 + 로스트아크로 하루를 보내던 중, 한 통의 이메일을 받았다.
모집공고 등록 안내 이메일

우리 Engineer들은 언제나 Data에 기반한 분석을 해야한다.

명심하자.

"""AI Boostcamp 4기"""

precourse_start = datetime.date(2022, 6, 20)
precourse_end = datetime.date(2022, 9, 19)

start_date = datetime.date(2022, 9, 19)
end_date = datetime.date(2023, 2, 14)
period = end_date - start_date  # 148
# 149일 중 100일 / 주말: 42일
# 연휴: 개천절, 한글날(대체), 휴식(12.28. ~ 30. / 3일), 구정(1.23. ~ 24. / 2일)

# 자가진단 테스트: Pre-course로 병합
apply_start = datetime.date(2022, 6, 20)
apply_end = datetime.datetime(2022, 8, 1, 10, 00)

ai_test_1st = datetime.datetime(2022, 8, 4, 19, 30) + datetime.timedelta(hours=2) # 목요일

precourse_duedate = datetime.datetime(2022, 8, 7, 23, 59)  # Pre-Course 수료증 제출 시 선발 심사 우대

coding_test = datetime.datetime(2022, 8, 20, 14, 00) + datetime.timedelta(hours=2) # 토요일
announce = datetime.date(2022, 8, 26)

지원서 작성

다른 사람들은 어떤지 모르겠는데, 나는 지원서 작성이 굉장히 중요하다고 생각했다.

  • 평소에 부캠에 대해서 얼마나 관심이 있었는가
  • 내가 얼마나 열정적으로 몰입할 수 있는 사람인가
  • 협업을 통해 그 동안 무엇을 배우고 어떤 것을 느꼈는가

를 잘 어필한다면 분명 좋은 결과가 있을 것만 같다는 느낌적인 느낌이 있었다.
그래서 후기들을 찾아보며 지원서 예상 서술 항목을 미리 작성해놓고 여러번 검토했다.
(나중에 알게 된 사실이지만 지원서 서술 문항은 유출하면 안된다. 그래서 나도 안알랴줌)

아니나 다를까 500자 내외 2~3문항은 준비했던 내용에서 크게 다르지 않았고,
모집 공고가 올라온 지 몇시간 지나지 않은 시점에 바로 지원서를 낼 수 있었다.

지원서 제출 완료 확인 이메일

사실 이 부분은 입사 지원에서도 비슷하다고 생각한다. 채용공고 올린지 얼마 안됐는데 회사를 잘 알고 있는 것 같은 녀석이 준비 착실히해서 지원했으면 나쁘게 볼 수가 없다.


온라인 AI 역량테스트 준비

기수가 거듭될 때마다 테스트의 이름이 바뀌어서 헷갈릴 수도 있는데, 그냥 1차 코테 + AI 기초지식 평가이다.

솔직히 7차 교육과정에서 수학을 들었던 문과생 입장으로는 (미적분 안배움) 선형대수가 진짜 지옥처럼 느껴졌다. 특히 국문과 공대생님 블로그 합격 후기 이거 보고 지레 겁을 집어먹어서 책을 무더기로 샀던 것 같다.

그냥 Pre-course 열심히 듣고 (진짜 중요하다. 프리코스만 잘 듣고, 이해 안되면 달달 외우기만 해도 어지간하면 다 풀 수 있음), 이해가 잘 안된다 싶으면 YouTube를 잘 뒤져보자.
(개인적으로 이상엽 수학 도움을 많이 받았다. 선생님 감사합니다 ㅠㅠ)

그 외적으로 코딩테스트 준비도 해야하는데, 스터디에서 준비하는 부분에 더해서 자료구조 + 알고리즘을 보강해야 겠다고 생각했다. 그래서 누구나 자료 구조와 알고리즘 이 책으로 공부했는데, 절반 정도 밖에 읽지 못한 상태에서 코테를 친 건 함정이다.


온라인 AI 역량테스트

어느 후기를 보던 간에 CNN, RNN 문제는 무조건 나온다고 했고, Pre-course 들으면서도 중요하다고 생각했고. 여지없이 문제로 나왔다.
솔직히 수학 + AI 기초지식은 걱정했던 거에 비하면 쉽게 나왔는데, 코테가 진짜 어려웠다.

5문제 나왔는데 2문제는 체감상 백준 Gold+ 느낌이었다.
(나머지는 쉽게 풀었던 것 같다. 대충 예상하기로 2~3솔 컷)

조짐당했다 짤방

조졌다고 생각했지만, 고작 1차 평가로 사람을 대거 탈락시킬 것 같은 느낌이 들지 않았다.

  • 각 단계마다 몇 배수로 뽑는지 말을 안해준다.
  • 대신 돌아오는 대답은 '역량이 충분한 사람을 뽑기 위한 단계이다'..

나는 '역량이 미달인 사람을 걸러내겠다'라는 말을 할 수는 없으니 저렇게 말하지 않았을까 싶었기에, 한 줄기 희망의 끈을 놓지 않고 일단 2차 코테를 준비하기 시작했다.


온라인 코딩 테스트

재수가 좋았던 것일까, 1차 심사 합격 이메일을 받을 수 있었다.
1차 합격자 통보 이메일

하지만 이메일을 받은 시점부터 1주 뒤가 바로 코테라서 심적으로 압박이 느껴졌고, 우리 코테 스터디 다른 멤버들도 마찬가지였다.

이 때 만큼은 로스트아크 접속시간을 대폭 줄이고 코테 문제 풀이에 집중했다.

알고리즘 책도 틈틈이 보고 있었지만 독파할 시간은 부족하다고 생각해서 만능툴 YouTube를 또 소환했다.

  • 동빈나 - 이코테2021 재생목록을 잘 때도 틀어놓고 잤고, 나중에 고마워서 책도 샀다.
  • 개발자 장고 - 재생목록 들어가면 코딩테스트 필수 알고리즘이 정리돼있는데, 기술적으로 배울 점이 많다는 생각이 들었다.

총 8문제가 나왔는데, 안타깝지만 어떤 유형이 무슨 난이도로 나왔는지 너무 오래돼서 기억이 안난다.
(이 글을 읽고 있을 정도라면 다른 블로그에서 해당 정보를 이미 봤을 것이라 믿어 의심치 않음)

문제는 이 날 점심에 너무 배고파서 불닭볶음면을 먹었다는 건데, 시험 치르다가 염라대왕이랑 백화수복 대작할 뻔했다.
총 2시간 중 40분 만에 5문제 후닥닥 풀고 1시간 하자마자 시험 종료 누르고 화장실로 달려갔다.

그 순간 '지리지 않았다'라는 안도감과, '이번에는 진짜 조져버리고 말았다' 라는 탄식이 복합적으로 느껴졌고, 시험이 완전히 끝나고 나올 다른 사람들의 후기가 궁금해졌다.

여지없이 시험이 끝나자마자 오픈채팅방은 불타기 시작했는데, 문제를 분석하는 사람들과 채팅방을 나가는 사람들의 희비가 교차하는 장면이 아직도 뇌리에 남아있다.

와중에 몇문제 풀었는지 트랙별로 조사하는 설문이 올라왔는데, NLP, RecSys에 비해서 CV의 평균 점수가 상대적으로 낮다는 걸 알 수 있었다. 이유를 정확히 알 수는 없으나, 아무래도 모수가 크다보니 전체적인 분산도와 편차가 크다고 해석할 수 있는 여지가 있다고 본다.
(당시에 캡쳐해놓은 설문조사가 KDT전형 전체를 대상으로 하는 것 밖에 없어서 죄송)
오픈톡방 KDT 솔루션 수 집계

5솔이라는 애매한 성적에 전전긍긍 하고 있었는데, 스터디장의 상태가 좋지 않았다.
평소의 예리하고 자신감 넘치던 모습은 어디가고, 잘 못풀었다는 안타까움에 실망이 가득 찬 모습만 남아서 나까지 안타까웠었다.

그 와중에 스터디 내 다른 1명의 예비 캠퍼는 무려 7솔을 해냈다.. 주력 언어가 Java였고 Python은 우리 스터디 시작하고 본격적으로 한 거라던데, 기본적으로 감각이 좋은 사람인 것 같았고 나중에 본 과정에서 질문하는 내용들을 보니 그 생각이 틀림없이 맞았다고 생각했다.


최종 합격

최종 합격 통보 이메일

문을 닫고 합격했건 문을 열고 합격했건, 붙었으면 붙은 거다.


3줄 요약

  1. 미리 계획을 세우고 잘 준비해서 모집공고 올라오자마자 지원서 제출함
  2. 코테 스터디도 하고 알고리즘 준비도 열심히 했는데 코테에서 똥을 쌌음 (실제로 쌈, 지리지는 않음)
  3. 문 닫고 들어온 것 같은데, 어쨌든 붙었음

다음 편 (2부) 예고

  • Level1에서 어떤 것들을 배웠나
  • Level1에서 어떤 사람들을 만났나
  • Level1 때 멘탈이 가출했던 이야기
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글