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

디우·2022년 1월 3일
14

우아한테크코스

목록 보기
1/1

서류 지원

서류 지원에서는 '내가 왜 우아한테크코스에 지원하려고 하는지' 그 이유에 대해서 자세하게 작성하려고 노력하였다.

본인의 경우 유튜브 우아한Tech 라는 채널에 올라오는 테코톡 이라는 컨텐츠를 통해서 OS, NW 등 전공 지식들을 접해볼 수 있었는데 당시에 내용이 이해하기 어렵지도 않았고, 이런 ‘내용도 있구나’ 하고 스스로 찾아보고 학습하게 되는 계기가 되기도 하였다. 이러한 점에서 우아한 테크 코스는 본인의 학습 뿐 아니라, 많은 개발자를 꿈꾸는 학생들에게 기여할 수 있는 프로그램이라는 점에서 되게 매력적으로 다가왔고 꼭 참여하고 싶다는 생각을 가지게 되었으며 이러한 내용을 서류 지원 당시에 어필하려고 노력하였다.

또한 내가 생각하는 나의 역량에 대해서 최대한 객관적인 시선으로 바라보며 작성하였던 점과 프로그래머가 되려는 이유에 대해서 자세하게 작성하였던 점이 서류 합격을 할 수 있는 비결이었다고 생각된다.

긴시간 동안 무언가에 몹입해 본 경험에 대해서는 졸업작품(프로젝트)를 1년간 진행하면서 배우고 맞닥들였던 어려웠던 점 그리고 어떻게 극복하였는지 그 고민과정들을 최대한 상세히 적어내려 갔다.

결론적으로 본인이 얼마나 개발자로서 성장하고 싶고 학습에 대한 의지가 있는 지를 분명하게 표현한다면 합격의 기쁨을 누릴 수 있을 것이다 !!

온라인 코딩 테스트

서류 지원을 하고나서 며칠 뒤 온라인 코딩 테스트 참여에 관한 메일을 받게 되었다. 서류 합격에 관한 메일을 받지 못했었기 때문에.. 아마 서류지원과 온라인 코딩 테스트를 함께 평가하여 1차 합격자를 추려내는 것으로 보인다.

온라인 코딩 테스트는 ‘프로그래머스’에서 진행되었고 난이도가 엄청나게 어려운 편은 아니었다. 별도의 코딩테스트를 준비하고 있지 않았음에도 완전 손도 못대는 문제가 나오지는 않았던 것으로 기억한다. 그럼에도 많은 고민이 필요하고 생각을 요하는 문제들도 존재하였다. ‘온라인 코딩 테스트’에서는 프로그래밍에 대한 기본기를 가지고 있는지를 물어보는 테스트 였다고 생각되었고 따라서 7문제 전체에 대해서 효율성 부분은 고려하지 않는다고 해도 정확도 측면에서는 만점을 맞아야 합격이 가능할 것으로 생각된다.

어느 정도 프로그래밍에 대한 기본기와 알고리즘에 대한 학습이 되어 있다면 충분히 온라인 코딩 테스트를 합격할 수 있을 것이다 !!

프리코스

11월 19일 15시 기다리고 기다리던 1차 합격자 발표가 났다. 감격스럽게도 1차 심사에 합격을 하게 되었다!!

1차 합격의 기쁨도 잠시 아직 최종 합격이 아니기 때문에 긴장의 끈을 놓을 수 없었다. 바로 5일 뒤인 24일 부터 3주간 총 3번의 미션을 매주 받게 된다. 이를 프리코스라고 하는데 우아한테크코스에서는 프리코스라고 하는 과정을 통해서 우테코의 본과정을 3주간 맛볼 수 있다. 각 미션별로 배우게 된 점에 대해서 간략하게 정리해볼까 한다.

1차 미션

보통은 프로그래밍을 하면서 기능 요구사항에만 초점을 맞추게 된다. 따라서 본인 입맛대로 코딩을 하고 이는 협업하는 과정에서 어려움을 불러오기도 한다. (코드는 혼자 짜는 것이 아니다!)

프리코스의 각 미션에는 ‘기능 요구사항’ 이외에도 ‘프로그래밍 요구사항’이라는 것이 존재한다.

1차 미션에서의 프로그래밍 요구사항은 위와 같은데, 특히 코드 컨벤션의 경우 앞서 언급한 문제점을 어느정도는 해결할 수 있게끔 해준다. 예를 들어 클래스에는 명사, 메소드 이름에는 동사 혹은 전치사로 시작하도록 이름을 짓는다 등을 이야기할 수 있겠다. 이러면 코드의 대한 가독성도 높아지고 다른 사람도 나의 코드를 보고 보다 효과적으로 이해할 수 있게 된다. 본인의 경우 클린 코드, 가독성 높은 코드에 관심이 많았음에도 불구하고 이번 과제를 진행하면서 이런 코드 컨벤션을 지키는 것에 있어서 익숙하지 않다는 것을 느낄 수 있었다.

이외에도 처음으로 고려해보게 되는 부분들이 많았는데, 하나의 메소드의 크기가 15줄 이상이 되지 않도록 하고 들여쓰기 depth가 이 넘지 않도록 구현하는 부분에서 부족함을 느꼈다.

또 git에 익숙하다고 생각했는데, 기능 단위의 commit이 생각보다 자연스럽게 되지는 않았으며 ‘기능 요구사항’에 따른 ‘구현 기능 목록’ 작성 또한 처음에는 어색하게 느껴졌었다.

1차 미션 Github 저장소

2차 미션

1차 미션 이후 공통 피드백을 받게 되었다. 의미있는 공백 라인의 사용이나 커밋 메시지, 주석 등에 대한 부분에서는 본인이 꽤나 잘했다고 스스로 판단하였지만, ‘죽은 문서가 아닌 살아있는 문서’를 만들기 위해 노력한다는 내용과 매직 넘버 사용 등에서는 부족함이 있다고 판단되었고 해당 피드백을 바탕으로 2차 미션에서 개선하려고 노력하였다.

또한 2차 미션에서는 ‘프로그래밍 요구사항’에 객체의 사용이 추가되었다.

나는 자바라는 언어가 문법만 사용할줄 안다고 해서 자바를 쓸줄 안다고 이야기하면 매우 잘못되었다고 생각하는 사람 중 한 명이다. 자바라는 언어는 객체지향 언어이기 때문에 객체지향적으로 프로그래밍을 할 줄 알아야 정말 자바를 사용할 줄 안다고 이야기할 수 있다고 생각한다. 2차 미션을 진행하면서 스스로를 많이 반성하고 돌이켜보게 되었다. 어느새 벌써 자바라는 언어를 4년째 사용하고 있음에도 불구하고 객체지향적인 설계 그리고 코딩을 전혀 제대로 할줄 모른다는 것을 느꼈다. 이는 ‘디자인 패턴’을 공부할 때도 마찬가지였는데, 이해하는 것은 쉽지만 이를 제대로 나의 코드에 적절한 상황에 적용하고 활용하는 것에서는 어려움이 있었다.

2차 미션 Github 저장소

3차 미션

3차 미션에는 개인적으로 가장 많은 노력과 시간을 투자하였고 많은 고민을 하며 과제를 수행하였다. 따라서 가장 잘 프로그래밍 요구사항을 지키면서 또 이전 피드백을 충실히 반영한 과제 였다고 생각한다. 그럼에도 불구하고 Money, Price, Change 등 혼동 가능한 이름 짓기를 많이 사용하였다고 스스로 피드백할 수 있겠으며, 피드백 주신 “객체에 메시지를 보내라” & “비즈니스 로직과 UI 로직 분리” 부분에 대해서 잘 한 것인지도 의문이 들었다. ← 이러한 부분 또한 앞으로 개선해 나가야 할 부분이다.

이번 미션에서는 특히 부족한 점이라고 생각되었던 ‘살아있는 문서 만들기’ 와 의미있는 커밋 메시지, 그리고 매직넘버 사용에 대해서 많은 고민을 하면서 과제를 수행하였고, 2차 미션 피드백에서 언급된 발생할 수 있는 예외 케이스에 대해서 최대한 모든 케이스를 고려하고 고민하려고 노력하였다. 이를 위해서 단위 테스트 코드 작성에도 많은 시간을 투자하였다.

3차 미션 Github 저장소

최종 코딩 테스트

개인적으로 최종 코딩 테스트는 신기하면서도 어려운 테스트였다고 생각된다.

우선 신기하다고 표현한 이유는 알고리즘 코딩 테스트가 보편적이고 내가 맛 본 코딩 테스트는 다 알고리즘을 묻는 테스트였다.(우테코의 온라인 코딩 테스트를 포함하여..) 하지만 우테코의 최종 코딩 테스트는 프리코스에서와 마찬가지로 기능 요구사항과 프로그래밍 요구사항을 가지는 미션을 주고 약 5시간에 걸쳐 코딩을 하는 테스트였기 때문이다.

어떻게 미션을 수행하였는지 기억도 안날 정도로 시간이 훅 갔다. 그만큼 집중을 했다는..

우선 처음 한 시간 정도는 문제를 이해하는데 사용한 것 같다. 기능 요구사항과 사전 제공 정보와 입출력 요구사항을 보며 문제를 이해하고 어떻게 구현해나갈지를 머릿속으로 생각하며 구현 기능 목록을 작성해나갔다.

이후 한 2시간 정도동안은 우선 큰 틀(?)을 잡아나가며 코딩을 수행하였다. 여기서 틀이라고 한 것은 큰 구조를 잡아갔다는 것이다. domain에 해당하는 class들을 정의하였고, utils과 view 등을 작성해주는 식이었다. 이후에는 service단을 만들고 사용자 입력에 따라 기능을 분리해줄 controller를 구현해주었다.

나머지 2시간 정도는 수정 작업과 빠진 기능 목록이 있는지 점검하고 업데이트하는데 시간을 투자하였다. (매직 넘버 사용, 하드코딩 X 부분등에 대해서는 수정을 빠트렸다..아무래도 제한 시간이 있다보니 실수한 부분들이 많았다.) 그러다가 ‘같은 레벨에서 이미 페어를 맺은 크루와는 다시 매칭 되지 않도록..’ 하는 기능이 빠진 것을 확인하고 멘붕이 왔다. 이를 고려하지 않고 프로그램을 만들었기 때문이다. 남은 시간은 1시간채도 되지 않았지만 그래도 최대한 구현하려고 노력하였지만 적절한 방법, 알고리즘이 떠오르지않아 제대로 구현을 마치지 못하였다. 그래도 최선을 다했으니 후회는 없지만 최종 합격과는 멀어진 느낌이 들었다..ㅠㅠ

최종 코딩 테스트 Github 저장소

최종 합격!!!

12월 30일 오후 3시에 우아한형제들로부터 합격 메일을 받게되었다..ㅠㅠ 바로 친구들에게 자랑 아닌 자랑을 하며 합격의 기쁨을 나누었다. 이렇게 합격을 하고 나니 지금까지 노력에 대한 보상을 받은 기분이 들면서 우아한형제들로부터 마지막 2021년 선물을 받은 느낌이었다!!

우아한 테크 코스를 통해서 성장할 나를 상상해보며 ‘우아한Tech’ 유튜브 우테코 관련 동영상이라는 동영상은 거의 다 본 것 같다..ㅋㅋㅋ

솔직히 최종 코딩 테스트를 보고나서 자신감이 많이 하락한 상태였다. 가장 중요한 기능이라고 생가되는 ‘같은 레벨에서 이미 페어를 맺은 크루와는 다시 매칭되지 않는다.’ 에 해당하는 기능을 제대로 구현하지 못하고 제출하였었고, 제출 이후 나의 코드를 다시 보았을 때 매직 넘버의 사용이나 메소드의 길이 등 지키지 못한 사항들이 꽤나 많이 눈에 보였기 때문이다. 그럼에도 합격을 할 수 있었던 것은 ‘프리코스’에서 많은 노력을 하였고 이것이 평가자 분들의 눈에 들어와 좋게 평가해주신 덕이라고 생각한다.

앞으로의 각오라고 한다면 정말 참여하고 싶었던 프로그램인 만큼 10개월간 ‘우아한테크코스’에 전념하며 많은 것을 배우고 또 많은 것을 고민하며 더 나은 개발자로 성장해 나갈 것이다. (열정이 100%인 상태이다ㅎㅅㅎ)

2022년을 맞아서 블로그를 시작해야겠다고 다짐하였고, 첫 글로 이렇게 우아한테크코스 합격 후기에 대한 글을 작성하게 되어 너무 기쁘다!! (자랑 글로 시작하게 되었네요..ㅎㅎ) 본인도 아직 우테코 본과정을 시작한 것은 아니지만 현재 우테코에 관심을 가지고 향후에 지원을 고려한느 분들에게 도움이 되는 글이었으면 합니다 :)

profile
꾸준함에서 의미를 찾자!

13개의 댓글

comment-user-thumbnail
2022년 1월 3일

축하드려요 동규님!! 저도 꼭 언젠가(?) 붙고싶네용ㅎㅅㅎ 근데 매직넘버가 뭔가용?!?

1개의 답글
comment-user-thumbnail
2022년 1월 3일

대단하네요~ 훌륭한 백엔드 개발자가 될 것 같아요~~~응원하겠습니다~!

1개의 답글
comment-user-thumbnail
2022년 1월 7일

합격 정말 축하드립니다!.. 동규님의 글 정말 잘 읽었습니다!

혹시 제가 개인프로젝트로 개발 활동 리뷰글을 모으는 프로젝트를 진행하고 있는데
해당 글이 너무 마음에들어서 제 프로젝트에 올려도 될까요!?
https://github.com/junghyeonsu/awesome-dev-activity-review
에서 해당 프로젝트를 보실 수 있습니다!

1개의 답글
comment-user-thumbnail
2022년 5월 20일

안녕하세요. !! 글 잘봤습니다. 저도 우테코 백엔드 지원하고 싶은 마음에 선생님한테 여쭤보고 싶은게 있는데 메일 하나 보내도 될까요? ㅠㅠ

1개의 답글
comment-user-thumbnail
2022년 5월 26일

디 하~~
디우 머쪄!!

답글 달기
comment-user-thumbnail
2022년 9월 8일

알고리즘에 대한 학습이라면 어떤 알고리즘을 말하는걸까요??

1개의 답글