‘컴공’과 ‘컴사’의 차이…컴퓨터 관련 전공을 알아보자

615

‘컴공’ 전공은 하드웨어 위주 공부
‘컴사’ 는 소프트웨어 솔루션 개발

불과 수년만에 컴퓨터 프로그래밍이 자동차 운전같이 누구나 할 줄 알아야 하는 기술이 됐다. 10여년 전만 해도 컴퓨터 사이언스나 컴퓨터 엔지니어링 전공이 매우 단순했다. 당시에도 소프트웨어 개발자(소위 프로그래머)와 하드웨어 개발자가 구분됐지만 최근에는 세상이 복잡해지고 산업이 발달하면서 분야가 더 세분화 되고 있다. 컴퓨터 관련 학부 전공들에 대해서 살펴봤다.

 

컴퓨터 관련 전공은 크게 2가지로 나눌 수가 있다. 컴퓨터 사이언스(컴사)와 컴퓨터 엔지니어링(공학, 컴공)이다. 하드웨어와 소프트웨어의 차이라고 볼 수 있다. 물론 하드웨어를 다루다 보면 소프트웨어를 하지 않을 수 없고 반대도 마찬가지다.  컴사의 주요 초점은 소프트웨어를 작성하는 것이다. 컴퓨터 소프트웨어는 학부모도 잘 알다시피 프로그래밍 코딩이다. 하지만 컴사의 목표는 코딩만이 아니다. 코딩은 일부분이고 코딩을 통한 문제 해결이라고 보면 된다고 김선호 박사(USC공대, 빅데이타 전공)는 설명한다. “세상의 문제를 해결하는 방법을 구축합니다. 물론 컴퓨터를 이용하는 경우죠.”

분야 많아져 학부생 보다 석사 선호
상사·고객 등과의 소통 능력도 중요

특히 요즘은 빅데이타를 다루는 프로그래밍까지 응용되면서 활용 범위가 넓어지고 있다. 21세기에 컴퓨터를 이용하지 않는 분야가 없으므로 세상의 모든 문제를 해결한다는 것에 이의를 제기할 사람은 많지 않다. 컴사에는 큰 범주로 무엇인가 계산하는 컴퓨테이션(전산화)이라는 분야를 비롯해, 단순 사무 프로그램, 기계간을 연결하는 프로그램, 로봇을 제어하는 로보틱스 등이 컴사의 큰 영역이다. 이 분야는 세상에서 컴퓨터를 활용하면 할수록 커져서 이제는 모든 문명기기가 컴사의 영역이 됐다.  예를 들어 전기차가 아닌 단순 차량만 해도 컴퓨터가 4대가 들어간다. 여기에 사용되는 차량 통제 프로그램이 컴사영역이다. 이외 공장의 생산라인, 버스이동 모니터링 등 우리가 눈으로 확인할 수 있는 분야와 미처 알 수 없는 분야까지 따져보면 헤아릴 수 조차 없을 만큼 많다.  컴사의 문제해결 솔루션을 또한 예로 들면, AI, 바이오컴퓨팅, 컴퓨터시스템, 사이버보안, 데이터분석, 게임개발, 모빌웹 애플리케이션, 프로그래밍언어, 소프트웨어엔지니어링이다. 이에 비해 컴공은 공과분야로 하드웨어를 다룬다는 점에서 이해가 쉽다. 메모리, CPU라고 부르는 부품을 포함한 칩같은 반도체 분야, 여기에는 설계부터 제작, 연구 개발까지 모두 포함된다. 컴퓨터를 설계하는 컴퓨터 아키텍처, 컴퓨터를 서로 연결해주는 네트워킹 하드웨어, 간단한 자동판매기부터 큰 공장의 시스템까지 포함하는 시퀀스 프로세싱 등의 다양한 분야가 해당 영역이다.

▶ 컴퓨터 전공 커리큘럼

컴공과 컴사가 배우는 컴퓨터랭귀지는 예전에는 C부터 시작했는데 최근에는 조금 세분됐다. 컴공은 하드웨어와 가까운 C를 여전히 배우고 있다. 컴사의 경우, 파이썬, 자바, 자바스크립트 같은 응용랭귀지부터 데이타베이스 등을 주로 배운다.  특히 컴사의 3~4학년에는 데이타베이스, 그래픽스, AI(인공지능), 머신러닝을 접하게 된다. 그래서 컴사 졸업자들의 경우, 특정 프로젝트를 맡아 실제 문제 해결을 해보는 것으로 논문을 대신한다. 김선호 박사는 “학부에서 세부 전공을 모두 다루지는 못한다”면서 “7~8개 과목을 듣고 역량을 키우게 된다”고 말했다. 그래서 컴사 전공자의 경우, 학사학위 소지자 보다는 석사 학위 소지자가 역량에 따라 다르지만 고연봉을 받고 바로 현장에 투입된다. 학부 출신은 무엇이든 맛만 보고 온 경우가 많아서 현장에 직접 투입하기에는 경험이 부족하다고 전한다.

▶ 컴퓨터 랭귀지

컴사가 주로 배우는 컴퓨터 랭귀지는 컴퓨터를 움직이는 프로그램이다. 요즘은 한 사람이 소프트웨어의 처음부터 끝까지 만들어 내던 예전과는 달리, 복잡도와 범위가 넓어져서 소프트웨어 전체를 만드는 것은 불가능하다. 따라서, 컴퓨터 랭귀지는 컴퓨터와의 의사소통 뿐 아니라 소프트웨어 엔지니어간의 의사소통을 위한 언어라고 보는 것이 맞다. 산업의 발달로 컴퓨터 랭귀지의 종류는 다양해져서 목적과 사용되는 플랫폼에 적합한 언어가 많이 사용되고 있다. 다행스러운 것은 누구든 랭귀지 하나에 능숙해지면 다른 랭귀지를 배우고 활용하는 것이 무척 쉬워진다.  컴퓨터 랭귀지를 할 줄 안다는 것은 사람 언어와 컴퓨터 언어의 통역이 가능해진다는 것으로 능력자가 되는 것이다. 다시 한번 강조하지만, 랭귀지의 궁극적인 목적은 세상에 없던 새로운 것을 만드는 것이다. 창의적인 생각과 남들이 해본 적 없는 접근이 훌륭한 컴퓨터 프로그래밍이다.

▶ 졸업 후 직종

컴공의 경우, 하드웨어 관련 분야에서 우선적으로 일할 수 있다. 반면 컴사는 대부분 소프트웨어 엔지니어, 소프트웨어 디벨로퍼로 일한다고 알려져 있지만 현실은 조금 다르다. 김선호 박사는 “사실 컴퓨터 프로그래머의 삶은 단조롭기 이를 데 없다”며 “하지만 컴사 전공자가 프로그래머만 되는 것이 절대 아니라는 것을 강조하고 싶다”고 말했다. 컴퓨터를 이용해서 세상의 모든 해결책을 찾아내야 하는 직업이기에 단순한 프로그래머가 아니고 솔루션 디벨로퍼(문제 해결 개발자)다. 한마디로 컴퓨터를 이용하는 업종에서는 어디나 필요하다. 그곳에서 각자의 프로젝트를 수행한다. 그러므로 특정한 분야를 한정 해서는 안된다.

▶ 개발자의 일상

하루 종일 코딩하고 디버깅(오류 수정)하고 트렌드 공부하는 것이 일반적인 소프트웨어 엔지니어의 일상이지만 현장 경험이 많은 전문가에 의하면, 소프트웨어 엔지니어도 많은 시간을 회의에 참석해야 한다. 다른 엔지니어와의 회의나 상사인 총괄 매니저와의 회의도 있다.  또한 고객과의 회의도 가능하다. 이렇게 다양한 종류의 회의에 참석하다 보면, 하루 종일 실제로 코딩은 하나도 못하는 날도 생긴다. 하지만 이해 관계자들과 긴밀한 의사소통 없이 좋은 소프트웨어를 만드는 것은 불가능하기 때문에 회의는 소프트웨어 엔지니어의 중요한 일상 중의 하나다. 이렇게 회의가 소프트웨어 엔지니어의 중요 일과이기에 의사소통 능력이 매우 중요하다. 자신이 해야할 일을 정확하게 이해하고 주어진 리소스와 시간에 따라 계획을 수립하는 일은 의사소통 능력이 없이는 불가능하다. 컴퓨터 랭귀지 뿐 아니라, 커뮤니케이션 스킬의 중요성이 강조되는 이유다. 김선호 박사는 “특히 커뮤니케이션 스킬이 탁월한 경우 고위직에 올라가는 경우도 많다”면서 “반면 코딩을 아무리 잘해도 몇몇 천재들 빼고는 자신의 코딩이나 프로젝트를 제대로 설명하지 못하면 실력을 제대로 발휘할 기회를 얻기 어렵다”고 덧붙였다.

▶ 컴퓨터 전공자 기본 성격

컴퓨터 전공자라면 흔히 떠올리는 이미지가 있다. 어두운 방안에서 밤새도록 컴퓨터 앞에 앉아 어려운 문제를 풀고 있는 사람이다. 물론 이런 이미지는 어느 정도는 컴퓨터 프로그래머 일상의 일부분을 보여주기도 한다.  그러나 훌륭한 프로그래머는 밤새워 문제를 푸는 범생이(nerd)의 이미지에서 머무르지 않는다. 소속 회사의 매니지먼트 팀과 세일즈 팀, 고객들과 끊임없는 의사소통을 통해서 주어진 환경 아래서 성과를 최대한 끌어 낼 수 있는 프로그램을 기획할 수 있어야 한다.

장병희 기자