우아한테크코스 선발 과정 진행 후기

2019년 4월 16일 화요일 오후 6시, 오프라인 코딩 테스트를 끝으로 3주간의 프리코스 과정을 포함한 선발 과정이 모두 끝이 났습니다. 이 포스팅에서는 지금까지 어떤 과정을 진행했는지와 그 후기에 대해서 간단히 기록을 남기려고 합니다.

우아한테크코스?

우아한테크코스는 우아한 형제들에서 진행하는 프로그래밍 교육 과정입니다. 우아한테크캠프와는 다른 과정이며, 이번에 첫 지원자를 모집했습니다.

자바를 주 언어로 하여 웹 백엔드(웹 서비스 개발) 기술을 가르치고, 좋은 코드 작성과 협업 경험을 통해 개개인의 역량을 쌓는데 도움을 주고 좋은 개발자를 양성하는 것을 목표로 하는 과정이라고 하네요.

자세한 사항은 아래를 참고해 주세요.

선발 과정

우아한테크코스의 선발 과정은 여타의 그것들과는 사뭇 달랐습니다. 서류 접수를 포함하여 결과 발표까지 약 50일이 걸리는 길고 긴 대장정이지요. 특이한 점 중 하나는 면접이 없다는 것입니다. 면접 경험이 적은 저로써는 다행일 수도 있는 부분이었습니다. 선발 과정은 다음과 같은 순서로 진행됐습니다.

  • 지원서 작성
  • 온라인 코딩 테스트
  • 프리코스
  • 오프라인 코딩 테스트

지원서 작성

지원서에서 요구하는 항목은 그렇게 많지 않았습니다. 학력이나 경력도 포트폴리오도 당신이 얼마나 프로그래밍을 잘하는지에 대한 것도 묻지 않았습니다. 그저 “프로그래밍을 얼마나 좋아하는지”“왜 프로그래머가 되고싶은지” 와 같은 질문 등. 이 과정에 참가 하고싶은 솔직한 이유를 물어보는 것이 주 목적인 것 같았습니다.

아마 자신의 생각과 경험을 꾸밈없이 솔직하게 적어 제출한 것이 좋은 점수를 받지 않았을까 싶습니다.

온라인 코딩테스트

온라인으로 진행하는 코딩 테스트는 의외로 난이도는 높지 않았습니다. 정말 “기본적인 프로그래밍을 할 수 있냐”를 묻는듯한 문제였습니다. 하지만 의외로 여기서 아쉬운 결과를 받은 지원자가 적지 않았습니다. 아마 코드를 어떻게 작성했는지에 대한 것도 점수에 영향이 있었거나 이전에 제출한 지원서를 조금 더 비중있게 봤을거라는 예상을 해볼 수 있을거 같네요.

프리코스 - 3주간의 특별한 미션

선발 과정 중 가장 긴 시간을 차지하는 부분이었습니다. 누군가는 길고 지루하다고 하지만, 개인적으로 매우 재미있었고 의미있는 경험을 할 수 었습니다.

미션은 3주간 3개가 주어졌습니다. 매주 미션 내용이 담긴 저장소를 fork하여 branch를 따고 요구사항을 구현한 뒤, pull request를 날리는 방식으로 진행되었습니다.

요구사항

매 미션에서 흥미로운 것은 그 미션의 [기능 요구사항]을 구현하는 것도 있었으나, 매주마다 좁혀져 오는 [프로그래밍 요구사항]이었습니다. 프로그래밍 요구사항은 3주차에 이르러선 다음과 같아졌습니다.

  • indent depth는 1 이하로
  • method line 10 이하로
  • 메서드 인자 3개 이하로
  • else문 금지 등…

이런 제약사항에 의미가 있을까 싶었지만, 지키다보니 여러가지를 생각하고 느끼게 해주었습니다.

가장 지키기 힘들었던 것은 역시 indent depth였는데, 1이하로 구현하려면 for문 안에 if문도 넣지 못하게 됩니다. 위의 요구사항을 지키려고 하면 메서드를 쪼개고 쪼갤 수 밖에 없는데, 그 결과 자연스럽게 메서드 하나 하나의 크기가 작아지면서 “최소한의 기능”에 가까워지게 됐습니다. 또한 코드 자체에 메서드의 비중이 많아지다보니 코드를 더 읽기 쉽게 하기 위해서는 메서드의 이름을 정하는 것(네이밍)도 많은 고민을 하게됐습니다.

피드백

아쉽게도 개인 피드백은 없었습니다. 때문에 내가 짠 코드가 잘 짰는지, 잘못되지 않았는지 등을 알기 어려워 아쉬웠습니다. 사실 100명이 넘는 미션 수행자 모두에게 높은 퀄리티의 개인 피드백을 바라는 것은 무리겠지요.

대신 전체 피드백이 담긴 문서를 배포했는데, 여기서 배울 점이 많았습니다. 다른 지원자들은 어떻게 짰고, 어떤 실수를 했는지 알 수 있어서 도움이 되었습니다. 개인적으론 컨벤션에 관해서는 깊게 생객해 본적이 없어서 여러 관점을 얻을 수 있던 것 같네요. 가끔 뼈를 때리는(마치 개인 피드백인듯 한) 피드백도 있었기에, 다음 미션에서는 얼른 개선했던 기억도 있습니다.

배운 것

결과적으로, 3주간의 미션을 통해 이러한 것을 알려주고 싶었던 것(또는 깨닫게 하고 싶었던 것) 같습니다.

  • 객체지향적인 프로그래밍을 하는 것
    • 알맞은 역할의 객체를 만들고, 그 객체 사이에서 메시지를 던져라
    • 각 클래스와 메서드는 “최소한의 기능”만 담아라
  • 조금 더 이쁜 코드를 작성하는 것
    • 자바 컨벤션을 지켜라
    • 흐름도 컨벤션의 한 종류이니 읽기 좋게 만들어라
    • 변수, 메서드, 클래스의 네이밍에 의미를 담아라. 길어져도 상관 없다
  • 기타 기본적인 프로그래밍 스킬과 협업 팁
    • commit 메시지와 주석을 의미있게 작성

이런 긴 시간을 들인 미션은 우아한형제들에서 지원자들을 선발한다는 목적도 있지만, 지원자들도 ‘내가 우아한형제들이 제공하는 교육과 맞는 사람인가’ 를 판단하는 기회가 되는 과정이라는 의미도 있었습니다. 그런 의미에서 더욱 더 테크코스에 참여하고 싶다는 욕구를 불러일으킨 과정이었던 것 같습니다.

오프라인 코딩 테스트

오프라인 코딩 테스트는 잠실역에 있는 ‘우이한 형제들 작은집’에서 진행되었습니다. 우아한형제들 특유의 폰트로 도배되어 있는 건물 내부를 보니 왠지 모르게 두근두근 하더군요. 꽤 적지 않은 수의 사람들이 테스트를 치르러 왔습니다. 남녀노소 여러 지원자들이 100명 넘게 모여 있었고, 어딘가 모르게 다들 말로 설명하기 힘든 ‘개발자스러운’ 모습을 갖고 있었습니다.

시험을 치를 장소에는 넓은 공간에 여러명이 앉을 수 있는 긴 테이블들이 있었고, 뒤에는 커피와 다과가 준비되어있었습니다. 긴장한 탓에 많이 먹지 못했습니다만… 맛있었습니다!

진행

시험은 4시간이라는 시간동안 프리코스에서 해왔던 미션과 같은 방식으로 코딩 테스트가 진행되었습니다. 처음에는 다른 곳처럼 알고리즘 테스트를 보나 했지만, 과제 형식의 시험이어서 조금 생소했습니다.

후기

개인적으로는 시간이 부족했습니다. “다 구현하는 것을 바라지는 않는다”고 말은 했지만, 충분히 구현 가능하다고 믿고 있었는데, 결국은 만족스럽지 못한 코드를 제출해야했습니다. 어떤 시험이든 마찬가지만 역시 끝나고 나서 더 잘할 수 있었을텐데 하고 아쉬움이 느껴지는군요.

자바지기(박재성 개발자)님을 처음 봤습니다. 연애인을 만난 기분이었고, 목소리가 되게 좋으셨던게 인상깊었습니다. 부디 테크코스를 진행하며 다시 뵙고 싶네요.

QnA

마지막에 진행했던 질의응답에서 인상깊었던 질문들입니다.

  • 왜 이런 프리코스라는 과정을 오픈했는가?
    • 전체적으로 개발자가 부족하고, 경력자만 채용하는 것도 한계가 있는 것을 느꼈다.
    • 괜찮은 신입을 교육시키는 것이 낫다고 판단했다.
    • 이런 것을 우리뿐만 아니라 다른 기업들도 느끼고 있고, 비슷한 교육 과정을 준비하고 진행하고 있다.
  • 테크캠프 계획은 없는가?
    • 내부 사정으로 인해 올해 계획은 없다. 내년에 열릴 가능성이 높다.
  • 선발 기준
    • 코드에 점수를 매기지 않을수는 없다. 하지만 그렇다고해서 1등부터 50등까지 딱 잘라서 합격 시키는 것은 아니다.
    • 지금까지 진행한 모든 과정이 최종 선발 기준에 포함된다. 오늘 진행한 테스트는 1/4이라고 보면 된다.
    • ‘이 사람은 우리가 케어해 주지 않아도 잘 할것 같다’는 사람이라면 굳이 선발하지 않을 가능성도 있다.

마무리

모든 과정을 마치고나니 더욱 테크코스에 참여하고 싶은 욕심이 샘솟습니다. 취업하는게 아니라 교육을 받는 과정인데도 말이죠. 아마 일련의 과정을 거치면서 그들의 가치관을 체험해보니 정말 나를 성장시켜주겠구나! 하는 확신이 들었기 때문입니다. ‘나에게 정말 성장하는 방법을 가르쳐주겠구나!’가 더 정확한 표현일지도 모르겠군요.

좋은 결과를 바라지만 그것과는 별개로 본 과정은 정말 의미있는 경험이었습니다.