우아한테크코스 6기

우아한테크코스 6기(모바일 앱) 1차 합격 및 최종 코딩테스트 후기

Alsong 2023. 12. 18. 14:34

1. 프리코스 1차 합격자 발표

프리코스가 끝나고 약 3주 뒤.. 12월 11일에 1차 합격자 발표가 떴습니다..!

 

 

네??!! 제가 1차 심사에 합격했다구요?? 사실 11월 16일에 프리코스가 끝난 이후 저는 당연히 불합격일 거라고 생각해서 프리코스 복습을 전혀 하지 않았습니다. 그 사이에 회사 면접도 몇 개 있었고, 싸피 코테, 면접도 있었기에 시간이 없기도 했구요..

 

마침 1차 심사 결과가 나온 날인 12월 11일이 싸피 면접날이었습니다. 싸피 면접을 준비하느라 굉장히 바쁘게 시간을 보냈던지라 면접 끝나고 카페에서 잠깐 여유를 만끽하고 있던 도중 이 합격 메일을 받았네요. 메일을 받고 든 생각은 이거 하나였습니다.

 

"대체 내가 왜 합격한 거지??"

 

프리코스를 진행하면서 저는 요구사항을 어긴 것도 많았고, 함수 길이가 15라인을 넘는 일은 부지기수였으며, 디자인 패턴을 적용하지도 않았고, 테스트코드는 작성법을 잘 몰라 단순한 단위 테스트 한두 개가 전부였습니다. 말 그대로 돌아가는 쓰레기를 4주 동안 제출했었죠.. 디자인 패턴의 존재를 4주차가 되어서야 알게 되었고 그마저도 제대로 적용할 줄도 몰랐으니 말 다했네요.. 하하하 거기다 각 주차마다 다른 지원자분들의 코드를 읽어보았는데 다들 너무 잘하셔서 제가 합격할 거라고 전혀 생각조차 하지 않았습니다. 

 

그래서 심사 기준에 대해 생각해 봤는데, 아마 다음의 이유가 아닐까 싶습니다. (어디까지나 저의 생각일 뿐이니 참고만 해주세요!!)

 

1. 자기소개서의 비중이 높은 것 같다.

2. 지금 당장 잘하는 사람보다는 프리코스 기간 동안 크게 성장한 사람을 뽑는 것 같다.

 

2번의 경우는 사실 어떻게 생각하면 당연하기도 합니다. 우테코는 사원을 뽑는 게 아니라 교육생을 뽑는 교육이기 때문이니까요. 저는 나름 프리코스를 진행하며 크게 성장했다고 느꼈고(물론 1주차와 비교해서 그렇다는 것뿐이고 아직 많이 부족하네요..), 그것이 저의 코드에도 반영이 되고 있었음은 사실이었으니까요. 그래서 정말 감사하게도 우테코 운영국에서 저의 잠재력을 높이 평가했다고 믿고..! 최종 코테 준비를 시작했습니다.

 

 

2. 최종 코딩테스트 준비

최종코테는 12월 16일 토요일이었고, 11일부터 15일까지 저에게는 5일이 있었습니다. 그동안 잃었던 감을 되찾고, 프리코스 문제를 다시 풀어보기로 했습니다. 그런데 그전에, 프리코스를 진행하며 가장 아쉬웠던 점 중 하나인 MVC패턴을 다시 공부하고 적용하는 연습을 해보기로 했습니다.

 

사실 그전까지도 MVC패턴을 공부해 보려고 했지만.. 이해가 100% 되지 않았고 적용은 더더욱 무리였습니다. 그러던 중 유튜브에서 우연히 발견한 테코톡이 큰 도움이 되었습니다!

 

https://www.youtube.com/watch?v=ogaXW6KPc8I

 

우테코 선배님께서 정말 이해하기 쉽게 설명을 해주셨더라구요. 감사합니다!!

 

새롭게 알게 된 사실은 이랬습니다.

 

1. Model내부에 Controller와 View의 코드가 있으면 안 된다.
2. View내부에는 Model의 코드만 있을 수 있고 Controller의 코드가 있으면 안 된다.
3. Controller 내부에는 Model과 View의 코드가 있을 수 있다.
4. View가 Model로부터 데이터를 받을 때 반드시 Controller에서 받아야 한다.

 

즉 Controller에서는 Model과 View의 클래스를 import해서 사용해도 되지만 View에서는 Model의 클래스만 import 가능하고, Model에서는 Controller와 View의 클래스를 모두 import해서는 안 됩니다. 이것을 알고 나니 드디어 MVC패턴을 적용해 볼 수가 있었습니다..! 

 

그리고 공부한 내용을 바탕으로 먼저 감을 잡기 위해 1주차 미션이었던 숫자야구를 다시 풀어보았고, 난이도를 높이기 위해 3주차 미션이었던 로또를 풀어보았습니다. 확실히 MVC패턴이 익숙지 않다 보니 오래 걸리긴 하더군요.. 그래도 저의 코드가 훨씬 깔끔해짐을 느꼈습니다.

 

최종 코딩테스트는 보통 4주차 미션보다는 쉽다는 이야기를 많이 들어서, 4주차 미션이었던 크리스마스는 다시 풀지 않았고 5기의  최종코테 문제였던 점심 메뉴 추천 문제를 풀어보았습니다. 가능하면 4기 최종코테도 풀어보고 싶었지만 시간이 없었고, 본 시험에 앞서서 너무 머리를 쓰면 정작 시험때 머리가 안 돌아갈 것 같아 하지 않았네요.. ㅎ 시험 전날은 너무 무리하지 않았습니다.

 

 

3. 시험 시작 전

이 메일이 나한테도 올 줄이야..

 

시험 당일 낮 12시 정각에 메일이 도착했습니다. 각종 블로그에서 수도 없이 보았던 메일을 제가 받게 되니 정말 신기하고도 묘한 기분이 들었습니다.

 

시험은 잠실에 위치한 '우아한 형제들 작은집' 에서 진행되었습니다. 모바일 안드로이드 트랙 지원자들만 이곳에서 시험을 본 듯해요.

 

시험 전부터 작은 고민이 있었는데, 시험이 1시에 시작이니 11시에는 출발할 생각이었고, 그러면 점심을 10시 30분에 먹어야 합니다. 그런데 시험은 저녁 6시까지 진행되니 무조건 3~4시부터 배가 고플 거라고 생각이 되었어요. 저는 배가 고프면 머리가 안 돌아가는 문제가 있어서 하핫.. 그렇다고 밥을 많이 먹자니 졸릴 것 같고, 그래서 간식을 많이 싸가기로 했습니다. 우테코 최종코테는 시험 도중에 간식을 먹을 수 있다는 글을 많이 봤거든요! 당 보충도 할 겸 몽쉘과 초콜릿을 챙겨갔습니다. 그런데 시험장에서도 간식을 엄청 제공해 주셔서 사실 챙길 필요도 없긴 했었네요. 우테코 운영국의 배려에 정말 감사드립니다!!

 

 

이런 귀여운 기념품들도 있었구요 ㅋㅋㅋ 회사 자체의 분위기나 문화가 정말 귀엽다고 느꼈어요. 이것뿐만 아니라 화장실에는 재밌는 만화가 붙어있기도 했었네요! ㅋㅋ

 

여담으로 네트워크 문제로 시험 시간이 1시 ~ 6시에서 1시 반 ~ 6시 반으로 변경되기도 했습니다.

 

 

4. 시험 진행

드디어 1시 반이 되었고, 시험이 시작되었습니다. 문제는 '개발자 비상근무' 라는 문제였고, 어떤 달과 근무자 순서가 주어졌을 때 근무표를 작성하는 것이 문제의 내용이었습니다.

 

처음에는 문제를 읽으며 문제 이해부터 했습니다. 문제를 이해하며 어떻게 구현해야 할지를 생각하다 보니 벌써 30분이 훌쩍 지나있었습니다. 그리고 구현을 시작하고, 출력이 제대로 이루어지는지 까지 확인했을 때 3시간 반 정도 지나고 있었습니다. 그리고 30분 동안 예외처리를 추가하고 ApplicationTest를 한 번 돌려보았는데.. 이럴수가!! 통과가 안 되는 겁니다 ㅠㅠ

 

그래도 시간이 한 시간 정도 남았던 상태라, 최대한 침착하고 제 출력에 어디가 문제가 있는 것인지를 알아보려고 했으나.. 도저히 잡아내지 못했습니다. 출력 예시와 완전히 동일하게 출력되는데, 도대체 무엇이 문제인지를 알 수가 없었습니다..

 

시간은 흘러가고, 아직 기능 구현과 리팩토링을 마무리 짓지 못한 상황이었습니다. 저는 그래도 테케를 통과하는 것이 우선이라고 판단해 해당 문제에 계속해서 시간을 썼지만.. 결국 해결에 실패했습니다..

 

'망했다..' 속으로 생각했고 이판사판으로 일단 제출부터 해야겠다고 생각해서 제출했는데, 웬걸? 제출 플랫폼에서는 테케가 또 통과가 되더라구요? 이 문제는 아직도 미스테리입니다.. 이 글을 쓰고 있는 지금도 로컬과 서버에서 테스트 결과가 다르게 나오는 이유를 찾지 못했어요. 저 같은 분 안 계신가요..? 암튼..

(추가)

원인을 알아냈습니다.. 출력을 할 때 println()함수를 쓰면 테스트가 실패합니다. print()함수를 사용해야 통과가 되네요.. 왜 이런건지는 모르겠습니다.

 

여기까지 되었을 때 시간이 20분 정도 남아있었고.. 평일이면서 법정 공휴일일 경우 "(휴일)"을 출력하는 기능구현 사항을 아직 구현하지 못했는데, 함수 분리도 해야 했습니다. 둘 다 하기에는 시간이 부족하다고 생각이 되었고, 기능구현을 추가하다가 오류를 발생시킬 수도 있다는 생각에, 함수 분리를 하기로 선택했습니다. 근데 이마저도 시간이 부족해서 모든 함수를 15라인 이하로 줄이기는 실패했습니다.. 그렇게 시간이 다 되었고, 올구현은 실패한 채로 시험을 마무리짓게 되었습니다.

 

5. 시험 후기

전체적인 난이도는 5기 최종코테였던 점메추보다는 어려웠다고 생각합니다. 저뿐만 아니라 다른 분들도 그렇게 느끼시는 듯했고, 디코 커뮤니티에서는 체감상 크리스마스보다도 어려웠다는 분도 계시더군요. 제 개인적인 생각으로는 점메추와 크리스마스 사이의 난이도가 아니었나 생각합니다.

 

그럼에도 불구하고 5시간이라는 짧은 시간 동안의 프로그래밍은 쉽지 않은 일이었습니다. 처음 2시간 동안은 뭔가 여유가 있었던 것 같은데, 3시간, 4시간이 지나면서부터는 정말 시간에 쫓기게 되더군요.. 게다가 5시간을 풀로 집중하다 보니 4시간 즈음부터는 머리가 지쳐서 머리회전이 둔해지는 것을 느끼기까지 했습니다. ㅋㅋㅋ

 

우테코 측에서도 5시간이 길다는 것을 알고 계셔서 중간에 강제 휴식 시간을 부여하시기도 했습니다. 이 시간에는 모두 노트북 강제로 덮고 쉬어야 합니다. 정말 일반적인 시험과는 다르죠? ㅎㅎ

 

물론 올구현을 실패했고, 리팩토링도 하다 말았고, 테스트코드는 아예 포기했고.. 게다가 지금 깨달은 거지만 달과 요일을 잘못 입력받았을 시(예를 들어 달에 숫자가 아니라 문자를 입력한다든지) 예외 처리를 하는 것도 빠트렸더라고요.. 아쉬운 것투성이 이지만 다시 시험을 본다 하더라도 그때보다 더 좋은 코드를 짜긴 어렵다고 생각이 들기도 하네요. 그래서 후회는 없습니다. 

 

제 생각이지만, 우테코 측에서 제공한 테케에서 "(휴일)"을 출력하지 않아도 되는 4월을 굳이 선택하셨는데, 그 이유는 이 부분 구현을 미처 하지 못한 분들을 위한 우테코 측의 작은 배려가 아닐까.. 생각했습니다. 이 부분 구현을 못 했더라도 0점 처리가 되지 않게 말이죠. 덕분에 저도 테스트 통과를 할 수 있었구요!

 

이제 합격 여부를 기다리는 일만 남았군요. 떨립니다.. 만약 떨어진다 하더라도 제 모든 걸 쏟아부었기 때문에 후회는 없습니다. 여기까지 온 것만으로도 정말 뜻깊은 경험이었어요. 우테코 정말 감사합니다!!