우테코 4기 지원 후기

우테코란?

우아한 형제들(배민회사)에서 진행하는 교육 프로그램이다. 약 10개월간 진행되는 교육이고 월요일부터 금요일까지 교육장에 출석해야 하는 형태이기 때문에, 학교를 다니면서 진행하기는 어려운 프로그램이다.

우아한 테크코스를 수료하면 취업이 잘되고, 우아한 형제들에 입사할 수 있는 기회가 주어진다고 한다. 무엇보다 10개월동안 같이 협업하는 능력 및 기초지식이 풍부해지기 때문에 교육적으로 큰 의미가 있다고 생각한다.

지원 동기

제대 후에, 조금 큰 회사에 입사하고 싶어서 더 공부를 해야겠다는 생각을 했다. 운좋게 우테캠(우아한 테크 캠퍼스)를 수료한 친구 덕분에 우테코에 대해 알게되고, 바로 지원했다.

입학(?) 과정

우테코에 들어가려면 [서류 -> 코딩테스트 -> 3주간의 미션 -> 최종 코딩테스트] 총 4가지의 관문, 아니 3주간의 미션으로 치면 6가지의 관문이 있다. 정말 긴 과정이지만 그 안에서 배우는게 많았다.

서류

자세히 기억은 안나지만, 몇가지 인상깊은 질문들이 있었다.

"왜 프로그래머가 되려고 하는가?"

"마음이 끌리는 무엇인가에 몰입해 일정 수준의 결과물을 만들어낸 경험이 있는가?"

나는 나름대로 솔직하게 작성했고, 두번째 질문은 운좋게 1년간 작업했던 프로젝트가 있어서 그것에 대한 이야기를 작성했다. 그리고 내 간절함도 약간 담았다.

코딩테스트

별로 어렵지 않았다. 구현문제 50개정도만 풀었다면 풀만한 문제들이었다. 백준으로 치면 실버2아래 수준.

3주간의 미션

3주간의 미션은 모두 vanila javascript로 해결해야 하는 미션들이었다. 덕분에 react없이 상태관리를 해봤고, git도 배우고, eslint & prettier설정하는 법도 배웠다. 미션 자체로 정말 좋은 공부가 되었다.

1주차 미션 - 야구 게임

1주차 미션 설명과 내가 작성한 코드

미션 자체는 너무 단순하다. 다만, 함수 길이가 15줄이 넘어가면 안되는점, 기능목록을 먼저 작성하고, git commit에 한가지 일만 담아야 한다는점 때문에 귀찮았다.

2주차 미션 - 자동차 경기

2주차 미션 설명과 내가 작성한 코드

1주차에 비해서는 약간 더 까다로웠지만 그래도 어렵지 않았다. 그리고 1주차때 여러 제약조건들 하에서 코딩을 해봤기 때문에, 오히려 편했다.

3주차 미션 - 자판기

3주차 미션 설명과 내가 작성한 코드

갑자기 난이도가 급상승했다. 1,2주차는 하나의 View안에서 다 해결이 되었는데, 이번에는 View가 여러개였다. 그래서 MVC패턴을 적용해....앴다고 생각했지만, 지금 생각해보면 MVC보다는 Flux패턴에 가까웠다. 이름이 Model인 Store가 있었고, 그 Store의 상태가 바뀔때마다 View를 다시그렸다. Controller에서는 이벤트를 붙이고 handler를 정의했다.

3주차 미션이 끝나고 최종 코딩테스트를 준비하기 위해서 3주차 미션의 코드를 다시 작성했다. 이번에는 redux처럼 Store를 만들고, action을 dispatch하고 reducer에서 새로운 state를 만들어냈다. 그리고 subscribers에게 state가 업데이트 되었음을 알리는 방식을 사용했다.

나름 잘 짰다고 생각했지만,,, 치명적인 구조상의 오류가 있었다... Component의 재사용. Component를 재사용 할 수 없었다. 코드를 잘못짰다. 설계가 잘못되었다. 하지만 그때는 이미 새벽 2시였고, 나는 '안전불감증' 환자처럼. 그냥 잤다.

최종 테스트

최종 테스트설명과 내가 작성한 코드

이런.

아뿔싸!

내가 작성한 Flux패턴을,,,적용하려니,,,컴포넌트를 재사용 해야 했다.

밀려오는 후회. '아,, 어제 조금 더 하고 잘껄,,,'

일단 꾸역꾸역 내가 만든 패턴안에서 작동되도록 했다. 이벤트가 발생할때마다 전체 뷰를 그냥 다시 그렸다. 비효율 적이지만 일단 부분점수라도 받자는 심정이었다.

종료 10분전. 이제서야 나는 테스트 코드를 돌려봤다. '브라우저에서 잘 작동했으니까, 문제 없겠지?' (사망플래그...)

이런!

모든 테스트 케이스에서 실패했다. `element` 가 `undefined` 란다. 음? 왜? id값을 잘못 사용했나 봤더니 문제 없었다.

종료 3분전. 모르겠다. 그냥 제출했다.

전체 구현 문제중에 반밖에 하지 않았고, 그마저도 테스트 케이스에서 전부 실패했으니 나는 0점이다.

나중에 천천히 살펴 보았는데, 미션에서 나에게 사용하라고 준 코드가 있었는데, 내가 그 코드에서 불필요해 보이는 몇몇 코드들을 삭제 했었다. 후...그 코드들은 테스트 케이스에서 사용하는 코드들이었다. 정말,,,너무 아쉬웠다. 75명중 3명은 제출을 못했고, 나는 0점이다. 정말 운이 좋으면 50명안에 들 수도 있겠지만, 솔직히 가망은 없어보인다.

나를 탓했고, 비슷한 실수를 또 하는 자신을 원망했다.

그래서?

그래서 이 글을 작성하게 되었다. 우테코를 하면서 많이 배웠고, 또 실수를 통해서도 배웠다. 앞으로 이런 실수를 하고 싶지 않다. 내 글을 읽는 다른 사람들도 나같은 실수를 범하지 않기를 바라고, 또 내 글이 우테코 5기를 지원하려는 분들께 도움이 되었으면 한다.

다시 정진!

빌드 다시 짜고, 열심히 해야지 😀

Add Comment