우테코 최종 코테 눈물의 회고 🥺

영슈·2023년 12월 20일
1

우테코-프리코스

목록 보기
5/5
post-thumbnail

우테코 최종 코딩 테스트를 쳤습니다.

작성일 20일 기준으로 , 다른 분의 테스트 코드를 실행하며실수도 발견하고 ,
그동안 기다리며 심란했던 기분을 회고를 적으며 좀 정리하고자 회고에 대해 작성합니다.

갔던 여정이나 , 캠퍼스를 들어가며 마주한 감흥에 대해서는

문제의 난이도

문제의 난이도는 제 기준으로는 ,
페어 매칭 관리 보다는 쉬웠고
5주차인 메뉴 관리 보다는 어려웠던 거 같습니다.

특히 , 이틀 연속 근무일 때 처리하는 법을 얼마나 빨리 생각하고 구현하냐가 관건인거 같았습니다

해당 문제를 처음에는 중복인지 체크하고 기존 사람을 단순 String 변수에 저장한 후 ,
있으면 출력하고 문자열을 다시 초기화 하는 식으로 구현을 할 까 생각했었습니다

하지만 , 중복에 중복이 될 경우가 충분히 발생할 수 있을것 같았습니다.
그런 경우 , 로직이 복잡해져서 다른 방법을 생각하기로 결정했습니다.

그러던 중 Queue 의 특성인 FIFO 를 생각했습니다.
단순 , 중복된 근무자가 있을시 Queue 에 넣고 , Queue에 있을때는
index 를 증가하는게 아닌 Poll 로 제거하는 식으로 하면 되겠다고 Queue 를 사용해서 구현했습니다.

400

그러면 , 이제 왜 눈물을 흘렸는지 설명하겠습니다. ( 물론 진짜 울지는 않았습니다 🥺🥺 )

단위 테스트 작성의 부족함

최종적인 기능 완성은 3시간 20분 만에 완성을 했습니다.
예상한 시간보다 더욱 오래 걸려 당황해서 , 어느 부분부터 리팩토링을 해나가야 할지 막막했습니다.
그래서 , 우선
1. 하드 코딩한 상수를 static 으로 분리
2. 도메인 패키지 별 분리
3. 함수 , 최대한 가독성 있게 분리
와 같은 쪽으로 이뤄 나갔습니다.

그러던 중 , 큰 실수를 하게 됩니다...

600

바로 , 근무표 출력을 하는 부분에서 , 최적화를 하기 위해
오늘의 상태를 관리하는 TodayStatus 에서 문자열을 가지게 하는 리팩토링을 하던 중,

"(휴일)" 을 -> "휴일" 로 변경해버리는 불상사를 저질려 버렸습니다... 😭
코드에서 제공해주는 기본 테스트에서는 해당 부분을 검증하는 로직이 없어서 계속 Pass가 됐으므로 안일하게 진행을 했던 것이 문제였습니다.

이렇게 간단한 테스트 코드만 있어도 검증이 가능했을 기능이지만 ,
시간 부족과 리팩토링의 막막함 때문에 테스트를 생각나는 부분만 구현을 한게 문제 였습니다.

끝나고 , 완벽하게 했는지 확인하기 위해 계속 코드를 돌아봤지만
해당 실수는 일요일 부터 오늘까지 확인은 커녕 발견도 하지 못했습니다.

이러한 점들에서도 테스트 코드의 중요성을 다시 한번 깨닫는 계기였습니다.

꼼꼼한 기능사항 체크

이번 기능 요구사항을 처음 작성할때는

README 의 기능 요구사항을 보고 " 출력을 하는게 마지막 밖에 없네? ""라고 생각하고
출력과 입력 요구사항 부분은 작성하지 않고 도메인 요구사항을 중점적으로 작성을 했습니다.

400

그리고 이는 위에서 말한 사항을 확인하지 않게 하는 안일함과
평일이며 공휴일 인 경우에만 (휴일)을 출력하게 하는 요구사항을 까먹게 했습니다.

500

해당 부분이 저의 공휴일 / 주말 / 평일을 구분짓는 함수였습니다.

500

해당 부분 역시 , 특별한 날이고 평일인지 조건문만 추가를 하면 , 평일 공휴일 과 주말 공휴일이 구분이 가능했습니다.

구현을 쉽게 완성할 수 있는 상황이지만 , 요구사항 정리의 부재로 구현을 까먹고 마무리한게 정말 아쉽게 느껴졌었습니다.

마무리

위의 부분에서 다소 부족함이 있어서 아쉬웠지만 ,
그래도 , 준비하는 1주일간 정말 행복과 절망과 함께 열정적으로 살았던 거 같습니다.

다른 뛰어난 분들이나 주변 사람들의 탈락 때문에 그들의 탈락에 미안함을 느끼며
부끄럽지 않은 제가 되기 위해서 1주일간 정말 최선을 다해서 준비를 한 거 같습니다.

하루에 문제를 3개씩 풀며 12시간 정도를 기능 과 도메인 설계 ,
그리고 자바 코드 작성에만 시간을 썼던거 같습니다.
그렇기에 , 1주일 동안 다른 고도화 된 부분이 아니라
기본적인 설계와 자바에 대한 기본 실력이 정말 늘었던 거 같습니다.

대부분의 개발자들은 자신이 원하는 대로 코드가 짜지기를 원하고 ,
부족한 실력을 완성하거나 혹은 최상의 설계를 완성하길 원합니다.
하지만 , 빠듯한 시간안에 모든걸 완성해야 한다면? 퀄리티가 어떻든 완성을 하라고 요구를 받으면?

이번 마지막 최종 코테는 제한적인 시간 안에 어떻게든 기능을 완성하라는 다소 특별한 요구사항 이였으므로
색다른 경험이였던 거 같습니다. 그렇기에 메일에서도 말씀해주셨듯
준비하는 기간도 , 응시한 시험도 시험이 아닌 또 다른 교육이였던 거 같습니다.

정말 감사했습니다! 또 , 그동안 모두 너무너무 수고했습니다!!
끝나고 나서 발견한게 너무너무 아쉽네요


링크
https://github.com/youngsu5582/java-oncall-6-youngsu5582

2개의 댓글

comment-user-thumbnail
2023년 12월 21일

저도 휴일 출력 부분을 잘못 구현해서 공감되네요 ㅠㅠ 그래도 최종 합격자는 코테만 보는건 아니니까 다른 곳에서 어필되었다면 충분히 좋은 결과 있으실겁니다! 화이팅!

1개의 답글