비전공 개발자도 반드시 알아야 할 컴퓨터공학 전공 커리큘럼 TOP 5
과거 일부 IT 산업에 국한됐던 개발자 수요는 제조업, 교육, 의료, 식품 등을 포함한 전체 산업으로 확산하는 추세입니다. 디지털 전환으로 인해 사업 구조를 개편하면서 관련 시스템을 구축하고, 관리 보수할 개발자 필요성이 증가했기 때문이죠. 개발자 수요가 급증하면서 취업 시장에는 비전공 개발자가 증가했는데요.
전공자와 비전공자를 나누는 것이 편견으로 이어질 수도 있지만, 학부에서 열심히 공부한 내용을 관련 없는 지식으로 취급하는 역차별은 더욱 위험합니다. 따라서 기업의 채용 담당자나 의사결정자는 전공자와 비전공자가 어디서, 어떻게 차이를 보이는지 구체적으로 이해할 필요가 있습니다.
컴퓨터공학을 전공한 개발자와 비전공자 사이에는 어떤 차이가 있을까요? 비전공 개발자 현황에 대해 알아보고, 컴퓨터공학 전공자가 배우는 커리큘럼을 하나씩 소개해 드릴게요.
1. 비전공 개발자 현황
1) IT 개발자 수요 및 비전공 개발자 증가
출처: 연합뉴스
몇 년 전부터 개발자 붐이 불면서 컴퓨터공학 등을 전공하지 않았지만, IT 개발 분야 취직이나 다른 직무에서 일하다가 개발자로 이직을 희망하는 사례가 증가하고 있습니다. 실제로 커리어 매칭 플랫폼 사람인이 분석한 지난해 상반기 인재풀 데이터 분석에 따르면 가장 이직 제안을 많이 받는 직무는 IT 개발·데이터(17.3%)였다고 합니다.
개발자로 취업을 희망하는 사람들이 늘면서 코딩 교육 시장 역시 급속도로 성장하고 있습니다. 성인에게 코딩 교육을 제공하는 업체는 특히 비전공자를 대상으로 입문용 교육 및 취업 연계 프로그램을 제공하는데요. 한 코딩 교육 스타트업 전체 수강생 중 비전공자 비중은 77.4%에 달한다고 합니다.
2) 비전공 개발자 현황
출처: pixabay
개발자 수요가 증가하면서 업계에서는 실력 있는 개발자 확보를 위한 경쟁이 치열해지고 있는데요. 코딩 교육 업체는 비전공자도 일정 시간의 교육 과정을 수료하면 개발자로 취업하기 어렵지 않을 것이라고 홍보하지만, 기업은 경력 많은 개발자를 선호합니다. 최근 몇 년간 경기 불황으로 구조조정과 인력 재배치 등으로 인해 실무에 바로 투입할 수 있는 경력자가 필요하기 때문입니다.
특히 비전공자는 전공자보다 컴퓨터공학 기초지식이 부족해 개발 실무에 전반적인 이해도가 낮을 수 있습니다. 비전공자라면 전공자보다 늦게 도전하는 만큼 컴퓨터공학 전공과목을 더 열심히 공부해야 합니다. 또한 신입 개발자라면 실무에 빠르게 적응할 수 있는 역량을 갖추는 것이 중요합니다.
개발자 채용을 계획 중인 기업 대표님이나 실무자라면 채용하려는 개발자가 컴퓨터공학 기초지식을 충분히 갖추고 있는지 확인해야 합니다.
2. 컴퓨터공학 전공 커리큘럼
출처: 한국공학대학교
컴퓨터공학 전공과목 중 개발에 필요한 가장 기본적인 과목은 운영체제, 수치 해석, 임베디드 시스템, 분산 컴퓨팅, 네트워크 프로토콜 등입니다.
1) 운영체제(OS: Operating System)
출처: Tutorials Point
운영체제는 컴퓨터 시스템의 핵심 소프트웨어로 하드웨어와 응용 프로그램 사이 상호작용을 관리하고 제어하는 역할을 합니다.
개발자라면 컴퓨터에서 운영체제가 어떻게 작동하는지 이해해야 해당 운영체제에서 안정적으로 실행될 수 있는 프로그램을 개발할 수 있습니다. 특히 코드를 작성하다가 오류 메시지가 떴을 때 운영체제를 이해하고 있다면 문제를 비교적 쉽게 진단하고 해결할 수 있습니다.
2) 수치 해석(Numerical Analysis)
컴퓨터공학에서 배우는 수치 해석은 컴퓨터를 사용해 과학적, 공학적으로 문제를 해결하는 원리와 방법을 이해하고, 논리적인 추론을 통해 문제를 풀어나가는 방법을 배우는 과목인데요. 각종 공학 문제에 많이 응용되는 선형 및 비선형 방정식 해법과 함수의 극대화 및 극소화, 데이터 모델링, 미분방정식 해법 등을 배웁니다.
수치 해석은 중소 규모 서비스 개발 과정에서는 드물게 요구되지만, 대규모 서비스에서는 컴퓨터가 특정 수치를 얼마나 근사(approximate)할 수 있는지, 그리고 컴퓨터가 숫자를 어떻게 인식하는지 이해하지 못하면 성능 문제를 야기할 수 있습니다.
개발자가 일정 수준의 수학 지식을 갖추고 수치 해석학을 공부했다면 위 상황에서 비교적 쉽게 적응할 수 있습니다.
3) 임베디드 시스템(Embedded System)
출처: RS Designs Park
임베디드 시스템이란 시스템 내부에 탑재된 컴퓨터를 뜻하는 것으로, 시스템을 동작시키는 소프트웨어를 하드웨어에 내장해 특수한 기능을 수행하는 컴퓨터 시스템을 말합니다. 우리가 평소에 사용하는 가전제품은 물론, 통신기기, 로봇, 자동차, 비행기 등 대부분에 임베디드 시스템이 적용됐다고 이해하면 됩니다.
임베디드 시스템은 하드웨어 제어가 주목적이므로 하드웨어에 대한 지식도 필요한데요. 개발자가 임베디드 시스템을 이해하고 있으면 IT를 포함한 다양한 산업에서 개발자로 전문성을 인정받을 수 있습니다.
4) 분산 컴퓨팅(Distributed Computing)
출처: TechTarget
분산 컴퓨팅은 인터넷 또는 클라우드 기반 네트워크를 통해 연결된 여러 컴퓨터의 리소스를 활용해 작업을 분담하고 자원을 공유하는 모델을 뜻합니다. 분산 컴퓨팅은 필요에 따라 더 많은 컴퓨터를 연결할 수 있고, 한 대의 컴퓨터에 장애가 생기더라도 분산 컴퓨팅 시스템은 정상적으로 작동할 수 있으며, 데이터 일관성과 정보 처리 효율성 등의 장점을 가지고 있습니다.
개발자는 분산 컴퓨팅 기술을 통해 클라우드 서비스 기반의 응용 프로그램을 설계하고, 이를 효율적으로 운영하는 시스템을 개발할 수 있습니다.
5) 네트워크 프로토콜(Network Protocol)
출처: Geeksforgeeks
네트워크 프로토콜이란 컴퓨터나 네트워크 장치가 서로 통신하기 위해 따라야 하는 규칙으로, 대표적으로 TCP/IP(Transmission Control Protocol/Internet Protocol)를 예시로 들 수 있습니다.
TCP란 전송 제어 프로토콜을 뜻하는 것으로, 두 장치 간 데이터 전송 과정에서 패킷의 순서를 보장하고 데이터가 손실되지 않도록 관리하는 역할을 합니다. IP는 각 장치에 고유의 IP 주소를 할당해 데이터가 올바른 목적지에 도달할 수 있도록 경로를 지정합니다. 그 외에도 HTTP(HyperText Transfer Protocol), HTTPS(HTTP Secure), FTP(File Transfer Protocol), SMTP(Simple Mail Transfer Protocol) 등 다양한 프로토콜이 있습니다.
백엔드 개발자라면 네트워크 프로토콜을 이해해야 프로그램 운영에 필요한 데이터 전송과 통신 내부 동작 이해를 바탕으로 효율적인 시스템을 구축할 수 있습니다.
개발자 출신이 아닌 기업 대표님이나 실무 담당자가 우리 기업에 필요한 서비스를 구축할 수 있는 개발자를 찾는 것은 쉽지 않습니다. 검증된 실력의 개발자인지도 알기 쉽지 않죠. 그렇다고 외주 개발 업체에 일임하려니 우리 기업이 원하는 바를 잘 이해하고, 내부 직원이 설계한 것처럼 딱 들어 맞는 제품을 만들 수 있을지도 걱정됩니다.
👉 다빈치는 베인앤드컴퍼니, 우아한형제들(배달의민족), 삼성 출신 각 분야 전문가로 구성된 IT 컨설팅 회사입니다.
👉 다빈치는 고객의 상황과 니즈를 이해하기 위해 많은 시간을 쏟으며, 고객의 가이드를 기다리지 않습니다.
👉 다빈치는 고객사의 전략과 운영 전반에 기여하는 IT 제품을 제공하는 것을 목표로 하며, 고객이 보지 못하는 부분까지 고민해 소통합니다.
다빈치 팀의 성과가 궁금하다면 편하게 문의해 주세요!