11월 12일, 프리코스가 끝났다.
이후 한 달 동안 나는 새로운 프로젝트도 시작하고, 여행도 다녀왔다!
중간중간 1차 합격에 대한 기대감을 내려놓을 수 없어 프리코스 1주 차 문자열 계산기 문제와 4주 차 편의점 문제를 차근차근 다시 풀어보기도 했다.
12월 9일 오후 3시, 우테코 1차 합격자 발표가 있었다.
이 날은 상해 여행 마지막 날이었고, 마지막 점심으로 양꼬치를 거하게 먹고 공항으로 갈 준비를 하고 있었다.
중국은 한국보다 1시간 느려서 오후 2시였는데, 같이 여행 간 친구들에게는 티도 못 내고 5분 전부터 혼자 떨고 있었다.

e심을 가져갔지만 데이터가 잘 터지지 않아서 59분에 온 메일을 눌러두고 한참을 기다렸다.
떨리는 마음으로 데이터가 터지자마자 메일을 읽어보니 합격이었다.
사실 기대하지 않았다고 하면 거짓말이지만, 3주 차에 0점 처리가 될 수도 있는 큰 실수를 했기 때문에 합격하지 못할 수도 있겠다는 생각도 가지고 있었다.
(3주 차 실수 썰이 궁금하시다면.. 👉🏻 https://ju-heee.tistory.com/53)
그런데 합격이라니..🥹 너무너무 감사했다.
기쁜 마음도 잠시, 한 달 동안 내가 한 거라곤 1주 차, 4주 차 문제를 한 번씩 다시 풀어본 것뿐이라 걱정이 앞섰다.
여행을 끝내고 한국으로 돌아가자마자 최종 코테 준비를 빡세게 해야겠다고 생각했다.

우선 기수 상관 없이 1차 합격자들의 최종 코딩 테스트 후기란 후기는 싹 검색해 봤다.
많은 분들이 최종 코딩 테스트 시간인 5시간을 제한하여 이전 문제들을 풀어보았다는 걸 알 수 있었고, 실제 코테 시간인 오후 1~6시에 코어 타임을 갖고 준비하셨다는 걸 알게 됐다.
그래서 나도 마찬가지로 오후 1~6시에는 가방을 싸들고 카페로 나가서 이전 문제들을 풀어보았다.
실질적으로 내가 준비할 수 있었던 시간은 발표 다음 날인 12월 10일 ~ 13일, 총 4일이었다.
첫날, 6기 최종 코딩 테스트 문제였던 온콜을 풀어보았는데, 정말 쉽지 않았다.
5시간 안에 기능 구현은커녕 주어진 ApplicationTest 조차도 통과하기 어려웠다.
당장 이번 주 토요일이 코테인데 어떡하지..라는 생각이 들었는데, 프리코스를 마치며 받았던 메일이 생각났다.

그래서 준비 방향을 바꿔버렸다.
최종 코딩 테스트는 내가 프리코스를 스스로 해냈음을 증명하는 자리로 생각하기로 했다.
새로운 문제를 5시간 안에 풀어내도록 연습하는 것보다, 내가 기존에 풀었던 문제들을 1~2시간 내에 풀어낼 수 있는지 확인하기로 했다.
그렇게 남은 시간 동안 2주 차 자동차 경주, 3주 차 로또 문제를 마저 풀어보았고, 푸는 과정에서 내게 어느 것들이 부족한지 알 수 있었다.
프로그램의 구조
프리코스를 풀면서 항상 프로그램의 구조를 어떻게 짜야할지 몰라 시간이 오래 걸렸었다.
최종 코딩 테스트에서는 나만의 프로그램 구조를 만들어 두고, 만들어 둔 틀 안에서 기능 구현을 한다면 시간 단축이 될 것 같았다.
그래서 깃헙에 템플릿을 만들어 저장해 두었다.
README 양식부터 config, controller, service, util, view까지 고정된 패키지와 클래스들, 그리고 소감문까지 미리 준비해 두었다.

Enum의 활용
3주 차 로또 때부터 Enum을 활용하라는 요구사항이 있었던 것으로 기억한다.
이땐 Enum을 활용할 수 있는 게 로또의 당첨 결과로 확실하게 보였던 터라 크게 문제없이 Enum을 도입해서 사용했었다.
그런데 4주 차 편의점 때엔 어디에 Enum을 도입해야 하지..?라는 생각이 많이 들었었고, 실제로 비즈니스 로직엔 제대로 도입하지 못하고 프리코스를 마쳤었다.
그런데 이번 최종 코딩 테스트를 준비하면서도 똑같은 의문점을 가지게 됐다.
도대체 Enum은 언제 활용할 수 있는 걸까?
라는 의문을 계속 가지고 있었다.
결국 최종 코딩 테스트 당일 아침까지도 이에 대한 답은 찾지 못했다.
다른 사람 코드 읽기
프리코스 문제들을 풀면서 새로운 해결 방식을 생각해 내기보다 다른 사람의 코드를 많이 보며 내 문제에 어떻게 응용하여 해결해 낼 수 있을지를 고민했었다.
이번에도 어떤 문제가 나올지는 모르겠으니 최대한 해결 방안을 많이 떠올려낼 수 있도록 다양한 코드를 많이 봐두는 것이 좋겠다고 생각했다.
준비 기간 동안, 그리고 최종 코딩 테스트 당일 아침에도 github에 기존 문제들을 검색해서 공개돼 있는 아무 레포지토리에 들어가 코드를 구경했다.
특히, 내가 풀어보았던 6기의 온콜 문제와 5기의 페어매칭 문제까지 다른 사람들이 어떤 흐름으로 문제를 풀어나갔는지 이해하도록 노력했다.
최종 코딩 테스트 당일 아침, 떨리는 마음으로 일어나 준비하고 입실 시간인 12시보다 한 시간 반쯤 이르게 잠실역에 도착했다.
루터회관 바로 앞 스타벅스에 자리를 잡고, 커피와 샌드위치를 간단하게 먹으면서 다른 사람들의 페어매칭 코드를 읽어 보았다.
지금까지 프리코스에서는 사용자의 입력에 따라 오류가 나면 프로그램을 종료하지 않고 그 부분부터 재입력을 받게 했었는데, 페어매칭 문제에서는 그러지 않았다.
처음에 기능을 선택하고, 선택한 기능에 따라 프로그램이 동작하는 방식이었다.
이때 계속 고민해 오던 Enum의 활용법에 대해 번뜩 눈이 뜨였던 것 같다.
사용자로부터 처음 입력받는 기능을 Enum으로 생성해 두고, view에서 그 Enum을 controller로 넘겨 처리하는 방법이 있었다.
비즈니스 로직에서도 상태와 행위를 같이 갖는 연관된 상수 모음을 Enum으로 관리할 수 있었다.
이렇게 깨달은 Enum의 사용법을 실제 최종 코딩 테스트에서도 활용할 수 있었다.

최종 코딩 테스트에서 만들어낸 domain들.. Enum이 절반이다.

입실 시간인 12시 10분 전, 스타벅스를 떠나 루터회관으로 갔다.


신분증으로 본인 확인을 마치고, 뷰티풀샷 강의장으로 안내를 받고 우테코 굿즈를 받았다.
교육장 시설이 너무 좋아서 꼭 합격해서 이런 곳에서 코딩하면 좋겠다고 생각했다.


후기에서 본 것과 같이 과자도 주시고 물도 1인 당 1개씩 제공해 주셨다.
프로그래밍과 관련된 책들도 대여할 수 있었는데, 너무너무너무 부러웠다.
나도 저 대여 장부에 이름 적고 책 대여해오고 싶었다..🤣


지정석인줄 모르고 시험 보러 가게 되면 맨 앞이나 맨 뒤 코너 자리에 앉아야지!라고 생각했었는데, 지정석이었고 다행히 내 자리는 맨 뒤 코너였다.
후기에서 본 대로 책상은 그리 넓지 않았고, 노트북과 마우스, 옆쪽으로 물과 텀블러를 두니 꽉 찬 것 같았다.
네트워크 세팅도 해두고, 내 프리코스와 템플릿 레포지토리, 구글 번역 페이지, 참고할 때 도움이 많이 됐던 레포지토리들, git convention message 모음 등 도움 될만한 페이지들을 미리 켜두었다.
java version도 미리 확인하고, 이번에는 허용되지 않은 AI 설정도 꺼두었다.
처음에는 IntelliJ - Settings - Editor - Inline Completion - Enable local Full Line completion suggestions 만 체크 해제하면 될 거라고 생각했는데, 혹시 몰라서 테스트 시작 전 마지막에 코치 님께 이 것만 체크 해제해 두면 되는 건지 여쭤봤더니 Settings - Editor - Code Completion - Machine Learning-Assisted Completion - Sort completion suggestions based on machine learning 체크 해제도 해주셨다.
AI를 활용하고 있는지 네트워크로 확인하고 계시다고 했기 때문에 물어보길 잘했다고 생각했다!
1시가 되자마자는 아니고, 1분 정도 있다가 내 지원 현황에 최종 코딩 테스트 문제가 뜬 것 같았다.
왜냐면 1시 되자마자 계속 새로고침하는데 안 뜨더라..ㅋㅋㅋ
당황해서 요리조리 둘러보니 다른 사람들도 다 똑같이 새로고침하고 있길래 열심히 새로고침했더니 잠시 후에 떴다!
문제는 코치들이 크루들의 출석을 관리하기 위해 사용하는 출석 시스템을 개발하는 것이었다.
1시간가량 문제를 읽고 요구사항을 파악하는 데 시간을 사용했다.
우선 요구사항을 적지 않고 먼저 쭉 읽어 보았고, 한 번 더 읽어 보면서 요구사항을 리드미에 정리했다.
요구사항을 읽어 보면서 아침에 읽어 보았던 페어매칭 문제와 프로그램의 진행 순서가 비슷하다고 생각했다.
요구사항 정리를 마친 뒤에 템플릿을 토대로 프로젝트 구조를 잡았고, 도메인을 추가해 가며 구현을 시작했다.
프리코스에서 우테코 라이브러리의 shuffle method를 활용한 문제가 없어서 최종 코테에 활용하라고 하지 않을까 생각했었는데, 그러지 않았고 오히려 4주 차 편의점 문제와 비슷하게 DateTimes.now()를 활용하고, 파일 입출력을 구현해야 했다.
사실 편의점 문제를 구현하면서도 파일 입출력에서 객체를 만드는 과정에서 혼란을 많이 겪어서 시간을 많이 썼었는데, 이때 연습한 덕분인지 생각보다 최종 코테에서는 오래 걸리지 않았다.

특히 이렇게 파일 입출력 관련 글들을 북마크 해두었었는데, 문제를 풀면서 이 글들 중 JAVA STEP 44. File 입출력 예제(https://maengmo.tistory.com/129) 글에서 활용할 것들이 막 생각날 때 바로바로 찾아 활용할 수 있어서 좋았다.
코테 전, ApplicationTest만 만족하자는 마음 가짐으로 임했었는데 막상 요구된 기능이 너무 많았기 때문에 주어진 ApplicationTest를 보고, 모든 기능을 구현하기보다 '출석 시스템'의 핵심 기능인 '출석' 기능만이라도 완성하고 싶었다. 실제로 통합 테스트 5개 중 4개는 출석 기능에 대한 테스트였고, 테스트 5개를 만족시키지 못하더라도 4개만 만족하자는 생각으로 구현을 했다.
평소에 연습할 때보다 머리가 빠릿빠릿하게 돌아갔고, 중간에 포비가 오셔서 돌아가는 쓰레기를 만들라고, 테스트 시간이 5시간으로 길기 때문에 1분이라도 쉬고 하라고 하셨지만 그런 말조차 귀에 들어오지 않았다.🥹

결국 8분을 남겨 두고 테스트 5개 중 4개가 통과되는 커밋을 제출했고, 미리 작성해 온 소감문에 몇 줄의 소감문을 더해 제출했다.
더 많은 기능을 구현하고 싶었지만 실제로 구현한 기능은 출석 기능뿐이었고, 이 마저도 완벽한 기능 구현은 아니었다.
하지만 준비하면서 생각했듯이, 그리고 소감문에 썼듯이 이 날의 최종 코딩 테스트는 프리코스를 내 힘으로 구현했다는 것을 증명하기 위한 자리이고, 5시간 동안 최선을 다했으니 후회 없이 만족했다.
6시가 되자마자 코테는 끝이 났고, 카카오톡을 확인해 보니 기쁜 소식(탄핵 가결😁)도 있었다.
주어진 기능들을 모두 구현하지 못해 아쉬운 마음이 있었지만, 그래도 내가 고민했던 Enum 활용법에 대해 최종 코테에서 제대로 활용하게 되었다는 점, 최선을 다했다는 점, 5시간 동안 당 떨어질까 봐 가져갔던 간식을 손에 대지도 않고 커피도 마시지 않고 몰입했던 점 등을 생각해 보니 아쉬움보다는 만족감이 더 크게 느껴졌던 것 같다.
프리코스에 참여하고, 최종 코테까지 참여하면서 우테코의, 포비의 교육 철학과 가르침에 대해 다시 한번 감탄하고 배워가는 점이 많다고 느낀다.
그렇기 때문에 더더욱 7기에 합격하여 크루로서 활동하고 더 배우고 싶다는 마음이 간절해진다.
결과가 나오려면 아직 약 2주 정도의 긴 시간을 기다려야 하지만, 그 시간 동안 남은 기능들을 구현해보려고 한다.
어떤 결과가 나올지 모르겠지만(합격 시켜줘...🥹) 우테코 7기 프리코스에 참여한 건 정말 후회 없는 값진 선택이었다!
템플릿 레포지토리 : https://github.com/ljhee92/templateForPass
최종 코딩 테스트 레포지토리 : https://github.com/ljhee92/java-attendance-7-ljhee92 (아직 private 레포지토리이지만, 결과 발표가 나면 공개로 돌리는 것을 고려해봐야겠다! 합격하면 돌리고 싶으니까 합격 시켜줘🥹)
(최종 코테 이후 레포지토리 건드리면 안 될 것 같아서 추가 구현도 리팩토링도 하지 않은 쌩 날 것 그대로의 것이지만 합격했으니까 공개!!)
'study > 우아한테크코스' 카테고리의 다른 글
| 우아한테크코스 7기 백엔드 레벨1 로또 미션 회고 (1) | 2025.03.17 |
|---|---|
| 우아한테크코스 7기 백엔드 최종 합격 회고 (10) | 2024.12.29 |
| 우아한테크코스 7기 프리코스 4주 차 회고 (2) | 2024.11.11 |
| 우아한테크코스 7기 프리코스 3주 차 회고+ (부제: 왜요? 제가 0점 처리될 사람처럼 보이세요?) (2) | 2024.11.05 |
| 우아한테크코스 7기 프리코스 3주 차 회고 (9) | 2024.11.04 |