우아한테크코스 교육의 확대

Oct.25.2022 박재성(Jason)

Education

우아한테크코스 5기를 모집합니다.

안녕하세요, 테크코스교육개발팀의 박재성(Jason)입니다.

우아한테크코스 4기 모집이 엊그제 같은데 벌써 5기 모집이 시작되었네요. 4기에는 모집 인원을 2배로 늘리는 등의 변화가 있었다면, 이번 5기부터는 모바일 안드로이드 교육 분야가 추가됩니다. 웹 백엔드 교육, 웹 프론트엔드 교육, 모바일 안드로이드 교육까지 총 3개의 교육 분야를 운영할 예정이며, 모집 인원은 각각 100명, 50명, 25명으로 총모집 인원도 4기보다 25명이 더 늘었습니다.

모바일 안드로이드 교육 분야 추가에 이어 가장 큰 변화는 온라인 코딩 테스트가 사라지고 프리코스가 확대된 것인데요. 기존에는 서류 접수, 온라인 코딩 테스트, 프리코스, 최종 코딩 테스트의 단계를 거쳐 지원자를 선발했다면 이번 5기부터는 온라인 코딩 테스트를 없애고 모든 지원자에게 프리코스 과정에 참여할 기회를 제공합니다.

지난 기수들의 프리코스 상황을 공유하자면 1,068명이 3기 웹 백엔드에, 450명이 웹 프론트엔드에 지원했습니다. 이 중 127명과 60명이 온라인 코딩 테스트를 통과한 후 프리코스 과정에 참여했습니다. 4기 웹 백엔드는 1,487명이 지원했고 웹 프론트엔드는 593명이 지원했습니다. 이 중 172명, 77명이 온라인 코딩 테스트를 통과한 후 프리코스 과정에 참여했네요. 프리코스 참가 경쟁률도 8:1 정도로 높았습니다.

프리코스

우아한테크코스의 교육 과정은 교육생에게 미션을 주고 미션 완료 후 피드백하는 형태로 진행됩니다. 이 교육 방식은 기존 교육 방식과 완전히 다르기 때문에 프리코스라는 교육 과정을 통해 이 교육 과정을 미리 체험할 수 있습니다. 프리코스 기간에는 공통 피드백만 있는 상태에서 주도적으로 학습하고 미션을 수행하고 구현 결과를 제출해야 합니다. 이 과정을 통해 지원자는 우아한테크코스 교육 과정을 미리 경험하고 교육 참여 여부를 결정할 수 있습니다. 우아한테크코스는 지원자가 교육 과정을 소화하는 데 어려움이 있는지를 판단합니다. 양측이 서로에게 맞는지 고민해 보는 시간입니다.

‘소프트웨어 생태계에 선한 영향력을’이라는 비전으로 소프트웨어 장인 정신을 갖춘 인재 양성을 목표로 하고 있지만, 수용할 수 있는 교육생 수가 한정되어 있어 한계가 있습니다. 따라서 이번 프리코스 개편을 통해 우아한테크코스의 영향력을 더욱 확대하고 더 많은 사람에게 양질의 소프트웨어 교육을 제공하고자 합니다. 단순히 선발 과정이 아닌 4주 교육 과정을 수강하는 경험을 제공하며, 이를 통해 지원자들이 향후 학습 방향을 스스로 결정할 수 있는 능력을 키우는 데 도움이 될 것입니다.

프리코스를 통해 지원자들이 한 단계 더 성장할 기회가 되기를 바랍니다. 프로그래밍 언어의 기본 문법을 배우고 프로그래밍 구현에 대한 다양한 접근 방식을 경험할 수도 있습니다. 프리코스를 이수하고 최종적으로 우아한테크코스에 합격하는 것이 중요할 수도 있겠지만, 개인의 성장을 목표로 한다면 결과가 어떠하든 의미 있는 시간이 될 수 있다고 생각합니다. 그리고 그러한 시간을 쌓다 보면 모두 뛰어난 개발자로 성장할 것이라고 믿습니다.

인재상

  • 일반 사용자용 서비스를 개발하는 회사가 필요로 하는 역량을 키워 재교육 없이 현장의 업무를 바로 시작할 수 있는 인재
  • 프로그래밍에 대한 내적 동기를 가지고 있어 평생 자기 주도적으로 학습할 수 있는 역량을 가진 인재
  • 프로그래밍과 관련한 기본 역량 외에 다른 사람들과 소통하고 협업하면서 같이 성장할 수 있는 소프트 스킬을 갖춘 인재

교육 철학

  • 많은 지식을 전달하기 보다 효과적으로 학습하는 습관을 만드는 데 집중한다.
  • 교육 기간만 학습하기보다 평생 학습할 수 있는 기반을 만드는 데 집중한다.
  • 혼자 학습하기보다 함께 학습하는 것의 즐거움을 느끼도록 만드는 데 집중한다.

미션은 하루에 1~2시간 투자하면 구현할 수 있는 수준으로 만들었습니다. 가능하면 직접 구현해 볼 것을 권장하지만, 이미 온라인에 공개되어 있으므로 다른 사람이 구현한 코드가 존재하며 지원자의 성장에 도움이 된다면 얼마든지 참고해도 됩니다. 또한 미션을 진행하다 보면 문제가 발생할 수 있습니다. 이러한 문제를 스스로 해결하는 것도 프리코스에게는 중요한 경험이라고 생각하기 때문에 우아한테크코스에 질문하기보다는 프리코스 커뮤니티와 지인들의 도움, 온라인 검색을 통해 문제를 풀어 보세요.

미션은 기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항 세 가지로 구성되어 있습니다.

  • 기능 요구 사항은 기능 설명과 입출력 요구 사항으로 구성됩니다. 지원자의 이해를 돕기 위해 입력, 출력, 실행 결과 예시를 제공하고 있습니다.
  • 프로그래밍 요구 사항에는 어느 환경에서나 애플리케이션을 실행하기 위한 전제 조건, 코딩 컨벤션 및 이전 미션의 공통 피드백이 포함됩니다.
  • 과제 진행 요구 사항은 코드와 관련이 없으나 원활한 미션 진행을 위해 필요한 모든 요구 사항을 갖추고 있습니다.

자유롭게 참여가 가능하며 주어진 기한 내에 제출하기만 하면 됩니다. 지금까지 진행했던 프리코스는 여기에서 확인할 수 있습니다.

이전 기수의 프리코스 후기도 함께 공유합니다.

메일을 받고 미션을 기다리는 중에는 긴장감과 부담감을 많이 느꼈는데 과제를 진행하면서 그런 걱정이 없어지고 오히려 재미있게 과제를 진행했던 것 같아요. 내가 이 과제를 진행하면서 어떤 부분을 잘 고쳐나가야지, 어떻게 잘 설계해나가야 지에 몰두하다 보니 합격과 불합격을 신경 써야 하는 압박감이라는 생각보다는 “이게 내가 좋아하던 개발이지!”가 먼저 떠올랐기 때문인 것 같아요 🙂 미션을 진행하면서 첫 주차에 생각을 했던 건 “3주동안 제 단점을 하나하나 지워나가기로 하자” 였어요. 미션 자체에 대해서 어려움도 물론 있지만 개발하면서 제가 느꼈던 안 좋은 습관들을 지워나가는 것이 제일 어려웠던, 시간을 가장 많이 투자했던 부분이 아닐까 합니다. 가장 먼저 고치고 싶었던 부분은 “필요한 요구사항에 대해서만 구현하려고 노력하기” 였습니다. (오버프로그래밍 하지 않기도 될 것 같아요.) 개발을 하다보면 너무 깊게 생각하는 나머지 구현을 신경 쓰지 않아도 되는 부분에 대해서도 과하게 구현을 하다 보니 코드가 난잡해지고, 요구사항을 개발해내는 시간도 엄청나게 늘어났었거든요. 그래서 미션을 진행하는 내내 욕심을 버리자, 지금 해야 하는 구현 목록에 대해서 먼저 집중하자를 계속 신경 쓰면서 개발했던 것 같아요. 그걸 위해서 미션 기간의 거의 30% 정도를 요구사항을 정확하게, 하지만 필요한 부분으로 채워나가는 데 시간을 소요했었어요. 요구된 미션의 기능 사항에 대해서 최대한 큰 틀의 뼈대로 기능을 분리하고 각각의 도메인이 가져야 할 필수적인 책임만을 가져가려고 했어요. 가벼운 미션이라고 하셨지만 하던 습관을 고친다는 것이 쉽지만은 않은 일이었던 것 같아요. 아직도 만족할 만큼 욕심을 많이 버리지는 못하는 것 같고, 요구 사항 분석에 시간 소요도 많이 되는 것 같지만 전보다 조금 나아지는 저를 보면서 첫걸음을 잘 떼고 있다고 자신감을 가지고 다음 미션도 또 다른 제 단점을 개선하기 위해서 노력하는 좋은 시간이 되었으면 좋겠습니다. 감사합니다.


처음엔 과제를 진행할 때는 1주차처럼 Validator 클래스를 생성해 책임을 분리하는 등 구현하기 수월했습니다. 하지만 코드를 써갈 수록 로직이 복잡해져서 코드 가독성이 떨어지는 것이 보였습니다. 1주 차부터 고민했던 부분인 “한 메서드는 하나의 일만 하도록 하자”라는 저의 생각과 코드가 점점 동떨어진 것을 보았습니다. 그래서 제가 구현해야 하는 기능들은 모두 구현했지만, 이후 가독성 있게 그리고 메서드를 작게 분리하려고 노력했습니다.
또한 예외를 던질 때 재입력할 수 있게 해야하는데, 초반에 그것부터 해결하려다가 시간이 오래 걸려 다른 기능을 먼저 구현한 경험이 기억에 남습니다. 입력 뿐만 아니라 전진시키는 기능, 우승자를 계산하는 기능, 출력하는 기능 등 많은 기능들이 남아있지만 하나의 기능을 구현하는 데 있어서 시간이 오래 걸려 다른 기능을 구현하는 데까지 더 시간이 걸린 것을 이번에 느끼게 되어 다시 한번 기능의 우선순위를 고려해서 기능을 짜야겠다고 생각하게 되었습니다.
또한 입력받는 부분과 출력하는 부분의 코드가 길어져서 가독성이 떨어졌습니다. 그래서 저는 입력하는 클래스와 결과를 출력하는 클래스를 생성하여 책임을 분리하고, 가독성을 향상했습니다.
또한 네이밍을 고민하는 시간이었습니다. 코드를 작성하면서 복수형 변수명을 ~List, ~s 둘을 함께 작성하였습니다. 통일성을 위하여 변수명을 통일하는 시간을 가졌습니다. 지난 주차 과제 피드백을 보고 컨벤션을 중점으로 두어 코드를 작성하였습니다. 정말 감사합니다. 이번 주차 피드백까지 나온다면 지난주, 이번 주 모두 복습하여 그 피드백을 제 것으로 만들려고 노력하겠습니다.
기능 단위로 작게 쪼개서 커밋을 하는 연습을 하려고 했는데, 이번에 연습이 된 것 같습니다. 3주 차에는 객체 지향적으로 코드를 작성하는 것을 더 연습하고, 테스트하기 쉽게 기능을 더 작게 쪼개는 연습을 하고 싶습니다. 다시 한번 너무 감사드립니다!


안녕하세요 🙂
긴 거 같았던 3주간의 미션이 벌써 마지막 미션 제출이 된다고 하니 기쁘면서도 지금까지 온종일 프리코스 생각만 하고 있다가 마지막 제출이 되니 실감이 안 나는 것 같습니다.
미션을 진행하는 과정에서, 그리고 피드백을 받아 적용하는 과정에서 저 자신을 한 단계 성장시킬 좋은 기회라고 생각했어요. 요구사항을 완전하게 지켜낼 수 있을까? 내가 만든 코드가 여기에서 더 개선되는 사항이 있지 않을까를 고민하면서 좋은 코드란 무엇인가를 계속해서 생각하는 습관이 생기게 된 것 같아요. 매번 암기식 시험에만 쫓겨 살다가 제가 하고 싶었던, 좋아하는 개발할 수 있었기 때문에 고통보다는 즐거움으로 3주를 보냈던 것 같습니다:)
끝난 미션이더라도 회고를 남기면서 자기반성을 해보자 해서 주마다 항상 회고도 같이 진행했어요. 회고하면서 다시 제가 만들었던 코드를 보고 정리하다 보니 지난 코드에서 제가 잘못 작성했던 혹은 더 잘할 수 있었던 부분을 찾고 반성하는 과정에서 주차를 거듭할수록 더 나은 코드를 작성할 수 있는 발판이 되었던 것 같습니다. 회고하면서 이걸 다른 사람과 이야기하면서 풀어나가면 더 좋지 않을까 하는 생각을 했고 우테코에 합격한다면 이런 이야기들을 서슴없이 꺼내어 소통할 사람들이 있다는 생각에 가고 싶은 마음이 더 커졌던 것 같아요.
그리고 요구사항을 극단적으로 지키면서 연습하는 과정을 통해서 요구사항의 클린코드, 객체지향을 지키게 되었을 때 얼마나 좋은 코드를 개발할 수 있는지 알 수 있게 된 것 같아요. 객체 분리, 함수 네이밍, 예외처리 등 제가 평소에 고민했던 부분들이었지만 미션을 진행함에 따라서 어떻게 해야 하는지, 왜 해야 하는지를 더 알아가는 좋은 기회가 되었습니다.
프리코스가 진행되어가는 동안 새로운 생각들과 반성을 통해 성장하는 제 모습을 보면서 앞으로의 제 개발 인생에 자극제 역할을 해준 3주였던 것 같습니다.
좋은 기회를 주셔서 감사합니다!


프리코스를 진행하기 전에는 그저 내 실력을 평가하고, 시험에 가까운 과제제출이라고 생각했다. 여타 시험들이 그렇듯, 당연히 나 혼자서 이뤄놓은 성장에 대한 결과를 증명하는 시간이고, 같이 참여하는 사람들을 경쟁자로 생각했다. 하지만 프리코스는 이름에 걸맞게 시험이 아닌 말그대로 “pre-course”였다. 우테코는 나의 실력을 테스트 하는 자리가 아니라, 우테코가 어떤방식으로 가르치는지 미리 경험해보고 내가 이 방식을 즐기고 익숙해질 준비가 되어있는지를 확인하는 느낌에 가까웠다.
우테코에서는 확실하게 의식적인 연습이 가능한 제약사항을 정해 줌으로써, 제약사항을 준수하려면 어쩔 수 없이 의식적인 연습이 자동으로 되는 구조를 만들어놔서, 항상 의식적으로 내 코드를 점검하고 확인 할 수 있었다. 내가 앞으로 어떤 일에 대해 “의식적인 연습”을 하고 싶다면 나만의 제약사항을 먼저 정한 뒤 그것이 익숙해질때까지 연습을 반복하고, 익숙해진다면 제약사항을 추가하는 식으로 자연스럽게 스스로 “의식적인 연습”을 할 수 있다는 걸 깨달았다.
프리코스는 최종 결과와 상관없이 너무나 많은 것을 느끼고 배우는 시간이었다.
혹시나 누군가가 나에게 우테코 지원에 대해 물어본다면, 나는 정말 자신있게 추천해주고 싶다. 나에게는 프리코스 만으로도 그냥 학교에서나 학원에서는 배울 수 없는 너무 많은 값진 것들을 배울 수 있는 시간이었다.
이제, 다음주면 최종 코딩테스트가 진행된다. 3주차 수준으로 나온다면 5시간안에 구현할 수 있을지 걱정도 되고 두렵지만, 남은시간을 더 열심히 해낸다면 해낼 수 있을거라고 믿어 의심치 않는다. 프리코스를 진행하고나니, 정말 너무나 우테코에 가고싶은 마음이 간절해졌다.
정말 최선을 다해서 코딩테스트를 준비해야겠다. 그리고 꼭 내년에는 우테코와 함께하고 싶다! 제발…


이번 프리코스, 그리고 전체적인 선발 과정을 통해서 우아한 테크코스가 추구하는 바가 무엇인지 더 알게 된 것 같다. 다른 코스들은 비전공자들이 누구든지 도전할 수 있다는 것에만 초점을 맞춰 홍보하지만, 우테코는 그와는 다르게 프로그래밍 교육에 훨씬 더 진지하게 임한다는 느낌을 받았다.
우선 내게 주어진 자유도가 인상적이었다. 보통 코딩테스트나 알고리즘 문제들은 아주 명확하게 세밀한 요구사항이 있고 그에 맞춰서 가장 빠르고 효과적인 코드를 작성하는 것에 초점이 맞춰져 있다. 하지만 이번 프리코스에서 요구되었던 제한 사항들은 상대적으로 단순한 문제를 해결하는 과정에서 얼마나 정제된 방식으로 코드를 작성하고, 더 좋은 코드를 작성하기 위해서 고민하도록 만드는 제한 사항들이었다. 특히 바닐라 자바스크립트로 구현해야하는 제한사항으로 3주차 과제 정도의 복잡성을 가진 프로그램을 만들면서 왜 여러 인기 있는 프레임워크들이 탄생했는지 느껴지는 계기가 되었다.
또 가장 어색하면서 나에게 도움이 가장 많이 된 것 중에 하나는 다른 참가자들의 코드를 참고할 수 있는 것이다. 테스트, 과제라고 하면 서로 각자의 힘으로 온전히 해결하는 것이 여태까지 상식적인 방법이었다면, 이번에는 누군가가 가르쳐준 정보를 토대로 성장하는 것이 아니라 주변 사람들의 문제 접근과 해결방식을 보며 스스로 능력을 흡수하고 성장하는 계기였다. 처음에는 다른 사람들의 코드를 뜯어보는 것이 어색하기도 하고 어렵기도 했지만 주차가 지나면 지날수록 그 코드들에 대한 나의 의견이 생기고 내가 부족한 부분들을 최대한 흡수하려는 욕심이 생긴 것 같다. 특히 이번 3주차 과제에서는 과제 전체의 구조에 대해서 깊이 고민하다가 다른 참가자들이 이전 주차부터 적용해온 MVC 패턴을 참고해 완전히 구조를 재구성했다.
아직 정석적인 구현 방식을 기준으로는 미흡한 부분이 많지만 짧은 시간 안에 처음에는 불가능 할 것이라는 생각이 들었던 것을 달성하고 나니 더더욱 계속해서 우아한 테크코스를 통해서 이런 자극을 받아 공부하고 싶다

프리코스 커뮤니티

달라진 프리코스를 돕기 위해 프리코스 커뮤니티를 준비하고 운영합니다. 프리코스 커뮤니티는 지원자 간의 상호 작용을 통해 프리코스의 교육 효과를 높이기 위해 새로 추가되었습니다. 지원자들이 서로 돕고 배울 수 있도록 구성했습니다.

프리코스 커뮤니티에는 다른 지원자와 함께 할 수 있는 여러 활동이 있습니다. 지원자에게 추천하는 활동은 피어 리뷰, 아고라(토론 및 Q&A), 학습 콘텐츠 공유입니다. 이 활동이 아니더라도 함께 학습하고 성장할 수 있는 것은 무엇이든 좋습니다. 프리코스 커뮤니티는 지원자 여러분이 스스로 만들어가는 공간입니다.

프리코스에서 커뮤니티 활동이 필수가 아닙니다. 커뮤니티에는 원하는 만큼 참여할 수 있으며 아예 참여하지 않아도 상관없습니다. 프리코스가 우아테크코스의 교육을 미리 체험할 기회였다면, 프리코스 커뮤니티는 우아테크코스의 분위기를 체험할 수 있는 공간이 아닐까 생각합니다. 이곳에서의 활동이 소프트웨어 장인 정신을 갖춘 인재가 되기 위한 첫걸음이 되기를 바랍니다.

FAQ

달라진 프리코스에 대한 질문과 답변을 모았습니다.

Q. 온라인 코딩 테스트는 어떤 언어로 테스트하나요?
A. 5기 선발 과정부터 온라인 코딩 테스트는 진행하지 않습니다. 서류 지원한 모든 분은 온라인 코딩 테스트 없이 바로 프리코스를 진행합니다.

Q. 지원 과정을 보면 프리코스가 있는데 프리코스에서 무슨 활동을 하나요?
A. 프리코스는 우아한테크코스 본 과정을 미리 경험해 보는 단계입니다. 본 과정과 같이 매주 미션을 하나씩 구현하고 제출하는 방식으로 진행합니다. 이 과정을 통해 지원자는 본 과정을 미리 경험해 보면서 교육의 참여 여부를 결정할 수 있습니다.

Q. 프리코스의 경우에는 온라인인가요 오프라인인가요? 그리고 공식적인 교육 시간이 있나요?
A. 프리코스는 별도의 강의가 제공되지 않습니다. 과제라고 생각하면 됩니다. 프리코스는 온라인으로 진행합니다. 학교에 다니면서 진행해도 상관없어요.

Q. 우아한테크코스 교육과 프리코스는 어떤 차이가 있나요?
A. 아쉽지만 외부 리뷰어 대신 저희 코치들이 정성스럽게 작성한 공통 피드백으로 대체하게 됩니다. 미션/코드 리뷰 기반 교육 모델을 체험하겠지만 외부 리뷰어의 1:1 코드 리뷰는 없는 거죠.

Q. 선발 과정에서는 어떤 언어를 사용하나요?
A. 선발 과정은 프리코스와 최종 코딩 테스트로 이루어져 있습니다. 선발 과정에서 웹 백엔드는 자바를 사용하며, 웹 프론트엔드는 자바스크립트를 사용합니다. 모바일 안드로이드는 코틀린을 주 언어로 사용합니다.

Q. 최종 코딩 테스트는 모두 참여할 수 있나요?
프리코스 합격자만 최종 코딩 테스트에 참여할 수 있습니다.

Q. 최종 코딩 테스트의 난도는?
A. 최종 코딩 테스트의 문제 유형은 4주 동안 진행한 프리코스의 문제 유형과 같거나 비슷한 난도의 문제로 진행합니다. 최종 코딩 테스트는 오프라인으로 진행하는 것을 기본 원칙으로 하고 있습니다. 4주간의 프리코스를 성실하게 잘 마무리했다면 최종 코딩 테스트도 무리 없이 진행할 수 있을 것으로 예상합니다.