지난주 토요일 우테코7기 최종 코테를 보고 왔습니다.
설정을 잘못해서 코딩에 많은 시간을 소요한 점과, 완벽하지 못한 코드를 제출했다는게 만족스럽지 못하여 후기를 작성하지 않으려 했지만 후회되는 부분, 만약 다음에 지원하게 된다면 잊지 말아야 할 부분이 있어 회고를 작성하게 되었습니다.
1. 1차 합격
사실 1차 합격이 될 줄 몰랐습니다. 자기소개서도 첨삭을 받지 못한채 내었고, 과제도 모든 테스트케이스를 통과하긴 했지만 구현 실패한 부분이 많았기 때문입니다. 자신감이 너무 없어서 프리코스 후에 스터디를 모집해서 공부하지 않기도 하였습니다.
하지만 왠걸,, 1차에 합격했습니다. 합격한 것을 확인하고 부랴부랴 최종 코딩테스트에 준비를 시작하였습니다.
2. 최종 코딩테스트 준비
최종 코테를 준비하기에 앞서 하루에 한과제씩 풀어보고자하는 계획을 세웠습니다.
이제까지의 과제와 코테가 공개되어있는 만큼 많은 문제들이 공개되어있었지만, 기출은 최신! 이라는 마음에 가장 최근 문제들을 위주로 풀고자 하였습니다. 또 4주차 과제 편의점이 어려웠기도 했고, 가장 최신의 문제라 판단하여 마지막 과제를 포함하여 총 5문제를 풀었습니다.
문제들을 풀면서 프로젝트 구조를 어떻게 구성해야할지에 대해서 고민이 많았습니다. 오랜만에 과제를 해서 어떤식으로 문제를 풀어야할지 생각이 안났기 때문이죠,,, 그래서 편의점 문제는 시간을 재지 않으면서 풀어보고, 이전에 제출했던 과제들을 다시 보면서 "이런식으로 작성했었지", "이런 구조로 호출했었구나"와 같은 감을 다시 익히는데 집중했습니다.
이후 5기,6기 문제들을 풀때에는 시간을 재면서 풀었고 5시간 내에 작성하도록 준비하였습니다.(하지만 최종 코테 후 느낀점은 적어도 4시간 아니 4시간 30분에는 풀어야만 했었던 것 같아요.)
추가로 Enum 클래스, 잊지말아야 할점, test 코드등을 미리 정리해갔습니다.
근데 사실 이 문서를 볼시간이 없었기 때문에, enum, util과 같이 바로 복사 붙여넣기 해서 쓸 수 있는 것 아니면 체화시켜가는 것이 좋을 것 같습니다.
3. 최종 코딩테스트 당일
최종 코딩테스트 당일 겪은 우당탕탕 겪은 문제점들 시작합니다...
1. intelij AI 옵션
코딩테스트 당일 늦지 않게 도착해서 우테코에서 요구한대로 ai 옵션을 끄고자 하였습니다.
사실 그 전까지 copilot과 같은 것들을 사용하지 않았기 때문에 또 끌게 있었나? 싶었지만 intelij 자체에 ai 기능이 존재해, 해당 기능을 꺼야만 했습니다.
하지만 이를 끄는 과정에서 아주 중대한 실수를 했는데요,,, 바로.. (끄면 안되는 것으로 추정되는) intelij의 자동완성 기능을 꺼버린 것입니다..
원래라면 "클래스명."만 작성하면 해당 클래스에 작성된 메소드명이 뜨거나, 변수 자동완성을 해주는 등 기타 편의 기능을 제공하는데요 제가 이 기능을 빼버렸습니다. 그래서 그런지 오타가 잘 발견되지도 않고, 메소드를 일일히 검색해서 확인해야하는 등 시간 소요가 많이 되었습니다.
시험을 수행하던 당시에는 제가 너무 긴장해서 그런지 이게 당연하다고 넘겼는데, 코치님에게 한번 체크를 하거나 주위에 물어보는 등 했으면 어땠을 까 하는 아쉬움이 남아 눈물을 조금 흘렸습니다,,, 다들 헷갈리는게 있으면 꼭 물어보세요.
혹시 몰라 ai 기능을 끈 옵션 상태를 사진으로 남겨놓습니다. 하지만 그대로 사용하기 보단, 최종 코테 때 코치님께 여쭤보세요,,,
show suggestions as you type : intelij 자동 완성기능 사용/해제
Machine Learning-Assisted Completion / Sort completion suggestions : intelij ai 기능 사용/해제


2. 레포지토리명
코테 당시에 레포지토리를 새로 추가했는데, 오타로 인해 컨벤션을 지키지 못했습니다.
"view"여야만 했던 디렉토리 명을 "View"로 작성하였는데요, 로컬에서 수정을 한 후에 잘 돌아갔기에 문제가 없다 판단하였습니다.
하지만 제출 후 테스트를 실행해본 결과 "예기치 못한 문제로 빌드에 실패했습니다(?)"와 같은 에러가 발생하였습니다.
무엇이 문제인지 몰라서 결국 git clone을 해서 확인해본 결과 github 디렉토리에 올라간 디렉토리 명이 "View"로 되어있는 것을 확인했습니다. 로컬에서 어떤 시도들을 해도 (로컬에 push하지 않은 채 남아있는 모든 파일들을 push한 후에도) 에러가 나서 멘붕에 빠졌습니다.
최종 제출까지 시간이 5분 이하로 남아있었기에 급한대로 코드에 존재하는 모든 Import 문에서 view를 View로 수정하고 push하였습니다. (추후에 확인해보니 테스트케이스가 통과한 것을 확인할 수 있었습니다.)
3. 기능 명세 확인 부족
후기를 보면서 다들 기능 명세를 꼭 확인하라는 말이 있었습니다.
저는 이를 염두에 두고있었기에, 당연히 다 봤다고 생각하였습니다.
하지만 왠걸 전혀 아니였습니다.... 테스트코드를 위해서 `DateTimes`에 mocking이 필요했고, 이때문에 특정한 라이브러리를 사용하라는 문구가 있었는데 이걸 보지 못하고 지나쳤습니다...
네.. 당연한 수순으로 기능은 돌아가지만 mocking이 안돼 테스트코드가 계속 실패하는 코드를 만들었습니다.
추후 테스트 코드를 뜯어보면서 제가 사용한 `DateTimes.now()`가 문제가 있다고 판단하여 과제 페이지를 다시 본 후 import 문을 수정한 후에 테스트가 통과는 하였지만, 굉장히 많은 시간을 소요했습니다.
제발.. 기능만 읽었다고 다 읽었다고 생각하지 마시고, 꼭 문서 끝까지 다 보세요!!
+추가
오늘 글을 작성하기에 앞서 분명 기능 구현을 했는데 실패라고 뜬 케이스가 왜그럴까?에 대해서 살펴보았습니다.
그 결과 사용자에게 잘못된 입력을 받는 경우 `IllegalArgumentException` 을 발생시켜야 했는데 저는 `IllegalStateException`을 발생시켰더라구요 ㅎ...
에러코드를 자세히 보지 못했는데 다 알려주고 있었던 코드.. 긴장하면 이런 사소한 것도 안보이는 것 같습니다..
Exception 코드만 수정하니 테스트 케이스 2개가 추가로 맞더군요. 눈물날뻔했습니다..ㅎ..
4. 끝내며
결론적으로는 5개의 테스트 중 한개의 테스트 코드만 통과한채로 완료하였습니다.
이런저런 실수로 아쉬운 점이 많이 남는 테스트였던 것 같습니다.
하지만 프리코스를 진행하면서 많은 걸 배울 수 있어서 좋은 경험이였던 것 같습니다.
코딩테스트같은 코딩이 아니라 진짜 프로젝트를 위한 코딩을 한 경험? 진짜 특별한 경험이라고 생각하는 만큼 지원에 주저하신 분들은 꼭 지원해보세요. (저만해도 2번 미루다가 지원했는데 후회됩니다)
그리고 최종 코테 전 이 글을 보실 분들을 위해서 팁을 적어놓자면
1. 자주 쓰는 코드는 정리해가세요
ex. enum 클래스, inputView, outputView, test코드 등등
2. 기능 구현은 테스트 코드를 한번 보고 관련된 기능을 먼저 구현하세요.
이번 최종 코테에는 출석하기, 수정하기, 조회하기 등 다양한 기능 요구사항이 있었지만 출석하기에서만 테스트 코드가 4개 있었습니다.
물론 테스트 결과가 다는 아니지만 심적으로 통과되면 좋은건 사실이니까요?
3. 시작 전 모르는 건 물어보세요
코치던, 주변 사람이던 물어보세요. 저처럼 후회하지마시고...
4. 과제 페이지를 처음부터 끝까지 정독하세요
기능 부분만 읽지마시고, 끝까지 읽으세요.
5. 지난 기수의 문제를 풀어보는 것도 좋지만 1~4주차 과제를 다시 풀어보는 것을 개인적으론 권장합니다.
이번 프리코스에서 파일읽기, DateTimes 모듈을 모두 활용했던 것으로 기억합니다.
해당 기능들이 지난 기수의 1~4주차 과제에도 있는지는 모르겠으나 제가 느낀바로는 우테코는 과제를 진행하면서 한단계한단계 배워나갈 수 있다는 느낌을 주었습니다.
최종 코테도 1~4주차 과제의 연장선상인 테스트를 낸 것 같다는 생각이 들었습니다.
따라서 프리코스의 과제들을 다시 풀어보는 것을 개인적으로 권장합니다!
6. 긴장하지 마세요!!
긴장 되지만 긴장하면 될것도 안되고, 보일것도 안보입니다.
긴장이 되면 심호흡을 하기,
에러가 나면 에러를 유심히 살펴보기,
기능을 구현했는데 테스트가 통과하지 않는다면, 과제 페이지를 다시 한번 정독하기!
'회고' 카테고리의 다른 글
객체지향의 사실과 오해 (0) | 2024.12.13 |
---|---|
[우아한 테크코스] 프리코스 2주차 회고 (0) | 2024.10.30 |
[우아한 테크코스] 프리코스 1주차 회고 (3) | 2024.10.22 |
[24.06.28] 99클럽 코테 스터디 40일차 TIL (0) | 2024.06.28 |
[24.06.27] 99클럽 코테 스터디 39일차 TIL - filter (0) | 2024.06.27 |