최종 코딩 테스트는
private
저장소에 커밋하는 미션이었습니다. 따라서, 코드를 공개하지 않기로 결정했습니다.
12월의 어느 날
프리코스를 끝내고 평화로운 나날을 보내고 있던 12월의 어느 날, 기말 고사 기간이었던 저는 강의실에서 부랴부랴 벼락치기를 하고 있었습니다. 프리코스 미션을 하느라 학업에 살짝 소홀했지만, 그래도 자신 있던 강의여서 놓친 부분은 없나 다시 한번 복습하고 있었지만, 제 정신은 다른 곳으로 떠난지 오래였습니다.
하필이면 기말 고사가 있는 날이 우아한테크코스 1차 심사 결과가 나오는 날이었기 때문입니다. 아무리 마음을 비우고 있었다하더라도 기대를 할 수 밖에 없었고, 함께 프리코스에 참여했던 동기, 후배들과 떨리는 마음으로 심사 결과를 기다리고 있었습니다. 시험을 보는 둥 마는 둥 후딱 해치우고 나온 저는 떨리는 마음으로 메일함을 열었습니다. (물론 그렇다고 시험을 완전 망치진 않았습니다...)
입이 바짝 마르고 턱이 달달 떨리던 제가 열어 본 메일에는 합격 소식이 담겨있었습니다. 한 달 동안 쉬지 않고 개발만 했던 제 노력이 보상 받는 순간이었습니다. 더 나은 개발자, 더 좋은 개발자가 되고 싶어 꼭 합류하고 싶었던 우아한테크코스에 진짜 합류할 수 있는 기회가 주어진 것입니다.
차근차근 최종 코딩 테스트 안내를 읽고, 다가올 결전의 그 날을 위해 이전 기수 선배들이 만났던 최종 코딩 테스트 미션과 프리코스 미션들을 풀어보기로 결정했습니다. 생각보다 더 어려웠던 미션도 있고, 어느 정도 감이 잡히는 미션들도 있어 최종 코딩 테스트의 난이도가 예상되지 않았습니다. 5시간 제한을 지키기 위해 타이머를 켜고 미션을 구현해보니 생각보다 시간이 많이 부족했습니다.
프리코스와 다르게 최종 코딩 테스트는 5시간 밖에 주어지지 않고, 프리코스처럼 여유를 두고 생각하고, 개발할 시간이 없으니 전략을 잘 세워야겠다는 생각도 들었습니다. 그래서 저는 우아한테크코스 설명회, 코수타, 여러 선배들의 우아한테크코스 관련 회고글을 참고해 딱 한가지 전략을 세웠습니다. 이 전략은 최종 코딩 테스트 안내 메일에도 적혀있던 글이기도 합니다.
일단 돌아가는 쓰레기를 만들고, 개선하는 방법은 우아한테크코스에서 배우자!
프리코스를 스스로의 힘으로 완수했는지를 증명하는 자리라고 하니, 프리코스에서 학습한 개념들을 모두 녹여내려고 하려했지만, 그랬다가는 시간이 부족할 것 같았습니다. 그래서 저는 우아한테크코스에서 원하는대로, 일단 돌아는 가는 쓰레기를 만들 각오로 최종 코딩 테스트를 준비했습니다. 미션을 잘 수행했는지 스스로 판단하기 위한 체크리스트, 부족한 개념들에 대한 학습, 객체 설계를 위한 노트까지, 코드 퀄리티만 제외하고 만반의 준비를 했습니다.
선릉 캠퍼스에서의 5시간
전날 늦게까지 프리코스 미션들, 이전 최종 코딩 테스트 미션들을 다시 살펴보며 잠이 부족했음에도, 기상 알람이 울리기도 전에 눈을 떴습니다. 결전의 날이 밝은 것입니다. 정신을 맑게하기 위해 샤워도하고 빠진 준비물이 없나 두세번 검토하고 운명의 장소 우아한테크코스 선릉 캠퍼스로 향했습니다.
저는 지하철에 몸을 싣고 곰곰히 생각해봤습니다. 내가 이번에 실패한다 해도 내가 해온 노력이 물거품이 되는 것인가? 나는 우아한테크코스에 합류하지 못하면 실패한 사람인가? 물론 아쉽긴 하겠지만 제가 이번 최종 코딩 테스트에서 잃을 것은 없다는 생각을 하니 조금은 긴장이 풀렸습니다. 어떤 문제가 나올까, 얼머나 어려울까 같은 온갖 생각에 잠시 멍하니 서있었던 저를 태운 지하철은 어느덧 선릉역에 도착했습니다. 깊게 한숨을 내쉬고 "나는 할 수 있다, 나는 해낼 수 있다."고 자기 암시를 하며 선릉 캠퍼스로 걸어갔습니다.
예상보다 더 무거웠던 캠퍼스 분위기
선릉 캠퍼스에 도착해 엘레베이터에 탔습니다. 저와 같이 최종 코딩 테스트를 보러 온 예비 크루들이 굳은 얼굴로 함께 탔습니다. 대망의 캠퍼스 내부에 도착하자 코치들께서 밝은 얼굴로 맞아주셨습니다. 그렇게 무거운 분위기의 테스트는 아니구나라는 생각도 잠시, 강의실에 들어서자 잔뜩 긴장한 듯한 예비 크루들의 모습에 저도 덩달아 긴장되기 시작했습니다. 심지어, 테이블에 다닥다닥 붙어 앉아 코딩 테스트를 응시해야하다 보니 잘 집중할 수 있을지도 걱정됐습니다.
그래도 마음을 가다듬고 와이파이 연결 설정 등, 테스트 환경을 구축하고 문제 공개만 기다렸습니다. 1분이 1시간 같은 시간이 지나고, 문제가 공개된 후, 처음 미션을 마주한 저는 그렇게 어렵진 않겠다는 생각이 들었습니다. 오히려, 4주 차 프리코스 미션인 크리스마스 프로모션보다 구현 자체는 쉬울 수도 있을 것 같았습니다. 프리코스 때의 실수를 하지 않기 위해, 5기 크루였던 선배의 조언대로 요구사항을 여러번 읽고 분석해 구현 기능을 정리했습니다.
열심히 구현하고 나니, 주어진 테스트는 통과됐고, 해냈구나하는 생각이 들었습니다. 일단 돌아가는 쓰레기는 완성된 것입니다! 시계를 보니 3시간 정도 흐른 후였고, 여러 예외 상황에 대한 테스트를 작성해 나갔습니다. 그러나, 테스트를 작성하면서 예상보다 더 많은 오류가 발견됐고, 고치다보니 또 시간이 빠르게 흘렀습니다. 심지어, 잘 동작한다고 생각했던 기능이 잘못 구현됐다는 것을 발견했을 때는 정말 아찔했습니다.
여유를 부릴 시간이 없다는 것을 깨닫고 다시 열심히 개발했습니다. 발견한 오류를 모두 잡고, 테스트도 많이 작성한 다음 제출하려다가 또 다시 놓친 것을 발견했습니다. 프리코스에서는 없었던 어떻게 미션을 해결했는가를 설명하고, 다른 방법은 없었는지 구현한 방법과 다시 생각해본 방법의 차이는 무엇인지를 설명해야하는 요구사항을 발견한 것입니다.
온 몸에서 식은땀이 흐르기 시작했습니다. 남은 시간은 얼마 없는데, 차분히 생각하고 작성해야하는 문서가 완전히 비어있는 상황이었습니다. 그래도 두 번째 문항인 다른 방법을 생각하고 구현한 방식과의 차이점을 적는 것은 선택 사항이었기 때문에 첫 문항을 최대한 빠르게 써내려 갔습니다. 마감 마지막 1분 전, 아슬아슬하게 제출에 성공했고, 길다면 길 5시간이 순식간에 지나갔습니다.
아쉬웠던 것들
최종 코딩 테스트를 마치고 나서, 집으로 돌아가던 길, 조금 아쉽다고 느껴졌습니다. 조금 더 확실하게 요구사항을 파악하고 미션을 풀어나갔다면 어땠을까하는 생각이 들었습니다. 프리코스에서는 여러번 요구사항을 읽고 필요한 것들을 확실하게 챙겼지만 시간 여유가 없다고 생각한 최종 코딩 테스트에서는 그러질 못했다는 생각에 너무 성급했나라는 후회도 하게됐습니다.
또, 돌아가는 쓰레기를 만들어야겠다는 전략에 너무 매몰되어 유지보수하기 힘든 코드를 작성한 것은 아닌가라는 생각도 들었습니다. 오류가 발생하고나니 고치는데 너무 많은 시간을 들이게 됐습니다. 테스트 작성도 어려워 실제 기능 구현보다 부수적인 일에 더 많은 시간이 소모된 것 같아 아쉬웠습니다. 그래도 후회하지 않기로 했으니, 테스트는 통과했다는 점을 다행이라 생각하기로 했습니다.
최선을 다했고, 어떤 결과가 주어지든 받아들일 수 있을 것 같습니다.
노력의 보상
1차 심사 결과를 기다리던 날처럼 최종 코딩 테스트 결과를 기다리던 연말의 어느 날, 학교 도서관 안내 데스크에서 국가근로 근무를 하고 있었습니다. 운명의 시간 오후 3시, 어김 없이 제 메일함에는 최종 결과를 담고 있는 메일이 도착했고, 저는 후회하지 않겠다는 다짐이 무색하게 터질 것 같은 심장을 부여잡고 메일을 열어봤습니다.
도서관이라 소리는 크게 지르지 못했지만 의자에서 펄쩍 뛰어오르고, 주먹을 꽉쥐며 온 몸으로 기쁨을 표현했습니다. 아마 이 순간의 저를 누군가 봤다면 미쳤다고할지도 모르겠습니다. 제 인생에 있어 두 번 다시 없을 좋은 기회를 잡았다는 기쁨과, 최고의 동료들과 함께할 수 있다는 기쁨, 그토록 바랐던 오로지 프로그래밍에만 몰두할 수 있는 환경을 누릴 수 있다는 기쁨까지, 살면서 이렇게 기뻤던 순간은 손에 꼽을 것 같습니다.
사실, 작성해야 했던 문서는 선택 사항이긴 하지만 비워둔 채로 제출했고, 프리코스 커뮤니티(디스코드)에서는 저보다 더 멋진 방식으로 구현해낸 사람들의 이야기를 보고 살짝 마음을 놓고 있었습니다. 그러나 제 진심이 통했는지, 당당하게 우아한테크코스 6기의 크루가 되었습니다. 저는 저에게 특출난 재능이 없다고 생각했습니다. 그저 관심이 조금 더 많아서, 특성화 고등학교에 진학했고, 동기들보다 더 빨리 프로그래밍을 접했을 뿐입니다. 단순히 프로그래밍이 재밌어서, 개발 동아리의 회장을 했고, 전공을 소프트웨어공학으로 정했습니다.
저보다 훨씬 개발에 재능이 넘치고, 프로그래밍을 잘하고, CS 지식이 많은 사람도 있지만 제가 합격한 이유를 감히 추측해보자면, "한가지 일에 몰입한 경험"이 아닐까 싶습니다. 우아한테크코스 6기 지원하면서 작성한 자기소개서에는 제가 1년이라는 시간을 모두 투자한 경험을 적었습니다. 우아한테크코스가 원하는 교육 대상자는 한가지 일에 몰입해 성공한 경험이 있어야 합니다. 저는 다행히 프로그래밍이 좋아서 살아온 삶에 이런 경험이 있었고, 할 말이 많았습니다.
그래서 저는 합격한 것 같습니다. 만약 이 글을 읽으실 미래의 우아한테크코스 예비 크루께서도 꼭, 한가지 일에 몰두해보는 경험을 가지셨으면 좋겠습니다. 그 일이 꼭 개발과 관련된 일일 필요도 없습니다. 저도 해냈으니 여러분도 할 수 있습니다.
정말 감사합니다! 우아한테크코스!