기다리고 기다리던 우테코 프리코스의 1차 결과가 나왔다.
운이 좋게도 우테코 프리코스에 1차 합격을 하게 되어서 최종 코딩테스트를 치게 되었다..🥹
사실 4주 차 과제를 만족스럽게 하지 못했고 자소서에 인턴을 하고 있다고 솔직하게 써놔서 불합격 스택이 엄청나게 쌓인 상태였기 때문에 당연히 떨어질 줄 알았다. 그래서 메일이 왔다고 했을 때 열어보는 것이 조금 두려웠다.
하지만 인턴 기간 중에 죽어라 과제를 하던 내 모습이 생각나서 떨어져도 만족스러웠다..라고 생각하며 메일을 열어봤는데 다행히도 1차 합격을 할 수 있었다..ㅠㅠ
경쟁률은 프론트 기준으로 1주 차 과제를 할 때 PR이 450개 정도였는데, 최종 코딩테스트를 본 사람이 85명이니까 1:5.x 정도였던 것 같다.
내가 왜 붙었을까 곰곰이 생각해 보면 내 인생을 뒷받침해 준 블로그와 간절히 쓴 자소서 덕분이 아니었을까 싶다..🥲
1차 결과가 나왔을 때 당시 디스코드를 반응을 살펴보면서 많은 분들이 아쉬워하고 불합격에 대한 회고를 쓰신 글을 봤다.
그중에서는 나보다 대단하신 분들도 많았고 우테코를 여러번 도전하신 분들도 계셨다.
그런 분들이 남긴 글을 보고 나니 최종 코테에 대한 기회가 정말 소중한 기회라는 것을 느꼈고, 이 기회를 합격으로 만들고 싶어서 나름 최선을 다했다.
코테 준비
사실 1차에 합격을 할지도 몰랐던 터라, 당시 토스 과제전형을 하고 나서 부족한 점들을 보완하고 있었다.
React 위주로 공부를 하고 있었기 때문에 1차 합격을 하고 나서 허겁지겁 대비를 하긴 했지만, React를 공부하는 거나 JS를 공부하는 거나 본질은 거의 비슷했다.
요즘 프론트를 하면서 느끼는 점인데, 디자인 시스템을 잘 구현해 두면 UI를 구성하는 것은 컴포넌트를 ctrl+v만 해도 만들 수 있을 정도로 쉬워졌다.
그럼 뭐가 프론트에게 중요한가? 라고 생각해 보면 효율적인 데이터 핸들링과 구조설계, UX 인 것 같다.
UI를 구성하는 데는 알고리즘이 필요하지 않지만, 동일한 데이터를 받았을 때 어떻게 로직을 어떻게 구성해 데이터를 처리할 것인가는 알고리즘이 필요하다. 효율적인 데이터 처리를 위해선 그냥 로직이 돌아가게 하는 것뿐만 아니라, JS라는 언어에 맞게 선언적이고 효율적으로 로직을 구성해야 성능이 좋아지고 이는 좋은 UX로 이어진다.
이를 위해선 결국 JS의 기초가 탄탄해야 한다는 것을 많이 느끼고 있다.
우선 우테코 코딩테스트의 목적은 짧은 시간 내에 얼마나 기능을 만들어내는지가 관건이다.
직접적으로 우테코에서도 "우선 돌아가는 쓰레기를 만들어라"라고 말하고 있듯이 이를 목표로 준비를 했다.
템플릿 제작
우테코를 풀다 보면 비슷한 로직을 요구하는 경우가 많았다.
검증에 관한 validation부터 까다로운 csv 파일을 불러오는 코드 같은 것들을 최대한 템플릿화 해두어서 바로 쓸 수 있게 해 두었다.
우테코 6기에서 코드잽 이라고 하는 서비스를 만들어 둔 게 있어서 이를 활용해 보았는데 꽤나 유용했다.
노션에 코드를 붙여두고 쓰는 것보다 직관적이고 편했다.
연습 풀이
- 6기 최종 문제: 온콜 (4시간 20분)
- 6기 4주차 문제: 크리스마스 프로모션 (5시간 8분)
- 5기 최종문제: 점심메뉴 추천 (3시간 44분)
- 5기 4주차 문제: 다리건너기 (3시간 57분)
코딩테스트에 대한 연습은 역시 이전 기수들의 문제를 하나씩 되짚어가면서 풀어보았다.
(나이를 먹으니까 5시간 동안 앉아서 풀집중 상태로 문제를 푼다는 게 너무 힘들었다,,)
문제를 하나씩 풀 때마다 이전 문제와 중복되는 코드들을 템플릿화 해두었고, 시간이 오래 걸리는 원인을 다음 문제를 풀 때에는 해소하기 위해 노력했다. 그러다 보니 6기 문제를 풀 때보다 5기 문제를 풀 때는 좀 더 수월하게 풀 수 있었다.
다만, 나의 경우에는 변수명과 README, 커밋 내용을 생각하는 부분에서 쓸데없이 많은 딜레이가 걸렸다.
코드의 경우에는 템플릿을 만들면 어느 정도 해결 되었지만, 그때마다 적절한 내용을 생각해야 하는 부분들이 잘해야 한다는 강박과 맞물려 딜레이가 생기고 말았다.
그래서 실제로 코딩 테스트를 칠 때는 이런 부분들을 조금 생략하고 하려고 하였고, 변수명이 바로바로 생각나지 않을 때를 대비해서 리스트를 만들어 두기도 했다.
(실제로는 이런 걸 볼 시간도 없었다.)
또한 이번 코딩 테스트에서는 AI를 사용하지 말라는 내용이 있어서 조금 두려웠다.
사실 우테코 프리코스 문제들을 풀면서 Claude와 GPT 선생님에게 계속 이게 좋은 구조가 맞나요.. 이게 왜 안될까요..ㅠㅠ 하면서 해결했기 때문이다.
하지만 4주 차 문제를 풀다 보니 하나 느낀 점이 있는데, AI를 사용하는 것보다 오히려 문제가 발생하는 부분에 집중해 하나씩 꼬인 부분을 풀어가는 게 더 빠르게 과제를 수행하는데 도움이 되었다. AI를 사용하면 당장의 문제를 해결하는 데는 도움이 되지만 점점 빈도가 늘어나다 보면 더 이상 내가 통제할 수 없는 코드가 된다는 것을 느꼈다..
그래서 연습 문제를 풀 때는 AI를 일절 사용하지 않고 문제를 풀어봤고 MDN을 참고하는 것 만으로도 큰 어려움 없이 모든 문제를 해결할 수 있었다.
최종 코딩 테스트
입장
최종 코딩테스트는 선릉 캠퍼스에서 이루어졌다.
10분 일찍 도착했음에도 불구하고 많은 분들이 이미 와 계셨고 장소가 협소하다 보니 엘리베이터에서 내리자마자 다시 1층으로 내려가시는 분들도 있었다..ㅋㅋ 굳이 일찍 갈 필요는 없었다.
그렇게 본인 확인을 하고 간식을 챙겨 강의실로 가면 지정된 좌석이 있어서 앉으면 됐다.
자리마다 선물이 하나씩 놓여 있었는데, 피규어와 스티커, 노트, 연필이 들어있어서 테스트 때 쓰라고 주신 것 같았다.
세심함이 느껴져서 되게 좋았던 것 같다.
테스트
7기 최종 테스트 문제는 12월의 출석 시스템을 만드는 것이었다. 크게 4가지의 구현 사항이 있었다.
1. 출석 확인
2. 출석 수정
3. 크루별 출석
4. 기록 확인
(문제와 관련해서 디스코드 방에 백엔드 자료가 올라와 남겨둔다)
시작과 동시에 README를 작성하면서 내용을 훑어보았는데.. 보자마자 든 생각은 7기 4주 차 편의점과 맞먹는 난이도였다고 생각한다.
문제를 보고 조금 겁을 먹긴 했는데, 연습한 대로 입력, 출력, 검증, 기능 4가지 사항에 맞춰 분류하여 README를 작성하였고 순서에 맞춰 기능을 하나씩 만들어 갔다.
사실 다른 분들의 후기를 보니 에러상황을 맞이해서 힘들었다고 하시는 분들이 많이 계셨던 것 같은데, 나의 경우에는 크게 막히는 부분은 없었다. 다만 그냥 순수하게 기능을 완성하지 못했다.
화장실도 참아가며 생각한 로직을 구현하기 위해서 쉴 새 없이 타자를 쳤고, 객체를 원하는 형태로 가공하고 기능을 구현하는데 크게 한 고민이나 어려움도 없었다. 하지만 기능의 반정도 만들었을 때 시간을 확인해 보니 5시 40분쯤 되어있어서 큰일 났다는 생각이 들었다.
더 구현을 하느냐 정리를 하느냐 고민하다가 내가 구현한 사항들을 잘 정리해서 README에 남겨두었고, 한 10분 정도 남아서 살려달라는 단말마의 비명이 담긴 소감문을 끝으로 최종 코딩 테스트는 끝이 났다..
아쉬운 점
사실 아쉬운 점이 한 트럭이다.
내가 여태까지 노력한 것을 다 보여주지 못한 것도 아쉬웠고, 돌아가는 쓰레기를 목표로 했기 때문에 꼼꼼함을 보여주지도 못했다.
적어도 본인이 어떤 특징을 가지고 있는 사람인지 나타내고 싶었는데 그냥 허겁지겁 구현하는 사람이 된 것 같아서 슬펐다.
특히 시간만 더 있었으면 다 구현할 수 있었을 것 같다는 느낌이 드니까 더 아쉬웠던 것 같다.
왜 잘 구현한 것 치고 속도가 느렸을까에 대해서 이제 와서 돌이켜 보자면 잘 해야한다는 강박에 사로잡혀 버려야할 부분과 챙겨야할 부분을 명확하게 나누지 못한 것 같다.
급한 와중에도 잘 해야 된다는 생각에 deps 제한이나 15줄 제한, 구조 등 요구사항을 신경 쓰고 있었는데, 사실 이보다 중요한 것이 테스트를 빠르게 통과하는 것이었다. 하지만 둘 다 챙기려고 하다 보니 어느 한쪽도 챙기지 못한 것 같다.
다음 최종 코테를 준비하는 기수가 이 글을 본다면 꼭.. 사사로운 것들에 얽매이지 말고 빠르게 테스트 코드를 통과하기 위한 연습을 하라고 말해주고 싶다.
마무리
너무너무너무 7기가 될 수 있으면 좋겠다고 생각한다.
이 글도 사실 쓸지 말지 고민을 많이 했지만, 그래도 이것도 하나의 경험이라고 생각해 글을 작성해 본다.
우테코 프리코스를 하면서 참 많은 것들을 깨우쳤다.
- 근거 있는 개발을 하는 법
- 회고를 통한 메타인지
- AI 사용의 위험성
- 개발자를 위한 코드 및 문서를 작성하는 법
- 코드 리뷰의 장점
- 메타인지의 중요성
- ...등등
많은 것들을 느낄 수 있었던 우테코였기에 최종 코딩 테스트를 잘 해내지 못한 점이 더 아쉽게 다가오는 것 같다.
하지만 이번에 배운 것들을 토대로 더 성장하기 위해 노력해 봐야겠다.
이 글을 보는 7기 프리코스 인원들 모두 27일까지 너무 괴로워하지 말고, 연말까지 원하는 바를 잘 이루며 지냈으면 좋겠다. 🎄✨
'Programming' 카테고리의 다른 글
[우테코 프리코스/7기] 프리코스 3주 차 회고 (4) | 2024.11.07 |
---|---|
[우테코 프리코스/7기] 프리코스 2주 차 회고 (1) | 2024.11.02 |
[우테코 프리코스/7기] 프리코스 1주 차 회고 (4) | 2024.10.24 |
[우테코 프리코스/7기] 커밋 방식 알아보기 (4) | 2024.10.16 |
[우테코 프리코스/7기] 본격적인 시작 전 준비 (0) | 2024.10.15 |