단순한 개발자를 만드는 교육, 성장하는 개발자를 키우는 교육
컴퓨터 공학 전공생과 부트캠프 출신들이 매 해 수천명이 쏟아지고 있지만 기업이 원하는 역량을 갖춘 인력은 없다는 겁니다.
그렇다면 이런 간극을 없애기 위해서는 어떤 변화가 필요할까요?
Kernel360의 헤드 디렉터, 이민석 교수님은 한 회사의 CTO이자, 약 30년 동안 한성대 교수, NHN NEXT(커넥트재단) 학장, ‘42 Seoul’ 학장, 국민대 교수 등 많은 교육기관에서 SW개발자를 양성해 왔습니다.
이민석 교수님은 아쉬움을 해결하기 위해서는 “성장의 기회를 지속적으로 제공해 주고 스스로도 그 성장을 느끼는 학습법” 이 필요하다며 새로운 교육을 제안했습니다.
선호도 1위에서 아무도 가고 싶지 않은 학과로
안녕하세요 저는 이민석 교수입니다. Kernel360이란 과정을 소개하기 앞서 제가 개발자 양성을 시작하게 된 이야기부터 먼저 해보려고 합니다.
제가 처음 컴퓨터 공학과에 들어갔을 때는 사람들이 PC라는 것도 잘 모르는 시기였어요. 한국에 PC라는 개념이 들어온게 80년대 초였으니까요. 마치 지금 Chat GPT가 나오면서 대중들이 ‘AI란게 있대, 우와 대단하다’ 하는 정도로 관심을 가졌던 것과 비슷한 양상이었죠.
그 시기의 회사들은 컴퓨터를 가지고 뭘 할 수 있을까에 대한 기대가 컸다보니, 제가 학위를 받고 교수가 되던 시기에 *닷컴버블이라고 불리는 컴퓨터공학의 황금기가 시작되었습니다. 의과보다 컴퓨터공학과를 더 선호할 정도로요.
*닷컴버블(dot-com bubble)은 인터넷 관련 분야가 성장하면서 산업 국가의 주식 시장이 지분 가격의 급속한 상승을 했다가 붕괴된 시기로, 1995년부터 2001년까지의 시기를 말한다.
그러다가 2000년대 초 막연한 기대가 꺼지면서 갑작스레 암흑기에 들어갔어요. 갑자기 각광받던 컴퓨터 공학과가 아무도 가고싶어하지 않는 기피 1순위 학과가 되었죠. 전문가 양성에 10년 이상이 걸리는 업계 특성상 2010년대 초반부터는 중간 관리를 할 인력이 제대로 공급되지 못했습니다.
그런데 그 시기에 아이폰이 나오면서 스마트폰 기반의 서비스 시장이 생기기 시작했죠. 전문 인력은 없는데 다시 개발자 수요가 높아진 거에요. 자연스레 인력부족으로 인해 문제가 많이 생겼고, 개발자 양성이 중요하다는 인식이 생기기 시작했습니다. 그러면서 NHN NEXT 같은 개발자 양성 기관들이 생기기 시작했죠. 그때 저도 인력부족으로 인한 문제점들을 겪으면서 좋은 개발자 후배 양성을 위해 나서야 한다고 생각하게 되었고. 개발자를 양성하는 교육을 하게 되었습니다.
좋은 개발자가 되기 힘든 이유
좋은 개발자 후배를 양성하겠다고 마음을 먹은 후로, 어떤 교육 방식이 개발자 양성에 더 효율적일까 오랜기간 많은 고민을 해왔습니다.
그래서 대학교에서 강의도 하다가 최근에는 42 Seoul이라는 정부에서 만든 새로운 방식의 교육을 3년간 해보기도 하고 작년 여름에는 다시 국민대로 돌아와서 또 다양한 방식으로 개발을 가르쳐봤죠.
이런 교육 경험들을 통해서 지금의 교육방식의 큰 문제점을 발견했는데요.
첫 번째는 학생들은 회사가 개발하는 방식으로 훈련을 받은 적이 없다는 것입니다.
학교나 학원에서는 품질 높은 소프트웨어를 만드는 교육을 제대로 받은 적이 없습니다. 지식을 배울 뿐이죠. 그러다 보니까 지식들을 현실에 있는 코드와 매핑을 잘 사용하지 못하게 됩니다.
물론, 학교가 잘못했다는 건 아닙니다. 대학교의 교수님들은 개발자들에게 반드시 필요한 컴퓨터과학 이론들을 잘 전달해주시고 계십니다.
근데 회사 입장은 좀 다르거든요.
회사가 사람을 뽑는 건 서비스에서 사용자들이 바로 사용할 수 있는 좋은 코드를 만들기 위함인데, 학교에서의 교육 목표는 그렇지는 않아서 일을 잘 할 수 있도록 가르치고 도와주는 온보딩 시간이 많이 걸릴 수 밖에 없습니다. 약간 과장하면 회사가 채용을 한 다음에 몇 달 동안 월급만 그냥 줘야 되는 상황이 발생하는 겁니다.
이런 상황이 지속되다 보니 회사는 신입 사원을 뽑기 싫어하게 되는거죠.
또 작은 회사는 인력이 없으니까 어쩔 수 없이 신입사원들을 뽑아 몇 개월간 교육을하여, 실질적인 프로젝트에 참여할 수준이 되면 큰 회사에서 데려가는 악순환도 일어나게 됩니다.
두번째로는 경쟁을 통한 교육은 성장을 방해한다는 겁니다.
어떻게 보면 경쟁없는 교육이 필요하다는 이 말이 이상적인 말로만 들릴 수 있습니다.
누가 가장 잘하고 가장 못하고는 여럽지 않게 알아챌 수 있죠. 자기가 속한 학교라는 작은조직 안에서 볼 때는 실력차가 크게 느껴질 수도 있어요. 학교의 평가 시스템도 줄세우기(경쟁)를 하고, 학생스스로도 다른 사람과 자기를 비교하게 되죠. 그것이 외적 동기가 될 수 있기는 합니다.
그런데 사실 학생들 사이의 비교는 큰 의미가 없어요. 사회에 나와서 보게 되면 높은 절벽에서 저 아래에 있는 나무를 바라보는 것과 같아서 그 나무들 간의 차이는 생각보다 별로 안 나요.
그런데 그정도의 미미한 차이를 가르고, 비교하는 상대평가를 하게된다면, 잘 클 수 있는 나무의 내적 동기를 꺾어 버리는 결과를 낳을 수도 있죠.
29년 개발 교육 경력으로 단단해진 교육철학
오랜기간 개발자를 양성하는 일을 하다보니, 좋은 개발자의 정의에 대해서 질문을 많이 듣곤 하는데요.
저는 좋은 개발자란 기술에 대한 호기심을 유지하며, 매일 스스로 성장하는 개발자라고 생각합니다.
매일 스스로 성장하는 개발자가 되기 위해서는 앞서 말한 두가지를 반대로 해야해요.
회사가 개발하는 방식으로 훈련 받아야 하고, 경쟁을 하지 않아야 합니다.
이 두가지를 위해서는 먼저, 교수, 선생님은 빠지거나 역할이 바뀌어야 합니다.
학교에서는 주로 선생님이 진도를 나가고 그것을 그대로 암기하는 방식을 썼습니다. 물론, 이 방식이 어떤 학생들한테는 맞을 수도 있지만, 이 방식의 문제는 끝나고 난 다음에 내가 뭘 할 수 있는지에 대한 느낌이 안 와요. 현실 문제에 적용을 할 수 있는 역량이 안생기는거죠.
적용할 수 있는 학습을 위해서는 프로젝트를 통한 학습이 대안이 될 수 있습니다.
실제로 이전에 제가 했던 여러 가지 교육 방식 중에 프로젝트를 하면서 학습하는 방식이 있었어요. 프로젝트를 통해서 배운 학생들은 모든 과정을 직접해보고 결과를 보고 자기가 뭘 할 수 있는지를 알게됩니다. 성장하는 걸 스스로도 느끼게 되는거죠.
이게 학생들한테 되게 괜찮았던 것 같아요. 성장을 느끼도 다음 단계를 도전하는 내적인 동기가 생기는겁니다.
또, 교수가 가르칠 수 있는 이론적인 학습은 인터넷에 지금 굉장히 많이 있거든요.(당장 패스트캠퍼스만 해도 강의가 많잖아요) 그렇기 때문에 이론은 자신의 페이스로 알아서 학습하고, 자신의 페이스대로 배운것을 학생들끼리 경쟁 없이 공유하는 동료학습을 하는 방법이 단순히 강의만 들었을 때보다 더 좋은 결과가 나온다는 것도 많은 교육을 통해서 확실히 체감했습니다.
‘프로젝트’로 성장하는 법
이런 이유들로 만들어진 게 Kernel360입니다. 그래서 Kernel360은 교수도 없고, 경쟁이 없습니다. 대신, 시작부터 끝까지 오직 팀 프로젝트로 이뤄져있는데요.
Kernel360에서는 여러 개의 프로젝트가 예정돼 있는데 몸풀기로 해커톤을 진행하고, 한 달짜리 프로젝트로 실전 개발 사이클을 경험하고 그 다음에 제대로 프로젝트를 경험할 수 있는 5달 짜리 프로젝트가 있어요.
한 달짜리 프로젝트에서는 어떤 서비스가 이루어지는 전 과정, 프론트엔드에서 백엔드, 개발 환경 등 전체를 경험 해보는 거예요.
그리고 5개월짜리 프로젝트에서는 그 전 과정을 이해했으니 백엔드에만 집중해서 개발하고 운영까지 해보는 거죠.
이 모든 과정은 팀으로 이뤄지는데요. ‘팀’에 대한 부정적인 생각을 갖고있는 학생들이 있을 수 있어요. 하지만 팀으로 해야 되는 이유는 당연히 모든 걸 혼자 할 수 없고, 회사가 팀으로 이뤄져 있기도 하지만, 짧은 프로젝트 긴 프로젝트를 경험 하면서 팀의 다이내믹스를 이해하는 게 실제로 개발을 할 때 중요하기 때문입니다.
팀의 다이내믹스란 같이 일하는 팀원들이 어떤 역할을 어디까지 할 수 있고 어떤 걸 도와줘야 되고, 결과물의 성과와 책임을 어떻게 정할지와 같은 모든 것들을 팀의 다이내믹스 라고 하는데 그런 부분들을 진하게 경험을 해야 되는 거죠.
이런 진한 경험을 디렉터와 멘토들의 도움으로 올바른 방법으로 얻을 수 있게되고, 그 경험을 통해 성장하는 방법을 배우게 되는 성장의 선순환을 가르치는 것 그게 우리의 목표라고 볼 수 있습니다.
‘협업 역량’은 말을 잘하는게 아니다
신입사원을 채용할 때, 기본 조건과 우대 조건이 있어요.
그런데 후보가 그 우대 조건의 일부라도 만족시킬 수 없다면 신입사원으로 뽑히지 못하죠. 그래서 Kernel360은 학생들이 학교에서 또는 다른 부트캠프들에서 경험할 수 없는 우대 조건을 주는 것에 집중했습니다.
Kernel360이 줄 수 있는 우대 조건은 ‘협업역량’과 ‘현실적인 운영 경험’입니다.
그런데 ‘협업 역량’이라고 하면 ‘어? 나 커뮤니케이션 잘하는데 그럼 충분한거 아니야?’라고 착각할 수 있어요.
하지만 실제 기업이 원하는 협업 역량이라는 건 내가 이런 일을 하고 다른 사람이 저런 일을 할 때 이 문제가 저 사람 손에서 어떻게 해결되는지를 이해하는 것을 말하죠.
소통을 잘하는 것도 중요하지만, 기술적으로 나와 협업하는 다른 영역의 파트너들이 어떻게 일하는지에 대해서 서로 확실히 이해하는 것을 진정한 ‘협업 역량’이라는 거죠.
그러니까 현실적인 프로젝트 개발, 운영 경험을 해야 회사가 원하는 협업 역량을 갖출 수 있는거죠.
그래서 Kernel360이 실전 개발 사이클을 강조하는 거구요.
넓게 보는 법을 가르치는 멘토와 디렉터
우리가 직접적으로 오프라인으로 강의하는 그런 강의 대신 온라인 강의를 제공한다고 했는데, 그럼에도 불구하고 이제 그런 강의에서 얻을 수 없는 영역들이 있습니다.
시장에 맞는 사람이 될 수 있도록 학생들이 가진 기술과 시장이 원하는 기술을 맞춰주는 영역인데요. 이 부분을 해결하기 위해서 멘토와 디렉터가 존재합니다.
학생들은 자기가 알고 있는 자기 세계에서 판단을 하고 행위를 하게 되는데 실제 세상은 넓잖아요. 그래서 다양한 멘토들이 와서 실제 학생들이 생각하지 못했던 포인트, 현업에서 문제를 보는 다른 관점을 얘기해 주는 게 필요하죠.
학생들은 자기가 아는 걸 가지고만 만들려고 하는 성향이 매우 높아요.
그런데 회사들이 추구하는 프로젝트 진행 방식은 각 회사마다 다 따로 있습니다. 또, 개발 시장이 빠르게 변화하기 때문에 사용하는 언어도 금방 바뀌기도 하고요. 이럴때 아는 길로만 개발하는 습관이 든다면, 성장이 더디게 될 수 있습니다.
그래서 멘토와 디렉터들이 ‘실제 회사에서는 이런 일에 이 기술을 보통 써’, ‘이 기술이 좀 낡은 기술인 것 같지만 이 기술을 써야지 너의 역량이 회사에 필요한 역량이 돼’라고 하는 거를 알려주는 거죠. 지속적으로 다른 기술들을 사용해보고 적용할 수 있도록 말이에요.
‘좋은 동료’를 만나기 위한 프로세스
Kernel360이 수강생을 선발하는 과정은 다소 까다롭습니다.
자신이 알고 있는 것을 프로젝트에 적용하고, 동료들에게 공유할 수 있으려면 적어도 컴퓨터 공학과를 졸업하지 않았더라도 그 정도의 수준의 지식을 갖고 있어야 한다고 생각하기 때문입니다.
이렇게 이야기 하면, 나보다 잘하는 다른 사람들이 많은데 내가 뽑힐 수 있을까 이런 고민을 하시는 분도 있을 거에요.
그런데, 앞에서도 이야기한 것처럼 잘하는 사람과 못하는 사람의 차이는 그렇게 크지 않습니다.
Kernel360에서는 지식보다는 성장 경험과 열정, 의지에 가장 큰 점수를 주고 있습니다. 꼭 분야가 개발이 아니어도 다른 특정 영역에서 아주 깊이 있게 공부를 해봤고, 그 결과를 설명할 수 있을 정도의 성장 경험이있다면 충분합니다.
부족한 기초 지식은 패스트캠퍼스에서 제공하는 Pre-Course강의로도 충분히 익힐 수 있고, 실력의 차이는 좋은 동료와, 좋은 멘토, 디렉터들의 관리가 있다면 금방 극복이 될 것입니다.
내가 정말로 성장할 수 있는 개발자가 될 의지가 있다면 우선, 지원해보세요.
그럼, 이 글을 읽고 계신 분들을 Kernel360 OT날에 볼 수 있다면 좋겠습니다.
다른 이야기가 더 궁금하다면