우테코 7기 최종 코딩테스트 후기
안녕하세요! 12/14, 어제 우테코 최종 코딩테스트를 보고 왔습니다.
제 인생 첫 오프라인 코딩테스트였고, 과정 동안 열심히 준비했다고 생각해 합격 여부와 상관 없이 후기를 남겨보고자 합니다.
1차 발표일이 다가올수록 자신감이 떨어졌었고, 3시에 메일이 안 오길래 아 나는 떨어진건가..? 싶었습니다. 그래서 살짝 시무룩한 상태로 누워있었는데, 4시 30분에 갑자기 합격 메일이 와서 얼떨떨했던 것 같습니다.
저는 프리코스가 끝난 후에 1, 2, 3주차 문제와 6기 최종 문제였던 온콜 문제만 풀어본 상태였습니다.
최종 코테까지 준비할 시간이 5일밖에 남지 않았기 때문에, 하루에 한 문제씩 풀면서 준비했습니다. 리팩토링 제외 4시간 안에 구현 완료하는 것을 목표로 삼았었습니다.
사실 편의점 문제를 다시 푸는 것에 대해 많이 고민했는데, 혹시라도 최종 코딩테스트와 연관성이 있을까봐 그냥 풀었습니다.
그리고 코테 전날에는 새로운걸 하기보단 자신감을 위해 풀었던 문제를 다시 풀었습니다.
또 저만의 체크리스트와 코테에서 마주칠 다양한 상황을 가정해서 해결책을 써놓았는데요, 이게 심신안정에 도움이 되지 않았나 싶습니다. (사실 지금 와서 보니 그냥 정신승리를 위한 문구같기도 하네요.)
저는 잠실 루터회관에 배정됐는데, 집에서 1시간정도 거리여서 점심을 먹고 출발했습니다.
이미 잠실역부터 뭔가 코테보러 가는 것 같은 사람들이 많이 보였습니다. 입실 가능 시간이 12시였고, 저는 12시 10분정도에 도착했는데 꽤 많은 사람들이 도착해있던 기억이 나네요.
(긴장이 되어서 그랬는지, 루터회관에서 찍은 사진이 이것밖에 없더라구요. 이게 정말 아쉬웠습니다..)
자리가 지정석이였는데, 저는 운이 좋게 통로자리에 걸려서 왔다갔다 하기 편했습니다. 짐을 풀고, 와이파이 연결하고, 체크리스트에 적어왔던 대로 세팅도 하고, 남은 시간은 거의 멍때리며 1시까지 기다렸습니다.
1시에 우테코 지원 페이지에 최종 문제가 생겼고, 4주차와 동일하게 private 레포를 만들어 collaborator를 추가하는 방식이었습니다.
( 시험 당일 문제를 정리했던 내용입니다. )
이번 최종 코테 문제는 12월의 크루 출석 시스템을 구현하는 것이었습니다. 구현해야 할 기능으로는 출석 확인, 출석 수정, 크루별 출석 기록 확인, 제적위험자 확인으로 크게 4가지였습니다.
파일 입력부터 정렬 기준 등 자잘한 요구사항과 예외 상황까지 꽤 다양해서, 구현해야 할 양이 상당했다고 생각합니다.
그런데 초반에는 이를 잘 못느껴서 깔끔하게 코드 짜봐야지~ 하다가, 1시간이 지난 후에 위기감을 느끼고 객체지향, 클린코드 모두 무시하고 코드를 짰던 기억이 있네요. (depth가 2는 커녕 4를 넘어가기도 했습니다.)
7기에서는 시험 당일 "돌아가는 쓰레기를 만들라"는 메일이 오지 않았고, 중간에 포비님이 오셔서 그 내용을 말씀해주셨습니다. 사실 이 때 구현하기 너무 바빠서 제대로 경청하지는 못했습니다 😳
그래도 이 때 일단 ApplicationTest가 돌아가는게 우선이라는 것을 다시 한 번 상기할 수 있었고, 거대 쓰레기라도 만들어보려 했습니다.
(결과적으로 주요 비즈니스 로직이 service에 몰려서 200줄이 넘게 되었습니다.)
시험 시작으로부터 4시간이 지난 후인 5시부터 제출 가능했습니다.
저는 시험 내내 방향성을 테스트 통과로 잡았고, 덕분에 다행히 테스트는 통과할 수 있었습니다. 다만 주어진 테스트코드는 제적위험자 확인기능을 테스트하지 않았고, 제가 이 기능을 구현하지 않았다는 사실을 뒤늦게 기능 구현 목록을 정리하다가 알게 되었습니다.
그래서 제적위험자 확인 기능을 구현한 뒤, 다른 지키지 않은 요구사항을 최대한 구현하고, depth나 함수 라인 제한같은 요구사항을 지키기 위한 리팩토링을 하다 보니 시험이 끝났습니다.
시간이 너무 부족했기에 소감문에도 2~3문장만 적어서 제출했던 것 같습니다. 우테코로 많이 배울 수 있어서 감사했다, 최종 코테때 배웠던 것을 많이 쓰지 못해서 아쉬웠다.. 이런 내용으로 작성했습니다.
가장 아쉬웠던 점은, 기능 구현하기도 너무 바빠서 단위 테스트를 작성하지 못했다는 것입니다. 최종 코테를 준비하는동안, 단위 테스트를 작성하는 것을 병행하니까 코드의 오류도 빠르게 찾을 수 있고, 시간도 단축된다는 생각이 들었습니다.
그러나 아직 저에게는 익숙하지 않은 방법이었다 보니, 시간적 압박이 있는 상황에서 쉽사리 TDD를 적용하지 못했던 것 같습니다.
테스트코드가 미흡한 만큼, 기능들이 실제로 잘 동작하는지도 확인하지 못했기 때문에, 분명 잘못 구현한 기능이 존재할 것 같네요.
또 아쉬웠던 점은, 어쩔 수 없다고 생각은 하지만 코드가 너무 지저분하다는 것입니다.
공휴일이랑 월요일들은 어떻게 저장해야 할지 모르겠어서, 아예 달력을 보고 직접 작성했습니다. 그러다 성탄절을 빼먹은 걸 시험 종료 4분전에 깨닫고 급하게 고치기도 했습니다 ㅎ
프리코스를 통해 배운 객체지향, 클린코드를 거의 다 내려놓았던 것 같습니다..
집에 와서 기념품을 뜯어보고 나니, 최종 코테가 끝났다는 것이 실감이 났습니다. 이번에는 피규어가 추가됐더라구요..? 👍
프리코스 4주차 회고에서 작성했던 것처럼! 합격하면 너무 좋겠지만 불합격하더라도 이번 경험을 통해 많이 성장했다는 사실에 만족하며, 다음 기회를 위한 발판으로 삼아야겠습니다.
최종 코테까지 달려오신 모든 분들 너무 고생하셨습니다~
+) 코테 당시 이동할 때 반복재생한 심신 안정되는 노래인데 슬쩍 공유하고 가겠습니다🤓
고생하셨습니다!