[회고] 우테코 6기 최종 합격 회고록
우아한 테크 코스 (이하 우테코)의 선발과정을 돌아보고, 경험을 공유하기 위해 회고록을 적어 본다.
우테코를 지원한 이유
나는 3학년때 방황을 했다. 혹시나 해서 말인데, 마냥 놀았다는 이야기는 아니다. 꿈을 찾아 복수전공한 컴퓨터학부였으나, 컴퓨터학부에서 갈라지는 분야는 너무 많았다. 내가 하고 싶은 것을 찾아야겠다고 생각했다.
많은 친구들이 AI로 진로를 정해 나아가고 있었기에 AI에 관심이 생겼다. 어떤 학문인지, 어떤 일을 하는지 등은 직접 겪어보기 전에는 알지 못하는 것이지 않은가? 그래서 나는 "경험해 보기 위해" 인공지능을 공부했다.
결과적으로 AI를 공부하고 있지는 않지만, 상관없다. 논문들을 읽으며 나는 코딩을 하고싶다는 것을 깨달았으니까.
사실 이제 와서야 말하는데, 근 1년간 나는 우친놈(우테코에 미친 놈)이었다. 오죽하면, 지금 당장은 네이버 신입 공채보다 우테코가 더 간절하다고 입이 닳도록 말을 하고 다녔으니... 물론, 이런 나 역시 우아한 테크 코스를 취업 시켜주는 요술 지팡이 즈음으로 생각하고 있지는 않았다. 다만, 컴퓨터 학부를 복수전공 했기 때문에 개발 이야기를 나눌 친구가 정말 너무 필요했다. 나와 같은 관심사를 공유하는, 개발에 진심인 사람들이 모여있는 곳이 우테코라고 생각했고, 우테코에 가면 정말 크게 성장할 수 있을 것이라 생각했다.
게다가, 우테코가 내세운 슬로건은 너무 멋있지 않은가...! "개발 생태계에 선한 영향력을" 이라니. 어쩌면 자취방에서 끼니를 때울 때 마다 테코톡 영상을 찾아보며 우테코는 나에게 꿈의 세계가 되어 가고 있었는지도 모르겠다.
우테코 지원
우테코의 지원서 항목은 우테코 홈페이지에 나와있다.
https://www.woowacourse.io/apply
그리고, 언젠가 내 글을 읽게 될 다음 기수 지원자들이 있다면, 지원서부터 최선을 다해 작성을 하라는 말을 하고 싶다.
선배 크루들이 우테코를 경험하며 경험을 공유한 우테코 한달 생활기가 우아한 테크 블로그에 작성되어 있으니 우테코에 관심있는 지원자들은 이 글도 한번 읽어보는 것을 추천한다. 선배 크루들의 일상과 경험들을 읽으며 우테코 생활을 미리 상상할 수 있고, 무엇보다 큰 동기부여를 받을 수 있다. 우아한형제들 기술 블로그에서 "생활기"라는 키워드로 검색을 하면 해당 기수의 생활기 중 투표수가 많은 생활기를 볼 수 있으며, 구글 검색창에 "우테코 한달 생활기" 등의 키워드로 검색을 해도 이전 기수 크루들의 한달 생활기를 찾아볼 수 있다.
https://techblog.woowahan.com/?s=%EC%83%9D%ED%99%9C%EA%B8%B0
(5기 백엔드 파트 리오님의 한달 생활기는 약 1년간 나의 핸드폰 배경화면이었다. 나에게 정말 큰 동기부여가 되어 준 리오님께 감사드린다.)
우테코에서는 꾸준히 자신들이 원하는 크루의 모습에 대한 힌트를 흘린다. 자소서 항목도 그랬고, 프리코스 OT도 그랬다. 내가 생각했던 우테코가 원하는 사람은 "무언가에 정말 몰입해 본 사람, 그리고 개발에 이만큼 몰입할 수 있는 사람" 이었다. 나는 "몰입"을 분야에 대한 "열정"의 결과물이라 생각한다. 그렇기에 지원서에서는 꾸준히 나의 열정을 어필하려고 노력했다. 단순히 "이렇게 욕심이 있어요" 라는 생각이 아닌, "이런 욕심이 있기에 이런 경험을 했어요" 라는 경험을 적어내려 가는 것은 자소서를 어느 정도 써본 사람에겐 당연해지는 진정성 부여! 정말 어떤 분야라도 괜찮으니 내가 정말 사랑했던 분야, 내가 정말 노력했던 활동 등을 적으면 좋을 것 같다.
프리코스
6기의 프리코스는 우테코 지원자 모두에게 프리코스 참가 자격을 부여했다. 이전까지의 많은 프리코스 참가자를 통해 프리코스 기간동안 크게 성장했다는 피드백을 받으며 이런 성장의 기회를 더 많은 사람에게 제공하기 위한 선택이라고 한다. 그리고, 정말 프리코스는 참여하는 만큼 배워갈 수 있는 정말 좋은 성장 기회라고 생각한다.
1. 코드 리뷰
프리코스를 하면서 지원자들은 코드 리뷰를 할 수 있는 기회가 주어진다. (우테코 측에서 코드 리뷰를 요구하지는 않는다만, 우테코에서 만들어 준 커뮤니티가 있었는데 커뮤니티 내에서 매우 활발하게 코드 리뷰가 이루어졌다.) 그리고, 코드 리뷰는 누군가에게 나의 코드를 설명해야 했으며, 다른 사람의 코드를 설명받을 수 있었다. 나의 코드의 의도를 문장으로 구체화하면서 내가 가지고 있던 개념을 확실히 새길 수 있고, 다른 누군가의 설명을 통해 내가 모르고 있던 새로운 지식들을 배울 수 있다.
2. 공통 피드백
공통 피드백에서는 객체지향적 설계를 위한 다양한 피드백이 주어진다. 그리고, 이 중 몇몇 피드백은 당장 읽었을 때 납득이 되지 않을 때도 있다. 나의 경우 이 때 부터가 성장의 시작이었던 것 같다. 정말 개인적인 의견이지만, 공통 피드백을 무조건 정답으로 받아들이지 말았으면 한다. 왜 이런 피드백을 주었고, 이 방법의 장점과 단점은 어떤 것인지 "직접" 분석한 후, 나만의 기준을 만들어 가는 과정에서 정말 크게 성장할 수 있다고 생각한다.
아래는 나의 4주간의 프리코스 PR 주소이다.
- 1주차 : 숫자 야구게임
- 2주차 : 자동차 경주
- 3주차 : 로또
- 4주차 : 크리스마스 프로모션
이건 살짝 빠지는 이야기인데, 코드 리뷰를 많이 받고 싶다면 마케팅을 열심히 하거나, 열심히 발품을 팔면서 다른 사람의 코드를 리뷰해 주면 된다! 나의 코드 리뷰 글을 어떻게 마케팅 할지 고민해 보는 것도 좋은 경험이 될 것 같다. 누군가는 자신만의 아이덴티티를 잘 만들어 유명해졌고, 누군가는 커뮤니티에서 정말 활발하게 소통하면서 이름을 알렸으며, 누군가는 많은 스터디에 열정적으로 참여해 고정적으로 리뷰를 품앗이하는 동료를 만들기도 했다. 아래는 코드 리뷰를 위해 마케팅을 한 어그로를 끌었던 나의 디스코드 글이다.
최종 코딩테스트를 준비하며
위 사진은 우테코의 선발 일정인데, 보면 합격자가 발표나고 5일 후에 바로 코딩 테스트가 이루어진다. 때문에 1차 전형의 결과가 나온 다음에 프리코스를 준비하기는 매우 시간이 촉박하다. 그래서 최종 코딩테스트를 볼 수 있는지는 알지 못한 채 최종 코딩 테스트를 준비해야 했다.
최종 코딩테스트는 프리코스와 동일하게 주어진 요구사항에 맞는 프로그램을 만드는 것이다. 다만, 5시간이라는 제한시간이 존재한다. 이를 준비하기 위해 5시간동안 프리코스의 문제들을 구현하는 연습을 하였다. 또, 최종 코딩 테스트에서는 이전의 소스코드와 인터넷 등 모든 자료를 활용할 수 있는 오픈북 테스트였기 때문에 테스트에서 사용하기 위한 템플릿 코드를 준비했다. 마지막으로 시간 단축을 위한 방법들을 고민하였다.
5시간 제한 구현을 연습하기 위해 총 3개의 스터디에 참여했다. 코딩테스트를 준비하는 기간의 초반에는 매주 2~3번정도 구현을 연습하다가 마지막 10일정도는 매일 한 문제씩 구현했던 것 같다. 초반에는 단순히 시간 내에 어플리케이션을 구현하는 것을 목표로 연습했고, 마지막에는 git 클론부터 소감문 작성과 PR 보내기까지의 전체 과정을 5시간 내에 완료할 수 있도록 연습했다.
최종 코딩테스트에서는 긴장하지 않는 것이 정말 중요하다고 생각하는데, 연습을 할 때 실전이라고 생각하고 이미지 트레이닝을 하면 긴장을 완화하는데 도움이 된다고 생각한다. 그래서 나는 실전에서 사용할 노트북과 키보드, 마우스, 노트와 Chat-GPT, 코파일럿, 템플릿과 네이버 영어사전까지 모든 환경을 고정하여 연습했으며, 다른 사람들과 스터디를 할 때도 게더타운에서 모여서 정해진 시간동안 문제를 풀었다. 스터디 중 하나는 시간도 동일하게 1시부터 6시까지 진행하였다. 심지어는 git clone을 하기 위해서 미리 폴더를 만들어 두고 git bash를 열어둔 상태로 준비하거나 템플릿 코드를 사용하는 것도 연습을 했다! 화장실을 다녀올 것을 고려해 중간에 일부러 휴식시간을 가지기도 했고, 설계가 잘못되었다는 것을 늦게 깨달았을 때도 해당 설계로 프로그램을 완성하는 연습을 하기도 했다. 진짜 가능한 모든 상황에 대비하고자 노력했던 것 같다.
최종 코딩 테스트
정말 감사하게도 1차 전형인 프리코스를 통과하면서 최종 코딩테스트를 볼 수 있게 되었다. 최종 코딩 테스트는 우테코 캠퍼스에서 이루어지는데, 잠실 캠퍼스와 선릉 캠퍼스 중 어느 캠퍼스에서 테스트를 볼 지는 랜덤이었다. 1시부터 6시까지 5시간동안 이루어지며, 이메일로 문제 Repository 주소가 도착한다.
가장 크게 도움이 되었던 두 가지는 "실전같은 연습"과 "나만의 명확한 기준 세우기" 였다. 실전같은 연습은 테스트 환경에서 긴장을 크게 줄여주었다. '더이상 완벽할 순 없다'는 생각이 들 정도로 연습을 하고 나니 코딩테스트를 부수고 오겠다는 생각이 들더라... 코딩테스트를 칠 때 조금 설레고 들뜨긴 했으나 크게 긴장을 하지는 않았던 것 같다. (그래도 시험 시작 10분 전에는 조금 긴장이 되길래 카카오톡 배경 화면을 합격길 열리는 부적으로 설정하긴 했다..ㅎ)
또, 내가 미리 정해둔 기준을 적용해 연습을 했기 때문에 요구사항을 보고 모델을 구현하는 과정에서 고민을 하는 시간이 정말 크게 줄었다. 또, 시간이 만약 남는다면 점검할 목록도 미리 정해 두었기 때문에 리팩토링 역시 수월하게 진행되었던 것 같다.
기능 구현에는 총 2시간 정도 소요되었다. 프로그램이 정상 동작하던 것은 아니었고, 디버깅을 포함한 프로그램 완성까지는 3시간이 소요되었다. (오류가 난다고 해서 절대 멘탈 터지면 안된다. 오류 찾고 죽는다는 생각으로 이 악물고 디버깅 하자.) 이후 리팩토링을 하고 소감문을 전부 작성하는데 1시간정도 더 소요 되었으며 남은 1시간동안은 끝까지 코드를 다시 보고 소감문을 고쳤다.
돌아보면 아쉬운 점이 조금 존재한다. 먼저, 요구사항을 완벽하게 이해하지 못했다. 최종 코딩 테스트에서는 "비상 근무자는 평일 순번, 휴일 순번에 각각 1회 편성되어야 한다." 라는 요구사항이 있었다. "중복되어서는 안된다." 가 아니라 "각각" "1회" 편성되어야 한다. 때문에 평일 순번과 휴일 순번에 모두 동일한 비상 근무자가 존재해야 하는데, 나는 이를 "중복되어서는 안된다." 라고 해석했고, README.md 에는
비상 근무 순번
다양한 이유로 "주말에는 비상 근무를 서지 못하는 근무자" 와 같은 예외 상황이 발생할 가능성을 고려하여
평일과 주말의 순번은 동일한 근무자 집합이 아닐 수 있음.
이라고 명시까지 해 두었다. 시간이 남는다면 꼭 요구사항을 여러번 반복해서 다시 읽었으면 좋겠다. (물론, 이미 스스로 가스라이팅을 완료한 뇌가 이런 결함을 발견할 가능성은 적지만...)
또, 다양한 입력에 대한 통합 테스트를 작성하지 않은 것도 문제를 발생시켰다. 코드를 리팩토링 하는 과정에서 휴일 순번을 사용하는 조건을 "주말 또는 법정 공휴일일때" -> "평일일 때" 로 변경하였는데, 평일인지 확인하는 메서드에서 법정 공휴일을 확인하는 조건을 누락하면서 원래 정상적으로 동작하던 코드를 정상적으로 동작하지 않도록 변경시켜 버렸다. 이런 실수는 테스트코드만 잘 작성해 두었어도 정말 쉽게 발견할 수 있었을 문제였기 때문에 더 아쉬움이 컸다.
우테코 최종 합격
27일 수요일 3시에 결과 발표가 예정되어 있었고, 결과 발표때문에 아무 것도 못할 것 같아서 결과 발표 전까지 일부로 우테코에는 아무 신경도 안쓰고 지냈다. 아니, 사실 위에서 서술했던 실수들을 하나 둘 발견하면서 점점 자신감이 없어졌고, 우테코는 떨어졌다고 생각했다. 좋은 경험이었으리라 생각하며 넘기려고 노력했다. 취준 기간동안 진행하던 개인 프로젝트를 다시 잡았으며, 알고리즘 문제를 다시 풀기 시작했다. 가족 일로 조금 더 정신없이 지내기도 했다.
최종 결과를 확인하던 순간은 정말 생생하게 기억난다. 결과 발표날 역시 가족 친척과 함께 있었다. 이런 저런 일을 하다가 시간을 확인했을 때가 3시 14분즈음이었다. 도저히 다른 사람들이 있는 곳에서는 결과를 확인 못할 것 같아서 잠시 나왔고, 혼자서 네이버 어플로 결과를 확인했다.
진짜 저 메일을 보면서 얼마나 가슴을 졸였는지 모른다. 다시 한번 떨어져도 크게 상심하지 않겠노라 다짐하고 결과를 확인했다.
결과적으로 우테코에 최종 합격을 하면서 6기 크루로 활동할 수 있게 되었다!
회고를 마치며
위에서도 말했듯, 우테코는 나에게는 눈 앞에서 너무 선명하게 보이던 가장 큰 목표였다. 정말 감사하게도, 10개월간의 우테코 교육 과정에 참여할 수 있게 되었다. 우테코에서의 10개월은 분명 매우 힘들것이다. 그렇기에 2024년의 한 해가 나에게 의미있는 시간으로 남겨질 수 있도록 운동을 하고, 책을 읽으며 앞으로의 일정을 소화하기 위한 준비를 하는 중이다.
우테코를 최종 합격 하기까지 정말 많은 분들의 도움이 있었다. 나를 믿어주고 지원해 준 가족과 친척들, 진심으로 나를 웅원해 주었던 친구들, 나의 성장을 도와준 스터디원과 리뷰어들께 감사의 인사를 전한다. 프리코스에서 만났던 수많은 참가자들과 이 글을 읽고 있는 미래의 개발자들께 꼭 현업에서 멋진 개발자가 되어 다시 만나기를 소망하며 우리의 앞길을 응원한다.