본문 바로가기
개발/기타

우아한 테크코스 4기 백엔드 최종 합격 후기

by hamcheeseburger 2022. 1. 22.

우아한 테크코스 선출 과정은 (1차) 코딩테스트 및 자기소개서 -> 3주간의 프리코스 -> 최종 코딩테스트 로 이루어 집니다.

(1차) 코딩테스트

총 7문제이며 시험 시간은 5시간이었다.

어려운 알고리즘 문제는 아니고 대체적으로 구현 문제로 이루어져 있었으며 뒤로 갈수록 난이도가 높아졌다.

1, 2번은 풀이 시간이 각각 20분도 걸리지 않을 정도로 난이도가 쉬운 편이었다. 다만 제출한 코드의 정답 여부를 알려주지 않는 형태로 진행이 되어, 테스트 케이스를 만드는데에 시간을 써야만 했다. 

결론적으로 총 7문제중 6문제를 풀고 코딩테스트를 마무리했다. 마지막 문제인 7번을 풀려고 할 때 쯤에 시험 시간이 1시간 밖에 남지 않아서, 이미 풀었던 문제를 검토하는 것이 더 낫겠다고 판단했다. 

 

자기소개서

우아한테크코스의 공통질문은 아래 4개이다. 

 

1. 프로그래밍 학습 과정과 현재 자신이 생각하는 역량은?

2. 프로그래머가 되려는 이유는 무엇인가요?

3. 마음이 끌리는 무엇인가에 긴시간 동안 몰입해 본 경험이 있나요?

4. 우아한 테크코스에 참여하려는 이유는 무엇인가요?

 

굉장히 단순하면서도.. 대답하기 어려운 질문들이다. 자소서 쓰는 시간이 제일 괴로웠던 것으로 기억이 남는다.

일단 1번 문항에서는 대학교에서 컴퓨터학과 전공생으로 프로그래밍을 접했고, 그 과정에서 어떤 언어를 배웠으며 어떤 프로젝트를 하였는지 기술했다. 또한 인터넷을 통해서 학습하는 방법은 빠르고 효과적이지만 그렇게 얻어낸 지식들이 내 머리 속에 쌓이지 않는 느낌이어서 책으로 학습할 때도 있다고 작성하였다.

 

2번 문항은 굉장히 단순하고 기본적인 질문인데 제일 답하기가 까다로웠던 것 같다.. 프로그래밍을 하면서 왜 하고 있는지, 왜 하고 싶은지 스스로 정리가 안되어서 그랬던 것 같다. 이 질문을 계속 곱씹으며 생각하면서 나에 대한 성찰을 하게 됐던 계기가 되었던 것 같다. 나는 대학교 입학 전까지만 해도 무언가를 밤새워서 하거나 시간이 가는 줄 모르게 몰입했던 경험이 없었다. 프로그래밍을 접하고 처음으로 시간 가는 줄 모르게 몰입했던 경험을 했어서 지금까지 계속 꾸준히 할 수 있었던 것이 아닌가 싶다. 이러한 경험들을 잘 풀어내어 적어냈고 앞으로 만들고 싶은 소프트웨어에 대해서도 기술하였다.

 

3번문항은 꼭 프로그래밍과 관련된 것이 아니어도 되며, 1년 이상을 투자해 결과물을 만들어 낸 것이 있는지에 대해 묻는 질문이었다. 나는 대학교 영화동아리에서 회장직을 맡아 운영했던 것을 중점으로 작성하였다. 고등학생 때 부터 영화를 관람하고 영상을 제작하는 것에 관심이 있었고, 실제로 대학교에 들어가서 영화동아리에 들어가 1년간 활동하고 그 다음해에 회장으로 선출 되었던 이야기까지 풀어냈다.

회장이 되고 팀원들을 리드하는데에 있었던 문제점, 영화를 제작하는 데에 어려웠던 점을 기술 하였으며 문제점을 파악하고 해결했던 방법까지 구체적으로 작성하였다. 

 

4번문항은 내가 우아한 테크코스에 참여하려는 명백한 이유가 있었기에 작성하는데에 크게 어려움을 겪지는 않았다. 최대 글자수도 500자였기 때문에 부담없이 작성했다. 나는 근 1년간 내 프로그래밍 실력에 대해 의심을 품고 있는 상태였다. 인터넷에 떠돌아 다니는 코드를 복사 붙여넣기 해서 구현하고, 모듈을 마구잡이로 가져다 기능을 구현을 하는 것이 진정 내 실력이라고 말할 수 있나? 어떻게해서든 구현을 완료하지만 이렇게 코드를 작성하는 것이 과연 맞는 것일지에 대한 의문을 품게되었다. 코드가 동작하는 것을 넘어 효율적이고 깔끔하게 작성하는 방법을 알고 싶었고, 우아한 테크코스가 그 부분에서 도움을 줄 수 있다고 생각하여 지원하게 되었다.

 

위의 4개 문항 말고도 마지막 문항에 깃허브 링크나 포트폴리오 링크를 첨부할 수 있는 칸이 있는데, 나는 3번 문항에서 언급한 동아리 활동 사진들도 함께 첨부하였다. 내가 작성한 모든 것들에 대해서 증명할 수 있는 자료가 있으면 첨부하는 것이 좋을 것 같다.

 

1차 코딩테스트 결과와 자기소개서를 종합하여 평가해서 1차 합격자를 발표한다고 한다.

코딩테스트에서 최소 n개 이상 맞은 사람들을 대상으로 자기소개서를 평가하여 1차 합격자를 선출한다고 말씀한 바가 있다. 

자기소개서 비중이 높은것 같으니 심혈을 기울여 작성하는게 좋을 것 같다.

 

1차 합격!

 

1차 심사에 합격을 하게 되면 3주간의 프리코스 과정을 진행하게 된다.

 

프리코스

- 숫자야구게임 (1주차)

1주차라 가벼운 문제를 내셨다고 했다. 인터넷에 많이 떠돌아 다니는 문제이며 그 만큼 공개된 코드들도 많다. 하지만 우테코 프리코스 과정에서는 기능을 완성하는데에 집중하기 보다는 깔끔한 코드를 작성하는 데에 중점을 둔다. 함수와 클래스 분리를 하여 코드를 작성해야 한다.

 

3주간 프리코스 과정에서 공통적으로 적용되는 요구사항이다.

- Java 코드 컨벤션을 지킬 것

- Indent depth를 3이 넘지 않도록 구현할 것

- 3항 연산자를 쓰지 않을 것

- 함수가 한 가지 일만 하게 할 것

 

위의 요구사항을 지키면서 기능단위로 커밋하는 것이 제일 중요한 과제인 것 같다.

 

- 자동차 경주 게임 (2주차)

 

2주차 공통 피드백을 읽고 내가 Java에 대해서 정말 모르는구나 라고 생각했다. 기능 요구사항 중 '우승자가 여러 명일 경우 쉼표를 이용하여 구분한다.' 에서 나는 for loop를 이용해서 콤마를 출력하는 방법으로 구현했다. 공통 피드백에서 loop 로 콤마를 출력하는 방법 말고 String.join() 함수를 사용하면 된다는 내용을 보고 매우 충격받았었다.. 이런게 있었구나.. 난 근데 여태껏 몰랐구나.. 🥲 Java 공식 문서를 시간 날 때 마다 읽어야 겠다는 생각이 들었다. 

 

- 자판기 (3주차)

 

드디어 마지막 코스다. 제일 까다롭고 구현하는데 오래 걸렸던 기억이 있다. 

특히 금액을 무작위로 생성하는 방법에 대해 구체적으로 설명이 적혀있지 않아서 고민을 많이 했었다. 알아서 무작위로 생성하면 되는 줄 알았는데, 테스트 코드를 보니 무작위로 생성하는 규칙이 나와있었다. 

또한 사용자가 입력할 수 있는 값이 늘어나서 이 것을 검증하는 데에 시간을 많이 썼던 것 같다. 

 

이렇게 3주간의 프리코스가 마무리 되었다. 개인적으로 최종 코딩테스트를 대비하기 위해서 프리코스 기간 동안 5시간 내에 기능을 완성할 수 있도록 연습해보는 것도 좋을 것 같다는 생각이 들었다. 최종 코딩테스트에서는 프리코스 과제와 비슷한 문제를 5시간 만에 구현해서 제출해야 하기 때문이다. 

나는 프리코스 기간에 빠르게 코드를 작성하는 연습을 하지 않아서, 최종 코딩테스트 전날에 3기 프리코스에서 다뤘던 문제를 시간 내에 풀어보는 연습을 했었다. 결과적으로 조금은 도움이 되었던 것 같다. 

 

최종 코딩테스트

위에서 언급했듯, 최종 코딩테스트는 프리코스 과제와 비슷한 문제를 5시간 내에 풀어야 한다. 그간 연습했던 함수, 클래스 분리 및 Java 컨벤션를 지키며 코드를 작성하고 기능 단위로 커밋하는 것이 제일 중요하다. 

 

최종 코딩테스트인 것 만큼 기능 구현이 쉽지는 않았고 입력값 검증도 꽤나 까다로웠다. 또한 Java 입출력을 통해 데이터를 불러와야 하는 기능도 있어서 조금 당황했다 ㅎ. 프리코스 문제와 비슷하긴 한데, 추가적으로 모듈 사용이 들어간 정도라고 생각하면 될 것 같다.

 

최종 코딩테스트도 마찬가지로 기능 구현을 완벽히 하는 것 보다, 함수와 클래스 분리 기능 단위로 커밋하는 것에 집중하는 것이 좋을 것 같다. 기능 구현에 욕심부렸다가 실행 조차 안되는 코드를 제출하면 타격이 매우 클 것이기 때문이다.. 

 

아무튼 이렇게 최종 코딩테스트 까지 마치고 약 2~3주간 기다리니 최종 합격 메일을 받을 수 있었다.

 

사실 합격 발표날 엄청 떨면서 결과를 기다렸다. 3시에 결과 발표였는데 아침에 일어나자마자 떨려서 일이 손에 안잡혔던 것 같다.. 

결과가 좋아서 정말 다행이다. 10개월간 열심히 공부해서 실력이 많이 늘 수 있었으면 좋겠다.

이전 댓글