대학 소프트웨어 교육의 현황과 위기
※ 이 글은 국민대 소프트웨어학부 이민석 교수의 기고를 받아 작성되었습니다.
예상했던 대로 모든 산업과 우리의 일상이 소프트웨어 중심으로 돌아가고 있다. 당연히 소프트웨어 교육에 대한 요구도 늘고 있다. 초중고에서의 소프트웨어 교육은 물론 비전공 대학생들에게 대한 보편적인 소프트웨어, 코딩 교육이 전반적으로 확대되고, 일부는 의무화 되었다. 소프트웨어 중심으로 돌아간다는 의미는 무엇을 하던지, 어떤 위치에서 어떤 역할을 하던지, 크고 작은 문제의 해결에 가장 중요한 도구이자 결과로 소프트웨어가 존재한다는 의미이다.
< 소프트웨어 중심대학 사업의 목표 >
정부의 가장 중요한 소프트웨어 인력양성 정책 가운데 하나인 소프트웨어 중심대학은 2018년 9월, 5개 학교가 추가되어 2018년 말 현재 35개 대학이 지정되어있다. 소프트웨어 중심대학은 『산업 현장의 요구를 반영한 교과과정 전면 개편』, 『타 전공지식과 소프트웨어 소양을 겸비한 융합인재 양성』, 『소프트웨어 가치 확산 및 유능한 인재의 유입』이라는 세 가지 명확한 목표를 가지고 있다. 모두 시대가 요구하는 합당한 목표이다.
첫 번째 목표인 교과과정 개편에는 대학과 기업이 협력하는 문제 해결형 교과과정의 개발과 운영, 산학협력 프로젝트와 현장 실습, 즉, 장단기 인턴십이 포함된다. 이를 위해서는 대학과 산업과의 상호 신뢰 구축, 대학과 커뮤니티의 협력 등이 필요하다. 또 교육과정을 운영하려면 현장에서 사용되는 소프트웨어와 프랙티스를 기반으로 하는 교육, 다시 말하면 오픈소스 소프트웨어 기반의 교육을 해야 하는데 이를 위해서는 실무 경험이 충분하며 수업 중 실습과 학생들의 장단기 프로젝트에서도 코드 리뷰와 같은 개발 프랙티스를 통하여 현장과 같은 수준의 학습 커브를 만들어낼 수 있는 교수진의 확보가 필요하다.
두 번째 목표인 융합인재 양성은 인문, 사회, 타 공학 분야 학생들이 소프트웨어를 사용자 관점이 아닌 자신의 문제 해결을 위한 구체적인 도구로서 활용할 수 있는 능력 또는 적어도 소프트웨어 개발자들과의 소통 능력을 확보하도록 만드는 것이다. 여기에는 전공별 특성을 반영한 기초 교육, 코딩 교육이 포함된다. 이를 위해서는 전공 도메인별로 새로운 기초 교과과정 및 소프트웨어 교육 도구의 개발이 필요하다. 또 소프트웨어 기초 교육을 너머 자신의 주 전공과 소프트웨어 전공의 과목을 병행할 수 있게 하는 복수전공, 융합 전공의 개설도 필요하다. 이런 융합 교육을 효과적으로 운영하기 위해서는 비전공 학생들이 쉽게 소프트웨어 전공 과목의 핵심을 이해하고, 추후에 필요한 수준의 학습을 스스로 할 수 있도록 돕는 커리큘럼 운영과 비교과적 지원이 추가로 요구된다.
세 번째 목표인 가치 확산과 역량 높은 입학 자원 확보에는 초중고 및 학부모에 대한 교육을 중심으로 하는 소프트웨어 및 소프트웨어 개발자에 대한 인식 제고 소프트웨어 전공에 대한 동기부여가 포함된다. 이 활동에는 초중고 캠프의 효과적인 운영, 방문 교육 등 이전에 대학에서는 해보지 못한 새로운 활동이 요구된다.
< 대학들이 겪는 어려움>
소프트웨어 중심대학 사업이 정한 중대한 미션을 수행함에 있어 대학들이 겪는 어려움은 다음과 같다.
가장 핵심적인 문제는 역시 교수 자원 확보의 어려움이다. 대학 교수가 한 때는 꽤 선망의 대상이 되는 직업이었으나, 지금 이공계 교수는 그것과 거리가 멀다. 교육, 연구에 집중하기 어려운 수준의 기타 업무량도 많지만, 더 중요한 이유는 같은 경력 수준과 비교할 때 산업체와의 임금 격차가 크기 때문이다. 특히 인공지능 분야처럼 시장 상황이 좋은 분야는 더 그렇다. 그런 분야가 아니라도 현장 경험이 충분한 산업체 인재들은 교육이나 연구의 욕구가 많은 극히 일부의 개발자를 제외하고는 대학을 선택하기는 쉽지 않다. 대학 자체 예산도 문제지만, 소프트웨어 중심대학 사업 등 정부사업을 하는 대학의 경우, 사업 예산에서 인건비를 지급하는 산학협력교수 또는 유사한 이름의 비정년트랙 어떤 경우에는 비전임 교수를 뽑는 것이 가능한데 상당히 높은 자격 수준을 요구하면서도 제시된 연봉 수준은 국내 대기업의 신입사원 연봉을 조금 웃도는 수준인 곳까지 있다.
다음 문제는 산업과 대학 사이의 관계이다. 점차 개선되고는 있으나 온전한 산학 협력을 위해서는 교수, 학생, 산업체(의 멘토) 사이에 기술적 절차적 신뢰가 더 필요하다. 업체들은 높은 수준의 기술적 역량을 가진 학생들을 인턴 또는 직원으로 뽑으려 하지만 학교에서 학생들을 업체가 원하는 숫자만큼 업체가 원하는 수준으로 양성하기는 쉽지 않다. 산학협력 프로젝트에서 기대하는 결과물의 정의, 결과물의 완성도에 관한 산업체와 학교 사이의 인식 차이도 크다. 상당히 많은 영역에서 산업체의 신기술 개발 역량이 올라가면서 학교와 산업 사이의 역할에서도 새로운 정의가 필요하다. 각 대학들은 학과, 학교, 지역 등에 따라 협력 대상의 주 산업 영역, 협력 대상 기업의 규모를 설정하고 산학협력을 추진하는데, 그 설정 결과가 학생들이 취업 희망과 괴리가 큰 경우도 많다. 그 결과 인턴 또는 현장 실습 경험이 취업으로 잘 이루어지지 않는다. 학생과 기업의 매칭 프로세스도 취약한 경우가 많다. 학생을 기업을, 기업은 학생을 충분히 탐색하고, 면접이라는 구체적인 프로세스를 거쳐야하는데, 서로가 취업을 전제로 인턴이나 현장 실습을 하지 않다보니 그런 정교한 그래서 비용이 증가하는 매칭 프로세스를 도입하기 쉽지 않다.
모든 산업에서 혁신을 이끄는 원동력이라고 볼 수 있는 오픈소스 소프트웨어를 교육에 녹여 넣는데도 여러 어려움이 있다. 앞서 언급했던 교수 확보도 문제이고, 오픈소스 기반 교육이란 말 자체에 대한 이해 차이도 크다. 소프트웨어 분야의 주요 전공 주제의 핵심 지식은 오픈소스던 아니던 차이가 없다. 산업에서 학생들에게 기대하는 역량은 전공 주제들에 대한 확실한 이해와 실제 문제 해결에서 적용할 수 있는 역량이다. 물론 오픈소스 라이선스나 거버넌스 관련한 주제들이 있기는 하지만, 그 보다는 필수 또는 선택으로 제공되는 주요 전공 주제 과목을 배우는 방식 즉 개발 환경과 도구, 예제, 개발 프랙티스에 현장에서 사용하고 있는 오픈소스 소프트웨어가 적용되어야 한다는 것이다. 실습 환경을 바꾸고, 교안의 코드 예제를 바꾸고, 교과 과정에서 진행되는 모든 크고 작은 프로젝트의 진행에 오픈소스 커뮤니티 또는 산업이 사용하는 프랙티스를 적용하여야 한다. 또 학생들이 학교에서 배울 수 없는 최신 기술들을 오픈소스 커뮤니티에서 배울 수 있도록 독려하고, 커뮤니티 개발자들과 학교 사이의 접점을 늘려나가는 것도 필요하다. 이런 일은 기존에 있던 대부분 교수들은 해본 적이 없는 것들이며, 오픈소스 기반 환경으로의 전환도 여러 이유로 쉽지는 않아 보인다. 하지만 시대가 바뀌어 지금은 오픈소스 방식으로 진행하도록 RFP가 나오는 정부의 소프트웨어 관련 R&D가 많아지고 있으며, 학생들은 소프트웨어 개발자로 취업하기 위한 역량 관점에서 이미 오픈소스 기반 교육의 필요성을 느끼고 있기 때문에 쉽지 않겠지만 빠르게 대학이 적응해 갈 것으로 기대된다.
소프트웨어 중심대학 뿐만 아니라 상당히 많은 대학들이 대학의 모든 학생들에게 소프트웨어, 코딩 교육을 의무화하고 있다. 실제 대부분 대학에서는 특히 저학년 대상으로 제공되는 소프트웨어 교육에 큰 어려움을 겪고 있다. 고학년들의 경우, 전공 과정을 조금 더 배운 뒤에는 각자 생각하는 진로분야에 따라 소프트웨어 역량의 필요성을 느끼지만, 저학년에 의무적으로 수강하는 과목에서 학습 동기를 확보하기는 생각보다 어려워 학습 성과를 달성하기 쉽지 않다. 전교생을 대상으로 하므로, 원활한 실습을 위해서는 교수자는 물론 실습 환경, 조교의 확보도 필요하다. 학교의 공간 배분 문제, 각 전공의 한정된 학점 이수 요건에 소프트웨어를 필수로 끼워 넣는 것이 대학 전체적으로는 잘 합의되는 사안이 절대 아니며, 대학원생이나 역량이 되는 조교의 확보도 매우 어려운 실정이다. 이 부분은 학생, 본부의 의지, 다른 전공 교수 등 대학 사회 내부의 인식 변화, 사회적 요구에 대한 동조화가 필요한 부분이다. 학년이 높아질수록 학생들의 소프트웨어 과목에 대한 관심은 높아지고 있는 것으로 관찰되며 복수전공 또는 연계융합 전공의 형태로 소프트웨어 전공 교육에 편입되고 있다.
이미 20% 이상의 학생들이 어떤 경로로든 코딩을 경험하고 진학하고 있다. 초중고에서 소프트웨어 교육이 강화되면서 앞으로는 모든 학생이 이미 정보과목을 배우고 진학한다는 가정이 생긴다. 따라서 대학들은 이 시기를 대비하여 전교생에 대한 소프트웨어 교육을 다른 관점에서 디자인할 준비가 필요하다.
소프트웨어 융합교육 관련하여 매우 주목할 만한 사례가 소프트웨어 중심대학은 아닌 부산 소재의 영산대학교에 있다. 이 학교는 모든 학과에 전공 특성에 맞는 소프트웨어 융합 과목 4개씩, 각 3학점의 전공과목으로 개설하고 그 가운데 6학점은 필수로 지정하는 교과목 개편을 단행하여 시행하고 있다.
영산대학교와 같이 각 전공이 적극적으로 소프트웨어를 수용하는 경우가 아니라면, 일반 대학은 부전공, 복수전공, 연계융합전공으로 비전공 학생들의 소프트웨어 진로 개발을 위한 학습 욕구를 채울 수 있다. 많은 학교에서 소프트웨어 전공에 다전공 형식으로 편입되는 학생들이 많아지고 있는데, 소프트웨어 담당 학과의 자원 제약도 문제지만, 비전공 학생들이 전공 주제를 배우기 위한 기초 역량의 부족도 심각한 문제이다. 국민대학교의 경우 소프트웨어학부에서 브릿지 과목, 브릿지 분반을 개설하여 기초가 부족한 비전공학생들 분리하여 소프트웨어 전공 주제 학습을 도와주고 있으며, 유무료로 제공되는 외부 온라인 강좌를 학생들이 들을 수 있도록 지원하고 있다.
대학의 입학자원 즉, 신입생 모집은 최근 소프트웨어 분야에 대한 전망이 좋아지면서 예전보다 훨씬 상황이 좋다. 거의 모든 대학에서 소프트웨어 관련학과의 경쟁률이 높아졌고, 그 덕에 입학하는 학생들의 기초 학력 수준도 높아졌다. 이 추세는 앞으로 계속될 것으로 기대된다. 문제는 전공 학생들의 입학 당시 역량 편차가 크다는 것이다. 특성화고 출신이거나 일반고에서 비교과 활동으로 소프트웨어를 경험하여 꽤 높은 수준의 전공 역량을 이미 확보한 학생들이 많아지면서 모든 학생들에게 같은 교과 과정, 같은 수준, 같은 방식의 교육을 제공하는 방식으로는 학생들의 성장을 도와주기 어렵다. 이런 변화에 대한 대응은 지금의 대학 체제에서 꽤 어려운 도전에 속한다. 교수, 공간, 조교 등 더 많은 자원이 필요함을 물론이고, 성적 체계, 학점 체계 등 학교들이 철옹성처럼 유지하고 있는 학사 시스템의 변경을 요구하기 때문이다.
학부생 입학 상황과는 별개로 대학원생 모집은 예전보다 더 상황이 나빠졌다. 소프트웨어 개발자에 대한 산업의 수요가 커지면서 학부를 졸업하고 대학원 진학대신 취업을 선택하는 학생들이 더 많아졌다. 대학원의 연구 기능 유지 는 물론, 학부 교육을 위한 조교의 확보조차 쉽지 않은 상태이다. 더구나 대학원 진학 희망 분야도 특정 실험실에 편중되는 현상을 여러 학교에서 관찰되며 상대적으로 비전공 학생이나, 외국인 학생의 석사과정 진입 비중도 점차 높아져 이에 대한 대응도 필요하다.
< 대학의 위기 >
지금 우리 대학들은 큰 위기 상황에 놓여있다. 대학 정원에 비하여 대학을 들어가려는 학생 수가 급격하게 줄어들고 있으며, 등록금도 수 년 째 동결되어 새로운 교육 투자나 교수 채용에 현실적인 어려움이 있다. 그 때문에 많은 대학들은 스스로의 의지나 투자가 아닌 정부의 다양한 재정 지원 사업에 의존하여 자체적 비전과 미션에 따른 혁신보다는 정부 사업이 제시하는 방향에 적응하는 방식의 변화에 익숙해지고 있다.
하지만, 소프트웨어 분야의 경우, 인구 구성에 따른 구조적인 문제보다는 인력 양성 기관으로서 대학 자체의 존재 이유에 대한 의문이 생기기 시작한 것이 더 큰 위기이다.
이미 많은 소프트웨어 업체들이 취업 때 학력과 성적보다는 문제 해결 역량과 학습 역량만을 보기 시작했으며, 고등학교 졸업자들도 대졸자와 대등하거나 더 높은 연봉으로 취업하는 것을 어렵지 않게 관찰할 수 있게 되었다. 또 모든 대학의 전공 주제에 대하여, 최고의 강의를 국내외 MOOC 사이트에서 찾아 들을 수 있고, 대학에선 배울 수 없는 최신 기술들을 실제 개발자가 직접 코딩을 하면서 가르쳐주는 온라인 강좌들 또한 무료 또는 상당히 저렴한 비용으로 접할 수 있다. 더 적극적으로는 비용이 좀 비싸기는 하지만 대학등록금 보다는 싸고 빨리 소프트웨어를 배울 수 있는 경쟁력 높은 오프라인 교육기관들도 생기고 있다. 온라인에서는 Google, YouTube, stackoverflow에 질문을 하고, 정답을 쉽고 빠르게 얻을 수 있으며, Github에서는 어떤 기술이 실제 프로젝트에 적용된 예제를 얼마든지 찾을 수 있다. 지금은 국내에서도 온라인, 오프라인 개발자 커뮤니티가 활성화되어 있어, 각종 기술 또는 경력 개발에 관한 멘토를 직접 만나거나 이메일, 페이스북을 통해 멘토링 받을 수도 있다.
즉, 스스로 학습할 수 있는 역량이 있는 사람들에게 대학은 더 이상 매력적인 곳이 아니며, 가격대 성능비가 좋지 않은 곳으로 느껴지지 시작한 것이다. 이 현상은 우리나라만의 문제가 아니며, 외국에서도 거의 같은 추세이다.
지금 대학 외부의 환경은 대학이 변화하는 속도보다 엄청나게 빠른 속도로 바뀌고 있다. 대학은 매우 보수적인 조직이다. 대학이 고수하는 전통적인 교육 방식과 역할이 의미 있는 부분도 있기는 하다. 하지만 근본적으로 우리의 대학에는 산업과의 경계, 대학 내에서 전공과 전공 사이의 경계, 한 전공 내에서도 교수와 교수, 과목과 과목, 그리고 행정 시스템과 교육 사이의 경계가 너무 견고하다. 이런 경계가 유지되는 한, 대학의 미래는 없다. 특히 세상의 모든 문제를 해결하는 가장 중요한 도구이자 방법론이자 그 결과물인 소프트웨어 관점에서 이 경계는 반드시 허물어져야 한다.
또한 정부는 시장 논리가 동작하는 한, 대학의 모든 면에 자율성을 보장하는 입장을 유지해야한다. 재정 지원이라는 대학으로서는 절실한 수단을 통해 개입하는 경우에도, 미래지향적 발전을 가로막는 모든 경계를 허무는 방식의 혁신적 변화를 유도해야 하며, 그런 노력은 실패할 수 있다는 가정도 해야 한다. 소프트웨어는 다양성을 먹고 산다. 따라서 획일적인 교육이 성공할 가능성은 높지 않다. 학생들도 달라지고 있다. 실패를 하더라고 새로운 교육 실험이 대학에서도 많이 이루어져야한다. 그리고 소프트웨어 중심대학 사업과 같은 대학 지원 사업도 정량적 평가를 지양하고 새로운 많은 시도를 가능하게 하고, 실패와 성공의 경험을 다른 대학들과 나누는 방식으로 진행되어야 한다.
(이민석 / 국민대 소프트웨어학부 교수)