‘컴공’ 전공은 하드웨어 위주
‘컴사’ 는 소프트웨어 솔루션
단순 프로그램 개발자 아닌
‘문제 해결능력자’로 바뀌어
수십년전 지금의 학부모들이 대학생일때는 컴퓨터사이언스나 컴퓨터엔지니어링 전공이 매우 단순했다. 당시에도 소프트웨어 개발자(소위 프로그래머)와 하드웨어 개발자가 구분됐지만 최근에는 세상이 복잡해지고 산업이 발달하면서 분야가 더 세분화 되고 있다. 우선 소프트웨어 개발자도 쓰는 랭귀지가 엄청나게 늘어나서 모두 다 잘하는 사람이 별로 없을 정도다. 컴퓨터 관련 학부 전공들에 대해서 알아봤다.
본문컴퓨터 관련 전공은 크게 2가지로 나눌 수가 있다. 컴퓨터 사이언스(컴사)와 컴퓨터 엔지니어링(공학·컴공)이다. 이를 제대로 구분할 수 있다면 설명은 이미 절반이 끝났다고 볼 수 있다.
컴사는 일단 소프트웨어를 작성하는 것이다. 컴퓨터 소프트웨어는 학부모들도 잘 알다시피 프로그래밍 코딩이다. 하지만 컴사의 목표는 코딩만이 아니다. 코딩은 일부분이고 코딩을 통한 문제 해결이라고 보면 된다고 김선호 박사(USC공대)는 설명한다.
“세상의 문제를 해결하는 방법을 구축합니다. 물론 컴퓨터를 이용하는 경우죠.”
그런데 21세기에 컴퓨터를 이용하지 않는 분야가 없으므로 세상의 모든 문제를 해결한다는 것에 이의를 제기할 사람은 많지 않을 것이다. 컴사에는 큰 범주로 무엇인가 계산하는 컴퓨테이션(전산화)이라는 분야를 비롯해, 단순 사무 프로그램, 기계간을 연결하는 프로그램, 로봇을 제어하는 로보틱스 등이 컴사의 큰 영역이다. 이 분야는 세상에서 컴퓨터를 활용하면 할수록 커져서 이제는 모든 문명기기가 컴사의 영역이 됐다.
예를 들어 전기차가 아닌 단순 차량만 해도 컴퓨터가 4대가 들어간다. 여기에 사용되는 차량 통제 프로그램이 컴사영역이다. 이외 공장의 생산라인, 버스이동 모니터링 등 우리가 눈으로 확인할 수 있는 분야와 미처 알 수 없는 분야까지 따져보면 헤아릴 수 조차 없을 만큼 많다.
컴사의 문제해결 솔루션을 또한 예로 들면, AI, 바이오컴퓨팅, 컴퓨터시스템, 사이버보안, 데이터분석, 게임개발, 모빌웹 애플리케이션, 프로그래밍언어, 소프트웨어엔지니어링이다.
이에 비해 컴공은 공과분야로 하드웨어를 다룬다는 점에서 이해가 쉽다. 메모리, CPU라고 부르는 부품을 포함한 칩같은 반도체 분야, 여기에는 설계부터 제작, 연구 개발까지 모두 포함된다. 컴퓨터를 설계하는 컴퓨터 아키텍처, 컴퓨터를 서로 연결해주는 네트워킹 하드웨어, 간단한 자동판매기부터 큰 공장의 시스템까지 포함하는 시퀀스 프로세싱 등의 다양한 분야가 해당 영역이다.
▶컴퓨터 전공 커리큘럼
컴공과 컴사가 배우는 컴퓨터랭귀지는 예전에는 C부터 시작했는데 최근에는 조금 세분됐다. 컴공은 하드웨어와 가까운 C를 여전히 배우고 있다. 컴사의 경우, 파이썬, 자바, 자바스크립트 같은 응용랭귀지부터 데이타베이스 등을 주로 배운다.
특히 컴사의 3~4학년에는 데이타베이스, 그래픽스, AI(인공지능), 머신러닝을 접하게 된다. 그래서 컴사 졸업자들의 경우, 특정 프로젝트를 맡아 실제 문제해결을 해보는 것으로 논문을 대신한다. 김선호 박사는 “학부에서 세부전공을 모두 다루지는 못한다”면서 “7~8개 과목을 듣고 역량을 키우게 된다”고 말했다. 그래서 컴사 전공자의 경우, 학사학위 소지자 보다는 석사 학위 소지자가 역량에 따라 다르지만 고연봉을 받고 바로 현장에 투입된다. 학부 출신은 무엇이든 맛만 보고 온 경우가 많아서 현장에 직접 투입하기에는 경험이 부족하다고 전한다.
▶컴퓨터 랭귀지는 무엇인가
컴사가 주로 배우는 컴퓨터 랭귀지는 컴퓨터를 움직이는 프로그램이다. 요즘은 한 사람이 소프트웨어의 처음부터 끝까지 만들어 내던 예전과는 달리, 복잡도와 범위가 넓어져서 소프트웨어 전체를 만드는 것은 불가능하다. 따라서, 컴퓨터 랭귀지는 컴퓨터와의 의사소통 뿐 아니라 소프트웨어 엔지니어들간의 의사소통을 위한 언어라고 보는 것이 맞다.
산업의 발달로 컴퓨터 랭귀지의 종류는 다양해져서 목적과 사용되는 플랫폼에 적합한 언어가 많이 사용되고 있다. 다행스러운 것은 누구든 랭귀지 하나에 능숙해지면 다른 랭귀지를 배우고 활용하는 것이 무척 쉬워진다.
컴퓨터 랭귀지를 할 줄 안다는 것은 사람언어와 컴퓨터언어의 통역이 가능해진다는 것으로 능력자가 되는 것이다. 다시 한번 강조하지만, 랭귀지의 궁극적인 목적은 세상에 없던 새로운 것을 만드는 것이다. 창의적인 생각과 남들이 해본 적 없는 접근이 훌륭한 컴퓨터 프로그래밍이다.
▶졸업 후 어떤 직종에서 일하나
컴공의 경우, 하드웨어 관련 분야에서 우선적으로 일할 수 있다. 반면 컴사는 대부분 소프트웨어 엔지니어, 소프트웨어 디벨로퍼로 일한다고 알려져 있지만 현실은 조금 다르다.
김선호 박사는 “사실 컴퓨터 프로그래머의 삶은 단조롭기 이를데 없다”며 “하지만 컴사 전공자가 프로그래머만 되는 것이 절대 아니라는 것을 강조하고 싶다”고 말했다.
컴퓨터를 이용해서 세상의 모든 해결책을 찾아내야 하는 직업이기에 단순한 프로그래머가 아니고 솔루션디벨로퍼다. 한마디로 컴퓨터를 이용하는 업종에서는 어디서나 필요하다. 그곳에서 각자의 프로젝트를 수행한다. 그러므로 특정한 분야를 한정 지어서는 안된다.
▶소프트웨어 엔지니어의 일상
하루 종일 코딩하고 디버깅하고 트렌드 공부하는 것이 일반적인 소프트웨어 엔지니어의 일상이지만 현장 경험이 많은 사무엘 김 박사(IF연구소장)에 의하면, 소프트웨어 엔지니어도 많은 시간을 회의에 참석한다. 다른 엔지니어와의 회의나 상사인 총괄 매니저와의 회의도 있다.
또한 고객과의 회의도 가능하다. 이렇게 다양한 종류의 회의에 참석하다보면, 하루 종일 실제로 코딩은 하나도 못하는 날도 생긴다. 하지만 이해 관계자들과 긴밀한 의사소통 없이 좋은 소프트웨어를 만드는 것은 불가능하기 때문에 회의는 소프트웨어 엔지니어의 중요한 일상중의 하나다.
이렇게 회의가 소프트웨어 엔지니어의 중요 일과이기에 의사소통 능력이 매우 중요하다. 자신이 해야할 일을 정확하게 이해하고 주어진 리소스와 시간에 따라 계획을 수립하는 일은 의사소통 능력이 없이는 불가능하다. 컴퓨터 랭귀지 뿐 아니라, 커뮤니케이션 스킬의 중요성이 강조되는 이유이다.
김선호 박사는 “특히 커뮤니케이션 스킬이 탁월한 경우 고위직에 올라가는 경우도 많다”면서 “반면 코딩을 아무리 잘해도 몇몇 천재들 빼고는 자신의 코딩이나 프로젝트를 제대로 설명하지 못하면 실력을 제대로 발휘할 기회를 얻기 어렵다”고 덧붙였다.
▶컴퓨터 전공자 기본 성격
컴퓨터 전공자라면 흔히 떠올리는 이미지가 있다. 어두운 방안에서 밤새도록 컴퓨터 앞에 앉아 어려운 문제를 풀고 있는 사람이다. 물론 이런 이미지는 어느 정도는 컴퓨터 프로그래머 일상의 일부분을 보여주기도 한다.
그러나 훌륭한 프로그래머는 밤새워 문제를 푸는 너드(nerd)의 이미지에서 머무르지 않는다. 소속 회사의 매니지먼트 팀과 세일즈 팀, 고객들과 끊임없는 의사소통을 통해서 주어진 환경 아래서 성과를 최대한 끌어 낼 수 있는 프로그램을 기획할 수 있다.
장병희 기자