11월 14일 화요일에 프리코스 마지막 4주차를 제출한 후 한달 쯤 지난 후 똑같이 오후 3시에 발표 이메일을 받게 되었습니다.
떨리는 마음으로 메일을 열어 볼 겨를도 없이 휴대폰 알림에 메일 내용 첫줄 *이 메일을 받는 분들은 최종 코딩 테스트 대상자입니다.
가 보이는 바람에 바로 기뻐했던 것 같습니다.
최종 코딩 테스트는 12월 16일 토요일 오후 1시 ~ 6시로 총 5시간 동안 오프라인으로 진행되었고 서울 선릉과 잠실 2개 캠퍼스에서 동시에 진행되며 저는 선릉 캠퍼스로 안내 받았습니다.
발표 당일과 그 다음날은 푹 쉬며 마음의 준비를 하였고 이제 3일 동안 사전 준비를 확실히 하려고 합니다.
코테는 이전 기수 또한 이번과 동일하게 5시간동안 풀 수 있도록 구성된 문제가 주어졌었습니다.
문제를 풀기 위해 구글 검색을 통해 이전 3개의 기수 까지 문제를 찾아서 제 Github
에 복제해 두었습니다.
누군가는 필요하실 수도 있으니 이번 6기 코테 문제도 추가해 두었습니다.
4기까지는 1차 코딩 테스트를 통과해야 프리코스를 진행할 수 있었는데요, 5기부터는 모든 사람들에게 프리코스를 먼저 진행할 수 있게 해줌으로써 이번 6기와 같은 상황이었습니다.
따라서 심적으로 그나마 코테를 먼저 풀어보고 싶은 마음이 들었고 5 > 4 > 3 기 순으로 코테를 풀어볼 생각이었습니다.
첫 문제라 너무 제약은 걸지 않고 저녁시간에 그냥 집에서 편하게 풀어보았습니다.
4시간 정도 소요되었고 처음에 구현할 기능 목록 README
작성이나 커밋 컨벤션 등이 프리코스를 하는 4주동안 몸에 익어 있었기 빠르게 시작 하였습니다.
진행하며 느꼈던 점은 우선 5시간 동안 풀어야 하는 문제이기 때문에 난이도가 프리코스 4주차에 진행한 크리스마스 프로모션 보다는 현저히 낮았습니다.
그리고 JDK 를 11 버전을 사용하기 때문에 Record
를 사용할 수 없어서 build.radle
및 프로젝트 설정을 수정하여 java 17
버전으로 바꾸어 사용할 수 있게 하여 진행하였습니다.
여유롭게 마음을 가지고 진행하여서 4시간을 진행하였지만 완성을 못하였고 내일 마무리를 할 생각으로 끝냈습니다.
아침 일찍 일어나서 2시간 정도 작업하여 마무리 하였습니다.
여유롭게 하여 6시간으로 기본 README
작성과 기능구현이 모두 끝났습니다.
테스트코드와 세밀한 문서 작성을 더 해야하는데 역시나 시간이 촉박할 수 있겠다 생각되었습니다.
처음 시작할 때 이전에 사용했던 기본 코드들 InputView
, OutputView
, ~Controller
, GeneralMessage
등 여러 코드들이 프로젝트 시작 때 마다 재사용 된다는 것을 느꼈고 이를 미리 만들어 놓으면 시작하자마자 빠르게 복사하여 시간을 단축할 수 있겠다고 생각이 들었습니다.
완전 베이직한 프로젝트를 만들고 기본 코드들만 넣어서 보일러 플레이트를 미리 만들어 두었습니다.
우선 점심을 먹고 집 근처 카페로 와서 음료 하나만 주문하여 코딩 환경을 만들었습니다.
오후 3시 부터 6기 까지 딱 달린 결과 3시간이란 시간만에 기능 구현을 거의 완성했습니다.
최단 거리 또는 최단 시간의 결과를 보여줘야 하기 때문에 거리와 시간 모두 다익스트라 알고리즘을 적용시켜야 했습니다.
노드 구성과 알고리즘 모두 직접 구현해야 했으면 난이도가 좀 높아졌을 텐데 시간제약 등의 이유로 라이브러리를 소개해주어서 편하게 제작할 수 있었습니다.
저녁에 집에 돌아와서 마무리를 하니 정상 작동 하였고 총 소요시간은 4시간 이내로 이대로라면 나머지 1시간 동안 테스트코드 및 문서 작성을 충분히 할 수 있을 것이라 판단하였습니다.
5기 문제 부터는 Spring
에서 사용하는 Repository
개념을 요구하지는 않아서 프로그래밍 요구사항에 있는 XXXRepositoy
를 지키는 않았습니다.
오전에 서울 갈 준비를 하느라 코딩을 많이 못했네요.
지방에서 지내고 있어서 결전 전날 미리 올라가서 여유롭게 준비하려고 했습니다.
버스 안에서 잠이 잘 안와 노트북으로 잠깐 코딩을 했었고 자기전에 어떻게 더 코딩을 할지 구상만 해두었습니다.
도착하니 저녁 8시가 넘어 버스에서 미리 찾아뒀던 찜질방으로 향했습니다.
여러 찜질방을 찾아보았는데 대체로 가격이 저렴한 곳은 빈대 때문에 피부가 안좋아졌다는 리뷰가 많아 조금 비싸더라도 그런 이슈가 없는 곳을 선택했던 것 같습니다.
또한 저녁은 미리 먹고 들어갈지 고민했었는데 리뷰에 돈까스가 보여 바로 향했지만 돈까스는 어딜가도 안보였고 라면과 계란 하나로 허기진 배를 달랜 아쉬운 저녁겸 야식을 먹었습니다.
사우나를 즐기고 나머지 코딩을 시작하려 했는데 밤 10시가 다되어 얼마 하진 못하였고 상상 설계 및 코딩을 하고 실제로 이런 문제가 나왔다면 어떤 순서로 설계를 진행하고 문서 작성과 테스트 코드를 짜면 되겠네 라고 계산만 해보는 것으로 과제를 끝내지는 못했지만 마무리 하였습니다.
전날 저녁을 부실하게 먹어 배고파 아침에 잠이 알아서 깨고 사우나를 마저 즐긴 뒤 나와 바로 앞 햄버거 집으로 향했습니다.
오픈 10시 오픈에 가서 바로 주문해서 아침을 먹은 뒤 의자 아래 콘센트도 있고 사람도 거의 없어서 입실 시작 시각인 12시 까지 여기서 기다렸습니다.
메일에도 입실 전 대기 장소가 협소하다 하였는데 미리 와계신 분들 정말 많았고 엘리베이터 내리면 바로 줄이 있어서 혼잡했습니다.
입실 이후에도 사람들 계속 들어오고 기다리는 시간이 많았어서 굳이 일찍 갈 필요가 없겠다라고 생각이 들었습니다.
맵 | 사진 |
---|---|
신분증 검사 후 공책과 펜과 같은 기념품을 받고 입실하여 자리에 노트북을 놓고 충전기 연결 후 마우스와 무선 이어폰을 두었습니다.
외투랑 가방은 뒤쪽 서랍장이 있어서 따로 보관하였습니다.
대학교 강의실 책상에 최대 인원이 따닥따닥 붙어 앉은 느낌이었습니다.
다시 복도로 나와서 다양한 종류의 과제들이 있어서 좋아하는 것들 여러개를 물과 함께 맛있게 먹었습니다.
자리에 와서 기다리다 응시자 분들 전체가 와이파이 연결을 하려는데 잘 안되어 30분 지연 시작하여 1시 30분에 시작하는 것으로 변경되었습니다.
스태프 분들께서 계속 왔다갔다 하며 공지해주시고 정말 고생해 주셨습니다.
오후 1시 반에 메일이 왔고 침묵 속에서 타자 소리가 갑자기 엄청 들리기 시작했습니다.
우선 처음 10분은 문제를 쭉 읽어가며 빠르게 파악하였고 리포지토리를 복사하여 인텔리제이를 켜고 바로 구현할 기능 목록 부터 정리했습니다.
코딩을 시작하기에 앞서 파일을 저장할 때 코딩 컨벤션을 자동으로 지켜줄 수 있는 Auto Formatting
기능을 활성화 하였습니다.
이후에는 보일러 플레이트에서 기본적인 View
나 Enum
들만 가져와 패키지명을 알맞게 수정하였고 프리코스 덕분에 몸이 무엇을 먼저 시작해야할지 알고 있어서 사용자에게 입력받아 validate
하는 것 까지 빠르게 작성하였습니다.
1시간 30분 동안 구현할 기능 목록을 정리하고 기능 구현에 필요한 constant Enum
과 일부 domain Record
객체들을 만들고 validation
까지 완료하여 실행하게 되면 입력만 받고 객체를 만들어 검증 과정을 거친 뒤 출력 없이 프로그램이 종료되는 것 까지 완성하였습니다.
이제 남은 것은 요구 사항에 맞도록 계산 하는 과정인데 한번 쉬기 위해 잠시 복도로 나와 자체 휴식 타임 10분 정도를 가졌습니다.
과제를 먹으며 남은 시간을 어떻게 쓸지 고민한 후 2시간 안에 코딩을 끝내고 나머지 1시간은 테스트코드와 README
그리고 최종 소감문 까지 작성하는 것을 목표로 잡았습니다.
우테코가 워낙 잘하시는 분들이 많고 험난한 선발 과정이라고 소문이 있는 만큼 돌아가는 쓰레기라도 만들면 좋다하지만 잘 돌아가는 클린코드 를 만들기 위해 처음부터 욕심을 부려 프리코스부터 해왔던 MVC패턴
과 validate
에 굉장히 신경을 많이 썻던 것 같습니다.
시작 때 헤매지 않고 잘 구성한 덕분에 쉴 수 있겠다라는 느낌을 가졌고 잠시 휴식 시간을 가질 수 있었습니다.
이후 계속 코딩을 진행하다 사원을 요구사항에 맞게 선택하는 기능을 추가하기 위해 정해놓은 doamin
객체에 지역변수를 추가해야 했습니다.
하지만 record
는 따로 지역변수를 정의할 수 없기에 결국 class
로 바꾸어 2개의 지역 변수를 추가하고 요구사항을 반영할 수 있었습니다.
또 한번의 고비로써 제일 중요한 근무표를 만드는 함수에서 DaySchedule
이라는 객체를 만들어 반환하도록 구성하였는데 처음으로 코딩 컨벤션을 어긴 곳이었습니다.
함수의 인자를 무려 5개
나 사용하였고 계획한 시간이 다되어 가기 때문에 테스트코드, README
, 최종 소감과 같이 할 일이 많이 있었기 때문에 어쩔 수 없이 찜찜한 마음으로 구성하여 ApplicationTest
가 잘 통과하도록 구성하였습니다.
ApplicationTest
에서는 공휴일에는 주말 근무를 뽑는 것과 같은 사람이 연속으로 근무를 피하는 것에 대한 예외를 테스트하는 케이스가 없었기 때문에 공휴일_테스트
와 근무_오프
테스트를 만들어 모두 성공하였습니다.
또한 프리코스 4주차만큼 모든 단위 테스트를 만들 시간이 충분하지 않았지만 주요 기능과 validation
쪽은 모두 테스트 케이스 작성을 완료하였습니다.
이제 1시간 10분 정도 남은 상황에 프로그램 소개에 대한 README
를 작성하는 것에 40분 정도를 사용했습니다.
27분이 남은 상황에서는 작성한 README
를 바탕으로 빠르게 과제 진행 소감 을 작성을 마치고 마감 15분 전에 모든 제출을 끝냈습니다.
남은 15분은 되게 멍 하니 검토를 하였던 것 같습니다.
어짜피 지금 문제를 발견해 봤자 크게 해결할 수는 없다고 판단되어 헷갈리던 근무 오프 및 공휴일 쪽에 쌍으로 테스트를 걸어 잘 나오는지 출력 테이블을 보고 직접 세어보았습니다.
크게 문제될 건 없겠다고 판단되었고 코테가 마무리가 되었습니다.
퇴실 가능 시간은 마감 30분 전부터 였는데 모든 응시자 분들이 바로 나가지는 않았던 것 같습니다.
앞쪽에 앉아 있어서 몰랐을 수도 있지만 다들 열정 가득히 마감 시간 까지 코테를 진행했던 것 같습니다.
최종 결과는 12월 27일 (수) 오후 3시에 메일로 발표가 된다고 안내를 받았습니다.
에세이, 프리코스, 코딩테스트 까지 최선은 다했고 얻은 것들이 매우 많기 때문에 결과에 상관 없이 너무나도 알찬 시간이었습니다.