모니터 앞에 앉아 "오늘은 어떤 프로그래밍 언어를 배워야 할까?"라고 고민해 본 적이 있다면, 이 글이 그 답을 찾는 데 도움을 드릴 것입니다.
선택할 수 있는 프로그래밍 언어가 너무나 많다 보니, 어떤 언어에 시간을 투자할 가치가 있는지 파악하는 일 자체가 벅차게 느껴질 수 있습니다. 짧게 답하자면 '전부'입니다. 각 언어마다 저마다의 용도와 가치가 있기 때문입니다. 하지만 무한한 시간을 가진 사람은 없으므로, 상대적으로 인기 있는 언어부터 배우는 것이 현명한 선택입니다.
새로운 프로그래밍 언어는 끊임없이 등장하지만, 시간이 지나도 사라지지 않고 검증된 언어들은 소수에 불과합니다. 이러한 언어들이야말로 수요가 높고 안정적이며, 취업 기회로 이어질 가능성이 큰 언어들입니다.
앞서 말했듯이 여러 프로그래밍 언어를 익히는 것은 분명 유익합니다. 특히 프로그래머나 시니어 개발자에게는 커리어 도구 상자에 더 많은 무기를 장착하는 셈이기 때문입니다.
이 목록에 소개된 언어 중 몇 개라도, 혹은 전부를 익혀두면 개발·프로그래밍 분야의 고연봉 직종에서 원하는 핵심 역량을 갖추게 될 것입니다.
어떤 프로그래밍 언어를 배워야 할까?
프로그래밍과 개발 분야에 입문하고자 하는 모든 이에게 초석이 되는, 가장 인기 있는 프로그래밍 언어 8가지(그리고 몇 가지 주목할 만한 언어들)를 정리했습니다.
1. Java(자바)
Java는 아마도 전 세계에서 가장 유명한 프로그래밍 언어일 것입니다. 서버 사이드 애플리케이션부터 모바일 앱, 비디오 게임까지, 크로스 플랫폼 환경에서 구동될 수 있는 소프트웨어 개발을 위해 탄생했습니다.
특히 Android 앱 개발의 기반이 되는 언어이므로, 안드로이드 앱 개발에 관심이 있다면 반드시 익혀야 합니다. 소프트웨어 엔지니어를 꿈꾸는 사람이라면 이 언어를 필수 스킬로 삼는 것이 좋습니다.
또한 '한 번 작성하면 어디서든 실행된다(write once, run anywhere)'는 장점 덕분에 웹 및 데스크톱 앱 개발에도 널리 활용됩니다. 학습 난이도가 비교적 쉬운 편이며, 전 세계 고용주들이 찾는 핵심 스킬이기도 합니다.
Java 배울 곳
Java를 배우고 싶다면 무료 학습 자료가 풍부합니다. 가장 인기 있는 강좌는 단연 Udemy의 'The Complete Java Masterclass'입니다. 초보자부터 숙련된 Java 개발자까지 모두에게 적합한, 가장 완성도 높은 강의 중 하나로 평가받습니다.
2. Python(파이썬)
가장 배우기 쉬운 프로그래밍 언어로 꼽히는 Python은 웹 애플리케이션 설계 분야에서 최고의 평가를 받고 있습니다. Pinterest와 Instagram 같은 유명 서비스들이 Python으로 만들어졌습니다.
Python은 오늘날 가장 수요가 많은 언어 중 하나로, 커리어 방향과 무관하게 2020년에 배우면 가장 좋은 언어로 손꼽힙니다. 이미 대학과 학계에서 가르치는 프로그래밍 언어 1위 자리를 Java에서 가져왔습니다.
Python은 다양한 시스템과 플랫폼을 지원하고, 개발자 생산성 향상에 도움을 주며, 객체 지향 프로그래밍(OOP) 기반으로 설계되었습니다. 머신러닝, 인공지능, 데이터 사이언스 분야에 관심이 있다면 연봉 중앙값이 약 11만 2천 달러(약 1억 3천만 원)에 달하는 매력적인 선택지입니다.
Python 배울 곳
Python 입문을 원한다면 공식 사이트인 Python.org가 좋은 출발점입니다. 조금의 비용을 감수할 수 있다면 초보자용 강좌인 'Python Fundamentals'도 훌륭한 선택입니다.
3. C/C++
대학에 다녔거나 고등학교에서 컴퓨터 과학 수업을 들었다면, 대부분 처음 접하는 프로그래밍 언어일 것입니다. C와 C++는 대표적인 에버그린(evergreen) 언어로 불립니다. 다만 이 언어들을 실제 취업에 활용하려면 학교에서 배운 수준만으로는 부족하다는 점을 명심해야 합니다.
인터넷에는 초급부터 중급까지 다양한 무료 C++ 강좌가 넘쳐납니다. 프로그래밍 세계에 막 발을 들였거나, 이 분야를 진로로 삼을지 확신이 서지 않는다면 C와 C++부터 시작하는 것이 좋은 방법입니다.
C를 배우다 보면 알게 되겠지만, 이 배우기 쉬운 언어는 사실 Java, Python 같은 더 고수준 언어들의 기반이 됩니다. 따라서 C를 먼저 익히면 이후 수요 많은 언어들을 훨씬 수월하게 습득할 수 있습니다.
C/C++ 배울 곳
Udemy에는 C/C++ 입문에 좋은 강좌가 많습니다. 무료 강좌인 'C++ Tutorial for Complete Beginners'나 'C++ Programming Basics'를 추천합니다.
4. C#(씨샵)
C 계열의 또 다른 언어인 C#은 Microsoft 앱 개발에 가장 적합한 언어 중 하나입니다. PC와 웹을 아우르는 GUI(그래픽 사용자 인터페이스) 개발에 관심이 있다면 반드시 익혀야 할 언어입니다.
C#은 Java와 문법이 비슷하기 때문에 Java를 미리 알고 있다면 학습에 큰 도움이 됩니다. C#은 .NET 프레임워크의 근간이 되며, PC와 콘솔 게임 개발에서도 폭넓게 활용됩니다.
오늘날 C#의 핵심 활용 분야는 Unity 엔진을 활용한 게임 개발입니다. 직접 게임을 만들어보고 싶다면 Unity가 나쁘지 않은 시작점입니다. 무료이고 다소 제한적이긴 하지만 전반적으로 사용법이 간단합니다. C#은 예전만큼 인기나 연봉 면에서 두각을 나타내지는 않지만, 필요할 때를 대비해 스킬 목록에 추가해 두면 손해 볼 일은 없습니다.
C# 배울 곳
C#을 배우려는 목적이 Unity 게임 개발이라면 Udemy의 'Complete C# Unity Developer 2D: Learn to Code Making Games'가 탁월한 선택입니다. 그 외 C#과 Unity 활용법을 배우고 싶다면 Coursera의 'Introduction to C# Programming and Unity'를 수강해 보세요.
5. JavaScript(자바스크립트)
언제나 쓸모 있는 언어를 배우고 싶다면 JavaScript가 정답입니다. JavaScript는 배우기 비교적 쉽고, 다양한 애플리케이션에서 다른 언어와 매끄럽게 연동되며, 클라이언트 측 브라우저(NodeJS를 활용하면 서버 측도 가능)에서 빠르게 실행되고, 인터넷 어디에서나 찾아볼 수 있습니다.
웹·모바일 개발, 게임 개발, 데스크톱 앱 개발까지, JavaScript는 끊임없이 발전하며 없어서는 안 될 필수 언어로 자리 잡았습니다.
JavaScript의 상위 집합(superset)인 TypeScript는 2019년 가장 사랑받는 언어 중 하나로 선정되었습니다. Facebook 역시 지난해 초 Jest(JavaScript 테스트 도구)를 Flow에서 TypeScript로 마이그레이션하며 그 가치를 인정했습니다.
JavaScript 배울 곳
JavaScript는 지난 10년간 시장에서 가장 수요가 많은 언어 중 하나였으므로, 배우기에 더없이 좋은 시기가 바로 지금입니다.
입문 경로로는 Udemy의 'The Complete JavaScript Course 2020: Build Real Projects!'를 추천합니다. 코드를 조금씩 나눠 배우고 싶다면 Codecademy의 다양한 JavaScript 강좌도 훌륭한 선택입니다.
6. PHP
인터넷을 지배하는 또 다른 언어가 바로 PHP입니다. 주로 데이터가 많은 동적 웹사이트와 앱 개발에 활용되며, WordPress와 Facebook 같은 거대 서비스가 PHP의 대표적인 성공 사례입니다.
PHP는 오랜 역사를 지닌 필수 언어로 여겨집니다. 오픈소스 언어이지만, 같은 계열 언어에 비해 웹 개발 속도가 느린 편이라는 평가도 받습니다.
오픈소스라는 특성 때문에 보안성이 다소 떨어질 수 있지만, 그만큼 방대한 오픈소스 커뮤니티가 이를 뒷받침합니다. PHP는 학습에 드는 시간이 적고, 웹 애플리케이션, 콘텐츠 관리 시스템(CMS), 전자상거래 애플리케이션 분야의 취업 기회(비록 줄어들고 있지만)에 도움이 됩니다.
PHP 배울 곳
PHP에 관심 있는 웹 개발자라면 Coursera의 'Building Web Applications in PHP' 강좌에서 유용한 지식을 얻을 수 있습니다. 전자상거래 사이트 제작에 도전하고 싶다면 Udemy의 'Learn E-Commerce Website in PHP & MySQL From Scratch'를 확인해 보세요.
7. Swift(스위프트)
Swift는 iOS 앱을 위해 특별히 설계된 언어입니다. Apple은 2010년 iOS 개발자들에게 Objective-C만을 강요하고 싶지 않았기에 Swift라는 대안을 내놓았습니다. Cocoa Touch 라이브러리를 사용하는 개발자라면 여전히 Objective-C를 사용할 수도 있습니다. 두 언어가 사용하는 프레임워크는 동일하기 때문입니다.
Swift는 실시간 출력 기능을 통해 코드 수정이나 디버깅 변경 사항에 즉각적으로 반응합니다. 자동화된 디버깅 시스템은 Swift의 핵심 요소 중 하나로, Python과 유사한 스크립팅 시스템 특유의 높은 상호작용성을 제공합니다.
Objective-C 대비 Swift의 장점은 코드량이 약 4분의 1로 줄어든다는 점, 학습 난이도가 훨씬 낮다는 점, 그리고 더 나은 품질의 앱을 만들어낼 가능성 덕분에 개발자 커뮤니티 성장 잠재력이 크다는 점입니다. iOS 앱 개발에 입문하고 싶거나, 앞으로 가장 수익성 높은 언어가 될지도 모르는 스킬로 커리어를 쌓고 싶다면 Swift를 배우는 것이 좋습니다.
Swift 배울 곳
이 목록의 대부분처럼 Udemy가 훌륭한 학습 자료원입니다. 'iOS 11 & Swift 4 – The Complete iOS App Development Bootcamp' 강좌로 초보에서 프로로 성장하는 길을 걸어보세요.
가볍게 맛만 보고 싶다면 DZone.com의 튜토리얼이 몇 가지 기본기를 알려줄 것입니다. iOS 11의 기본기를 제대로 익히고 싶다면 pluralsight.com의 강좌로 시작해 보세요.
8. SQL & NoSQL
SQL은 오랜 역사를 지닌 언어로, 애플리케이션의 백엔드 데이터베이스를 담당합니다. 독립적인 언어로서 SQL은 크게 와닿지 않을 수 있지만, 소프트웨어 개발자라면 어떤 언어를 선택하든 데이터베이스와 SQL은 필수 지식입니다.
데이터 조회, 가용성, 일관성 측면에서 SQL은 훌륭한 성능을 발휘합니다. 데이터베이스 내 여러 테이블에서 데이터를 추출해야 할 때도 SQL은 신속하게 결과를 전달합니다. 이 언어 전체가 대량의 테이블 행 처리와 데이터베이스 전반의 신속한 검색에 최적화되어 있습니다.
강력한 SQL에도 단점은 존재합니다. 객체를 데이터베이스 테이블로 변환하기 까다롭고, 단일 서버 가용성에 의존하며, ORM처럼 자동 생성 기능이 없어 모든 쿼리를 직접 작성해야 한다는 점입니다. 물론 손으로 직접 작성한 SQL이 ORM보다 더 탄탄하고 고성능인 경우가 많다는 점은 감안할 필요가 있습니다. 데이터 사이언스 분야에 관심이 있다면 SQL을 반드시 익히세요.
NoSQL은 저렴한 하드웨어에서도 뛰어난 성능을 보이고, 다른 데이터베이스 대비 뛰어난 탄력성과 확장성을 제공하며, 데이터베이스 모델 구조화가 불필요하다는 장점으로 인기를 얻고 있습니다. 데이터 사이언스 분야에서 SQL을 추월할 잠재력이 있지만, 아직 그렇다고 단언할 근거는 없습니다. 비교적 새로운 언어라 커뮤니티 지원(빠르게 확대되는 중)과 표준화된 플랫폼이 부족한 편입니다.
SQL과 NoSQL을 비교하면, 구조화된 데이터, 통합 지원 체계, 스키마를 갖춘 SQL이 기업 환경에 더 적합하고, NoSQL은 신속한 애플리케이션 개발에 더 잘 맞는다고 할 수 있습니다.
SQL/NoSQL 배울 곳
SQL은 Codecademy의 강좌로 입문할 수 있습니다. NoSQL에 관심이 있다면 edx.org의 'Introduction to NoSQL Data Solutions'와 'Amazon DynamoDB: Building NoSQL Database-Driven Applications' 강좌에서 많은 것을 배울 수 있습니다.
그 외 주목할 만한 프로그래밍 언어
목록을 살펴보며 '이 언어는 왜 없지?'라고 생각한 분들이 있을 겁니다. 대표적으로 Ruby와 그 프레임워크인 Ruby on Rails(RoR)입니다. Ruby는 수많은 웹 앱에서 사용되고 여전히 꾸준한 수요가 있는 언어입니다. Shopify, Airbnb, Fiverr, GitHub, Bloomberg 등이 Ruby를 활용한 사례입니다. 하지만 여전히 많은 기업이 사용하고 있음에도 불구하고, 지난 몇 년간 그 인기가 크게 식었기에 '필수 학습' 언어로는 추천하기 어렵습니다.
R, Rust, Kotlin, Golang 같은 상대적으로 덜 알려진 언어들은 아직 배울 가치가 있을 만큼 대중화되지 않았습니다. 다만 안드로이드 앱 개발에 진지하게 관심이 있다면 Kotlin은 익혀둘 만합니다. 다음 주류 언어로 떠오르고 있다는 평가가 이어지고 있기 때문입니다.
Golang(Go라고도 함)은 학습 난이도가 상당히 높지만, 프레임워크 개발에 관심이 있다면 배울 가치가 충분합니다. Go와 마찬가지로 Rust 역시 배우기 어려운 언어지만, 그만큼 큰 보람을 느낄 수 있습니다.
Rust는 다른 프로그래밍 언어와 연동할 수 있는 라이브러리를 만드는 능력을 갖추고 있습니다. 관심이 있다면 'Rust for Undergrads'로 첫걸음을 내딛어 보세요.