컴퓨터공학과 나와도 코딩 ‘쩔쩔’

오늘 페이스북을 보니 컴퓨터공학과 나와도 코딩 ‘쩔쩔’ 기사에 대한 이야기가 많던데, 이 블로그 주제가 코딩 스쿨인 만큼 코딩 교육에 대한 이야기를 해볼까 합니다.

사실 기사 자체는 새로운 내용도 없습니다. 컴퓨터공학을 전공한 대학 졸업생들이 현업에 투입될 만큼 코딩 실력이 없고, 원인은 정부 정책이나 교육에 있다는 겁니다. 제가 놀란 것은 기사가 아니라 댓글의 반응입니다. 이 기사에 대한 주된 비판은 컴퓨터공학과는 단순 기능에 불과한 “코딩”이 아니라 알고리즘, 데이터 구조, 운영체제, 네트워크, 소프트웨어 엔지니어링 등 컴퓨터 과학과 이론을 습득하는 곳이기 때문에 컴퓨터공학과 졸업생이 6개월 정도 코딩만 배운 학원생들에 비해 코딩을 못할 수도 있다는 겁니다.

그럴 듯한 변명이지만 현실과는 다릅니다. 댓글에 따르면 컴퓨터공학과 졸업생들이 4년 내내 컴퓨터 이론을 습득하느라 너무 바쁜 나머지 코딩에 쓸 시간이 없었다는 이야기인데, 그렇다면 다소 코딩은 미숙해도 이론은 컴퓨터학원 출신과는 비교할 수 없는 수준으로 잘 알고 있어야 할 겁니다. 하지만 제가 지난 7년간 (상위권 대학) 컴퓨터공학과 학생들을 면접해 본 결과는 오히려 정반대입니다. 그나마 API 문서보고 앱이나 웹페이지 정도는 만들어 본 경험은 있어도, 컴퓨터 이론을 제대로 공부한 학생은 손에 꼽을 정도로 적었습니다. 일례로, 분명히 알고리즘 수업을 들었는데도, Big-O 표기법이 무슨 뜻인지, binary tree 검색 시에 time complexity가 얼마인지도 모르는 친구들이 적지 않습니다. OS의 가상 메모리가 어떻게 구현되고, 이게 C/C++의 malloc()new와 어떤 관계가 있는지 설명할 수 있는 학생은 손에 꼽을 정도로 적었습니다.

많이 양보해서 이론 공부하느라 코딩할 시간이 없었다는 게 사실이라고 쳐도 여전히 문제입니다. 컴퓨터공학은 이론과 실습의 균형이 중요합니다. 내가 이론으로 배운 것들이라고 해도, 실제로 만들어보지 않고서는 제대로 이해하기가 불가능하기 때문입니다. 알고리즘과 데이터 구조 수업을 들으면서 여러 알고리즘 실제로 구현해보고, 운영체제 수업을 들으면서 간단한 운영체제를 직접 만들어보고, 프로그래밍 언어나 컴파일러 수업을 들으면서 간단한 프로그래밍 언어를 직접 구현해 보지 않고서나 해당 과목을 이수했다고 말하기가 어렵습니다. 수업을 듣고 당장 한 학기만 지나도 아마 대부분의 내용이 기억에서 사라질 겁니다.

또한 대학이든 회사든 “코딩”을 단순 기능으로 생각해서 교육하지 않는 것이 문제입니다. 대학 졸업생은 물론이고 10년 이상된 개발자들 중에서도 코딩을 제대로 하는 사람이 별로 없는 이유는, 어떻게 하면 코딩을 잘하는지에 대해 고민하지 않을 뿐만 아니라 소프트웨어 아키텍처나 비지니스 로직, 머싱 러닝 알고리즘 등 그럴 듯한 말에 비해 상대적으로 저급한 일로 취급하기 때문입니다. 코딩을 글쓰기에 많이 비유하는데, 이런 상황은 “노인과 바다”와 같은 대작을 머리 속에 그리고 있는데 글쓰기 실력은 초딩 수준인거나 마찬가지입니다.

코딩 잘 못하는 소프트웨어 대가 같은 건 없습니다. 1년 이상 자기 손으로 코드 한 번 안 짜본 사람이 와서 소프트웨어 아키텍처나 프로세스에 대해 이야기하면 바로 무시하시기 바랍니다. 이론도 마찬가지입니다. 해당 분야에 특허를 내고 논문을 쓴다고 소프트웨어를 만들 줄 아는 게 아닙니다. 변수 이름 하나 수준에서 많은 고민을 하고 좋은 코드를 작성하기 위해 오랜 시간 고민하고 실제로 코드를 작성해야 대학에서 배운 이론이라는 것도 쓸모가 있습니다.

대학에서 이론 안 가르치고 코딩 가르친다고 문제 해결되는 것도 아니고, 지금처럼 컴퓨터공학과는 고급 지식을 배우는 곳이니 코딩 따위는 못할 수도 있다고 당당하게 이야기하는 것도 해결책이 아닙니다. 지금 컴퓨터공학과, 소프트웨어 엔지니어의 문제점은 그저 절대적인 학습량, 절대적인 코딩량이 낮은데 있습니다. 대학에서는 이론도 지금보다 더 많이 가르쳐야 하고, 실습 과제도 더 많이 내서 컴퓨터공학과 졸업하는 것 자체가 자부심이 될 정도로 기준을 높여야 합니다.

대학이 졸업생들의 실력을 보증하는 방법은 이미 의대에서 찾을 수 있습니다. 의대는 사람의 생명을 다루는 직업인 만큼 이론과 실습 모두 일정 수준 이상 도달하지 않으면 유급도 시키고, 의사자격증도 안 주는 방식으로 일종의 품질 보증을 하고 있습니다. 컴퓨터공학과처럼 취업 잘 되는 학과라고 사람 많이 뽑아서 졸업장 팔아 장사하는 모델이 되면 졸업생의 품질을 보증하지 못하는 건 어찌 보면 당연한 것 아닐까요?

One thought on “컴퓨터공학과 나와도 코딩 ‘쩔쩔’

  1. Pingback: 컴퓨터공학과 나와도 코딩 ‘쩔쩔’ | 서광열의 코딩 스쿨

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s