한명의 개발자를 양성하기까지

Oct.05.2021 이동규

Education

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

안녕하세요. 테크코스교육개발팀 이동규입니다. 포비(우아한테크코스 백엔드 캡틴)와 함께 1기 모집을 시작했던 게 얼마 전인 거 같은데, 벌써 4기 모집을 시작하네요. 2021년은 프론트엔드 과정을 추가했는데요. 덕분에 올해 프로젝트는 예년보다 더 뜨거웠던 거 같네요.

작년에 이어 올해도 깜짝 소식을 전할 부분이 있는데요. 4기부터는 잠실 외에도 선릉 캠퍼스가 열립니다. 인원은 3기의 2배로 모집하여, 백엔드 100명 내외, 프론트엔드 50명 내외로 모집할 예정이에요. 모집 일정은 여기서 확인할 수 있어요. 좋은 개발자로 성장하기 위한 여정 속에서 우아한테크코스(이하 우테코)와 좋은 인연 맺길 바래요. 🙏🏻





최근 ‘대학 서열은 돈의 서열이다‘라는 기사를 보고 우테코 크루들에게는 어느 정도 투자가 이루어지는지 확인해보았는데요. 문득 ‘한 명의 개발자를 양성하기 위해 어떤 노력이 있었는지’ 생각해보는 시간을 가졌어요. 우테코를 지원하는 분들뿐만 아니라, 프로그래밍 교육에 종사하는 분들, 소프트웨어 업계 활성화를 위해 도움을 주시는 분들께 의미가 있을 거라 생각해 공유합니다.



좋은 개발문화? 일 잘하는 사람!

회사는 고객 창출과 고객 만족을 위해 존재하므로, 고객의 문제를 정의하고 해결해야 합니다. 소프트웨어로 해결할 문제들이 많아지면서 소프트웨어 엔지니어 수요가 증가했음에도 구직난이 발생한 이유는 무엇일까요? 시중에 많은 교육기관이 있는데도 구인과 구직이 불일치하는 이유는 무엇일까요? 구직자는 좋은 개발문화를 가진 회사에만 몰리고, 회사는 좋은 개발자를 선별하려고 하기 때문인데요. 이 과정에서 회사 서열을 나누며 대학 입시와 비슷한 양상을 보여 아쉽습니다.





여기서 잠깐! 좋은 개발문화란 무엇이라고 생각하시나요?
우선, 문화는 개별성을 가진다기보다 상호작용의 결과이기에, 특정 기업의 문화적 특징을 따라한다고 문화가 형성되지 않아요. 예를 들어, 우아한형제들, Line, Google 등 회사의 DR(Developer Relations) 활동을 모방한다고 그러한 문화가 발생하는 것은 아닌 거죠. 두 번째로 개발은 문제를 해결해나가는 과정입니다. 과정의 참여자를 개발자로 한정할 경우 개발 문화는 개발 프로세스를 의미하고, 그 외연을 확장할 경우 조직문화에 대해 논의를 해야 한다고 생각해요. 그리고 좋다는 것은, 가치판단의 영역이죠.





결국 좋은 개발 문화를 DevOps(테스트 자동화, 짧은 개발/배포 주기 등)나 코드 리뷰 등의 개발 프로세스로 한정하지 않는 한, 이런 논의는 일에 대한 관점으로 귀결되는데요. 각 구성원이 일을 통해 자신의 존엄성과 자유를 찾으려고 노력하여, 일에 대한 성찰이 깊어질수록 조직의 문화가 성숙해질 수 있다고 생각해요. 우테코는 프로그래밍 잘하는 것을 넘어서 일 잘하는 사람, 문제 해결 역량이 좋은 사람을 양성하려고 하는데요. 아래에서는 그동안 저희가 어떤 고민을 해왔는지 이야기해볼게요.





우리들의 고민





모집/선발

교육 과정은 교육생(이하 크루)을 모집/선발하는 것에서 시작합니다. 물론 동영상을 제작해 불특정 다수에게 메시지를 전달할 수도 있지만, 엔지니어가 다루는 문제는 머물러있지 않아 야생 학습이 필요합니다. 우리가 공교육을 통해 접했던 학교 학습은 대부분 공부 순서, 학습 범위 등이 정해져 있고, 명확한 평가 기준과 정답이 있어요. 그래서 학습 콘텐츠를 소비해온 학습자가 스스로 야생 학습을 하는 것은 어렵기에 우테코는 야생 환경을 조성해보았어요. (교육 콘텐츠에만 집중하다 보면, 피교육자보다 교육자가 열심히 공부하는 현상이 발생하지요. 😅) 그래서 우테코의 모집/선발 과정은 저희가 준비한 10개월 과정을 잘 수행할 수 있는지를 중점적으로 보고 있어요.





야생에서 살아남기 위해서 어떤 역량이 필요할까요? 복잡한 상황을 지혜롭게 해결하는 역량, 특정 문제를 해결하는데 필요한 집중력, 끝이 보이지 않는 막막한 현실을 이겨낼 정신력, 함께 문제를 풀기 위한 소프트 스킬 등 다양한 역량이 요구될 텐데요. 우테코는 면접의 주관성을 배제하기 위해 모집/선발 과정에서 면접을 없애는 시도를 해보았어요. 이에 제한된 정보만으로 공정한 평가를 하려니 참 어려웠습니다. 평가자마다 기준이 다르므로 저희는 한 명의 자기소개서를 페어로 읽고 생각이 다르면 팀원 전체가 함께 논의하며 기준을 세우는데요. 3년간 많은 부분을 정량화했음에도 여전히 5~6번 읽게 되는 경우들이 생겨요. 그래도 그런 노력 덕분인지 크루들과 함께 성장하며 행복한 시간을 보낼 수 있었어요. 😬
하지만 선발의 이면에는 탈락도 존재하는데요. 지원자가 탈락의 슬픔보다는 성장을 기억할 수 있도록 모집 과정 중에 프리코스를 운영하고 있어요. 프리코스는 3주 동안 매주 미션을 해결하고 공통 피드백을 받고 개선해가는 과정이에요. 지금까지 진행했던 프리코스는 여기서 확인할 수 있어요.



미션 설계

우테코에서는 단계별로 나누어져 있는 여러 개의 미션을 통해 학습합니다. 미션을 해결한 후 현장에 있는 경력 개발자에게 리뷰 요청을 하면 피드백을 받는 방식으로 진행하는데요. 미션은 어떻게 설계할까요?





예를 들어 MySQL을 잘한다는 것은 무엇을 의미할까요? 사람마다 가치판단이 다르므로 담당 코치가 우선 역량 모델을 정의한 후 다른 코치들의 피드백을 받아 보완합니다. 그다음 복잡한 MySQL 아키텍처를 역량 모델에 맞춰 간소화시킵니다. 정제된 주제를 바탕으로 현장에서 필요한 상황을 구체적으로 설정하는데요. 이 과정에서 미션 요구사항을 구체화한 후, 다른 코치들의 피드백을 받고 난이도를 조절합니다. 이후 미션의 결과물을 피드백 받기 좋은 형태로 구성합니다.





페어 프로그래밍

우테코의 미션 대부분은 2 ~ 3명이 함께 해결합니다. 페어 프로그래밍을 진행할 경우, 한 명이 내비게이터, 다른 한 명이 드라이버가 되어 자신들이 정한 룰에 따라 번갈아 가며 역할을 수행합니다. 이를 통해 크루들 각자의 장점들을 서로 빠르게 흡수하여 공동 학습이 이루어집니다. 또한 미션을 1~2주 단위로 구성하여 여러 크루들과 페어를 진행하게 하여 다양한 사람들과 협업할 수 있어요. 이에 하드 스킬과 소프트 스킬을 빠르게 향상할 수 있습니다. 그런데 갑자기 페어 프로그래밍을 진행한다고 하면 원활한 소통이 이루어질 수 있을까요? 우테코는 온보딩, 데일리 미팅, 회고 등을 통해 이 문제를 해결하고 있어요.



온보딩, 데일리미팅 그리고 회고

우테코 레벨1 첫 주차에 온보딩이 이루어지는데요. 온보딩 과정에서는 우테코에서 10개월간 생활하면서 지켜야 할 규칙이나 마인드 셋, 아이스 브레이킹, 깃 & 코드 리뷰 등을 경험해요. 본격적인 교육에 들어가기에 앞서 크루들이 함께 산출물을 만들고 공유하는 과정에서 많은 소통이 이루어집니다. 낯설고 부끄러운 감정 뒤에 얻는 스스럼없는 관계가 앞으로의 긴 여정을 버티게 하는 힘이 됩니다.





우테코에는 레벨별로 조가 나뉘는데요. 조별로 매일 아침 20분 정도 데일리 미팅을 진행합니다. 이때 한 명씩 번갈아 가며 주제를 정해 이야기하거나 게임을 진행하는데요. 이러한 시간을 통해 감정 공유를 하기도 하고, 다른 크루들의 좋은 생활 습관, 마인드에 영향을 받기도 합니다. 조원들끼리 생일도 챙기고 방학 때 여행도 가고 때로는 고민 상담까지 하는 모습들을 보면 괜스레 미소가 지어집니다. 😳





우테코에서는 페어 프로그래밍, 미션, 레벨 등 다양한 형태로 회고를 진행하고 있어요. 각 단계에서 좋았던 점, 아쉬웠던 점 등 피드백을 공유하고 다음 단계에 반영하여 개선할 수 있어요. 과정 초반에 자리잡힌 회고 문화는 팀 프로젝트를 진행하며 팀별 문화를 형성하는 데 도움이 됩니다. 이 시기가 되면, 코치가 굳이 관여하지 않아도 좋은 개발 문화를 형성하기 위해 크루들 스스로 여러 시도를 해보고 회고합니다.



피드백

잘 뛰기 위해서 기초 체력과 근력, 그리고 자세 교정이 필요하듯 학습도 처음엔 도움이 필요합니다. 우테코에선 현업 개발자가 코드 리뷰를 하여 미션의 목표를 성취하도록 돕고, 다년간 크루들을 멘토링 한 코치들이 크루들과 면담하고 함께 방향을 찾아봅니다. 멘토링 하기에 앞서 ‘이번 면담을 통해 논의하고 싶은 내용’, ‘최근에 자신이 긍정적으로 보는 시도와 변화’, ‘이번 면담을 통해 어떤 변화가 생기기를 원하는지’ 등 3가지 질문에 답을 해야 하는데요. 이 과정에서 자연스레 자기 회고를 하며 스스로 고민을 해결하곤 합니다.
리뷰어, 코치마다 생각이 다르므로 크루들은 다양한 의견을 접한 후 스스로 생각하고 합리적으로 판단하는 연습을 하는데요. 코드 리뷰, 멘토링, 회고, 페어 프로그래밍 등 다자간 다방면으로 소통하며 프로그래밍 지식을 넘어 좋은 코드 리뷰, 협업에 필요한 소프트 스킬 등을 고민해보고 팀 프로젝트를 진행하며 체화합니다.



함께 자라기

한 사람이 단위 기간에 얻을 수 있는 정보량은 제한적입니다. 우테코에서는 각 크루들이 학습한 내용을 테코톡(우아한테크 유튜브), 테코블(우아한테크코스 기술 블로그), 모각코(모여서 각자 코딩), 스터디 등을 통해 공유하며 함께 성장하고 있습니다. 코치 역시 우테코 플랫폼을 개발하고 강의를 준비하는 것 외에도 크루들과 함께 학습하며 성장하고 있어요. 교육자를 위한 교육과정도 준비되어 있으니 크루들, 코치들과 함께 성장하고 싶은 분들은 여기로 지원 바랍니다.🙏🏻
이미 교육과정이 완성되어 있어 재미가 없을 것 같다고요? 저희 팀원들을 생각해보면 내년에도 가만히 있을 리가 없습니다.😫 우테코는 크루들의 의미 있는 성장을 위해 매년 다양한 시도를 해왔는데요. 아래에서는 그동안 저희가 시도해보고 진행하고 있는 것들을 소개해볼게요.





우리들의 시도

현장중심의 교육

우테코를 수료하면 배달의민족, 네이버, 카카오 등 일반 사용자를 위한 서비스 개발에 투입이 가능하도록 교육 과정을 설계하고 있습니다. 그런데 현장과 교육 환경은 괴리가 있어요. 대학교에서 배운 운영체제, 자료구조, 알고리즘 등의 지식은 현장의 각 상황에 따라 일부만 활용되는데요. 대학교에서 배우지 않은 지식도 참 많이 필요하지요. 그래서 저희는 학습 콘텐츠에 집중하기보다 교육 환경을 현장과 유사하게 구성하려고 노력했어요. 미션을 설계하는데도 많은 고려가 되어 있지만, 야생 학습을 하기엔 한계가 있거든요.





이제는 코드 리뷰를 하는 교육기관이 많이 늘었지만, 1기를 진행할 때만 해도 협업 개발자들로 리뷰어를 확장하는 것 역시 도전이었어요. 다양한 회사 개발자의 코드 리뷰를 경험하는 것이 좋을 거란 판단에 NEXTSTEP(재직자 양성 교육기관)을 통해 리뷰어를 양성하고 우테코에 투입하였는데요. 이제는 빠르게 변화하는 현장에 맞는 교육을 하기 위해 코치들도 2~3년 실무 경험을 하고 돌아오도록 시도해보고 있어요.





현장에 가면 프로그래밍 외에도 회의, 문서화 등 다양한 업무를 합니다. 이때 자신이 생각하는 바를 글과 말을 통해 상대방을 논리적으로 설득하고 논쟁할 수 있는 역량이 필요합니다. 이에 우테코에서는 글쓰기와 말하기 연습을 합니다. 단계별로 한 편의 글을 쓰고 교육생 사이의 피드백을 통해 완성해가는데요. 글쓰기 교육을 전담하는 코치도 있답니다. 😎 지금까지 작성된 글은 여기서 볼 수 있습니다.







커리큘럼에도 변화가 있었는데요. 교육과정 마지막에 있던 팀 프로젝트 기간을 앞당겼어요. 이후 미션을 통해 프로젝트의 성능을 개선하고 레거시가 된 코드를 리팩토링하는 경험을 하도록 구성했어요.
우테코의 프로젝트는 2주 단위의 스프린트로 진행하는데요. 격주로 진행하는 데모데이에는 프로젝트별 공통 요구사항을 부여하고 있어요. 이를 통해 2주 단위의 일정을 스스로 추산하고 프로젝트의 방향성을 잃지 않도록 최소한으로 가이드하고 있어요. 프로젝트 데모 영상은 여기서 확인할 수 있어요.
올해 프로젝트에는 크루들이 직접 기획하여 진행한 주제 외에도 코치가 제안한 주제(댓글 모듈 서비스), 기업이 제안한 주제(GPU 예약 서비스) 등도 진행했어요. 기업 담당자와 매주 미팅을 진행하며 기획을 구체화하고 기능을 구현하고 피드백을 받으며 다양한 협업 경험을 했을 거라 생각해요. 올해 프로젝트 데모데이는 10월 29일로 계획하고 있어요.





평가가 없는 교육

많은 교육과정에서 교육생을 평가합니다. 이 평가를 기반으로 서열이 매겨지고 (수료, 대학 입학, 채용 등) 보상이 달라집니다. 합리적 이성을 가진 사람은 평가를 잘 받기 위한 전략을 수립합니다. 하지만 안타깝게도 좋은 평가를 받기 위한 학습이 교육 목표를 달성하는 사례는 찾아보기 어렵습니다. 특히 야생 학습이 필요한 소프트웨어 엔지니어를 평가하기는 더욱 어렵습니다. 그런데 의미 있는 성장에 평가가 필수적일까요? 우테코는 학습 자체를 데이터화하고 시각화하여 개별적으로 피드백 주기 위한 시도를 해보았는데요. 우선, 미션을 진행하면서 학습했던 내용을 학습로그로 남깁니다. 하나의 과정이 끝나면 로그로 남긴 주제를 바탕으로 모의 면접을 진행합니다. 모의 면접은 면접자, 피면접자, 관찰기록자 등 세 가지 역할로 진행하는데요. 이 과정에서 면접자는 역 면접을, 피면접자는 알고 있는 것을 분명히 하는 연습을, 관찰기록자는 피면접자의 면접 스킬을 관찰할 수 있습니다. 면접 후 자신의 역량을 스스로 점검하면서 메타인지 역량을 키우고 있습니다. 그리고 코치와의 멘토링을 통해 개별적으로 피드백을 받습니다.



함께 만들어가는 교육

교육이란 가르치고 기른다는 의미입니다. 소프트웨어 엔지니어에게 필요한 지식을 가르치는 것과 별개로 일 잘하는 사람으로 성장시키기 위해서는 어떻게 해야 할까요? 결과물에 대한 책임감, 일에 대한 자부심, 도메인 지식을 공유하는 능동적인 태도 등을 양성하기 위한 환경은 어떻게 조성할까요? 일을 잘하기 위해서는 일을 해야 하지요. 🙄 우선은 콘텐츠 소비자에서 생산자로의 전환이 필요하다고 생각했어요. 그래서 저희는 교육과정을 함께 만들기로 했어요. 크루들이 기여를 하고 보상을 받는 과정을 통해 ‘일’을 하는 것이죠. 우테코의 근로에는 영상 근로, 글쓰기 근로, 제작 근로 등 세 가지 형태가 있는데요. 각 근로에 대한 소개는 여기서 확인할 수 있어요. 올해 제작 근로에서 한가지 시도를 해보았는데요. 프리코스 미션을 설계하고 테스트 자동화를 위한 유틸리티를 만들고 있어요. (우테코 모집 플랫폼도 크루들이 만들었었지요! 😎)





현실적으로 필요한 것들

비용

우테코 과정을 운영하면서 공간 임대료, 인건비, 리뷰어 비용, 크루들의 근로 비용, 실습을 위한 AWS 비용, 비품 등 한 명의 크루에게 대략 2700만 원이 소요되는데요. 앞서, ‘대학 서열은 돈의 서열이다.’ 기사에 따르면, 연세대, 고려대와 비슷한 수준이네요. 😮 하지만 저희는 프론트엔드, 모바일 등 과정을 늘리고, 모집 인원도 확대하고, 서울 외의 지역으로도 확장하려고 합니다. 회사의 부담을 줄이면서 교육 기회를 확대하기 위해서는 어떻게 해야 할까요? 저희는 고용노동부의 K-Digital Training 사업을 통해 정부 지원을 받아 회사의 부담을 상당 부분 줄일 수 있었습니다. 그 과정에서 정부 기관, 사내 다양한 부서들과 협업하며 여러 고비가 있었지만 많은 분의 배려로 지속가능한 교육에 한걸음 내디딜 수 있었습니다. 정말 감사합니다. 🙇🏻‍♂️



관심

한 명의 사람이 성장하는 데에는 많은 관심과 기대가 필요합니다. 하지만 현실적으로 교육자의 경험과 자원은 제한적일 수밖에 없는데요. 우테코에는 그동안 많은 분이 특강의 형태로 참여해왔습니다. 덕분에 주니어 개발자부터, 시니어 개발자, C 계열의 임원진까지 다양한 연차의 목소리를 들어보고 UI/UX 디자이너부터 마크업 개발자, DBA 등 다양한 경력의 인사이트를 전달할 수 있었습니다. 또한 다양한 기관, 언론 매체의 간담회, 인터뷰 등의 관심은 과정 참여자들을 고무시키는 효과를 가집니다.





우테코 수료생은 우아한형제들 외에도 다양한 기업에 지원하고 있는데요. 기업이 크루들과 원활한 소통을 하도록 매년 리쿠르팅 데이를 진행하고 있어요. 올해는 11월 12일로 계획하고 있습니다. 우테코 크루들 채용에 관심 있는 분들은 woowa_course@woowahan.com으로 연락 바랍니다.





우리가 지향하는 방향

4기엔 모집 인원을 2배로 늘리고, 잠실에 이어 선릉 캠퍼스를 오픈할 예정입니다. 더 많은 분께 교육 기회가 있으면서도 크루들의 의미 있는 성장을 끌어내기 위해 다양한 시도를 해보려고 하는데요. 교육 과정도 역시 애자일이지요. 작은 단위로 쪼개고 빠르게 시도해본 후 피드백을 받고 개선하며 여기까지 왔고, 앞으로도 그러하리라 생각합니다. 한 번에 완벽히 하려다 보면 실패가 두려워 자신을 제한하기 때문입니다. 앞으로 어떤 형태로 나아갈지 기대하며, 그 여정에서 우테코가 소프트웨어 생태계에 선한 영향을 줄 수 있길 바래봅니다. 고맙습니다. 🙇🏻‍♂️