대부분의 사람들이 프로그래밍을 배우기 위한 여정은 늦은 밤의 구글 검색 하나로 시작됩니다.
보통은 “______ 배우기” 같은 검색어입니다.
그렇다면 어떻게 그들은 어떤 언어를 검색할지 결정할까요?
“Silicon Valley에서 Java에 대한 농담을 자주 하곤 해요. 이걸 배워야겠네요.”
아니면:
“Haskell. 지금 아주 핫해. Haskell.”
또는:
“그 Go 기니피그는 정말 귀여워요.”
그리고 나머지 사람들에 대해서 이야기해보죠.
우리는 아마 이렇게 검색할 것입니다: “어떤 프로그래밍 언어를 먼저 배워야 할까요?”
이처럼 자주 묻는 질문들은 인포그래픽으로 다뤄지기도 합니다. 그리고 이것이 그 중 하나입니다:
첫 번째 프로그래밍 언어를 결정하는 것은 재미있는 과정이 될 수 있습니다. 마치 “당신은 어떤 Quentin Tarantino 캐릭터인가요?”라는 성격 테스트처럼요.
하지만 아이일때 Play-Doh로 놀아본 경험이 있다고 Ruby를 배우기로 급히 결정하기 전에, 한 가지를 상기시켜드리고 싶습니다: 이건 꽤나 중대한 결정입니다.
첫 번째 프로그래밍 언어에 대해 초보적인 능력을 갖추기 위해서는 수백 시간의 연습이 필요할 것입니다.
따라서 다음과 같은 요소들을 고려해야 합니다:
- 그 언어의 취업 시장
- 그 언어의 장기적인 전망
- 언어의 배우기 쉬움
- 배우는 동안 만들 수 있는 프로젝트(그리고 친구들과 공유하여 동기를 유지할 수 있도록)
매년 새로운 프로그래밍 언어가 등장하고, 그에 따라 새로운 학술 논문과 웹 만화도 생겨납니다.
진지하게, 지난달에 나온 이 멋진 만화를 확인해 보세요:
첫 번째 프로그래밍 언어를 선택하는 데는 선택지가 부족하지 않습니다. 이를 좁히기 위해, 지난 12년 동안 프로그래밍 학습과 관련된 가장 일반적인 구글 검색어들을 살펴보겠습니다:
Java는 여러 차례 부침을 겪었습니다.
Python은 점차 가장 인기 있는 선택으로 자리 잡았습니다.
하지만 그 아래에는 Little Engine That Could이라는 언어가 있으며, 최근 몇 년 동안 인기가 서서히 상승하고 있습니다. 바로 JavaScript입니다.
이들 프로그래밍 언어에 대해 이야기하기 전에, 몇 가지를 명확히 하겠습니다:
- 어떤 언어가 다른 언어보다 객관적으로 더 낫다고 주장하지 않습니다.
- 개발자들은 결국 하나 이상의 언어를 배워야 한다고 동의합니다.
- 그들은 먼저 하나의 언어를 잘 배워야 한다고 주장합니다. 그리고 — 아마도 제 제목의 거꾸로 된 텍스트에서 예상할 수 있듯이 — 그 언어는 JavaScript여야 합니다.
우선 학교에서 현재 프로그래밍이 어떻게 가르쳐지는지 살펴보겠습니다.
컴퓨터 과학 101
대학교는 전통적으로 컴퓨터 과학이라는 범주 아래에서 프로그래밍을 가르쳐 왔으며, 이는 종종 수학의 연장선이나 전기 공학 학위와 연결됩니다.
물론, 여러분이 지금까지 들어봤을지도 모르지만:
“컴퓨터 과학 교육이 누군가를 전문 프로그래머로 만들 수 있는 것만큼, 붓과 안료를 공부한다고 해서 누군가를 전문 화가로 만들 수는 없다.” — Eric S. Raymond
많은 대학들이 여전히 프로그래밍을 컴퓨터 과학처럼 취급하고, 컴퓨터 과학을 수학처럼 다루고 있습니다.
그 결과, 많은 입문 프로그래밍 과정은 C와 같은 저수준 언어 또는 MATLAB과 같은 수학 중심 언어에 초점을 맞추고 있습니다.
그리고 학과장들은 일반적으로 매년 발표되는 프로그래밍 언어 순위표인 TIOBE Index나 이 IEEE의 자료를 참고합니다:
대부분의 리더보드는 10년 전과 거의 동일하게 보입니다.
하지만 변화는 일어납니다. 학계에서도 말이죠.
2014년, Python은 미국 최고의 컴퓨터 과학 프로그램에서 가장 인기 있는 교육 언어로 자리 잡으며 Java를 제치고 1위에 올랐습니다.
그리고 또 다른 변화가 결국에는 일어날 것입니다.
왜냐하면 실제로 노동 시장에서 사용되는 언어들을 살펴보면 아주 다른 그림이 그려지기 때문입니다:
JavaScript는 Stack Overflow의 설문 조사에 응답한 49,397명의 개발자들이 사용하는 언어 중에서 단연 가장 인기 있는 언어입니다.
모든 개발자 중 절반 이상이 JavaScript를 사용합니다. 이는 프론트엔드 웹 개발에 필수적이며, 백엔드 개발에서도 점점 더 중요해지고 있습니다. 그리고 게임 개발 및 사물인터넷(Internet of Things)와 같은 분야로도 빠르게 확장되고 있습니다.
구인 공고에서도 Java 외에 다른 프로그래밍 언어들보다 JavaScript가 언급되는 빈도가 더 높습니다:
세계 최대의 구인 공고 집계 사이트인 [Indeed.com]의 데이터
우리가 오픈 소스 커뮤니티의 커리큘럼을 JavaScript를 중심으로 구성한 것은 우연이 아닙니다. 지난 2년 동안 5,000명 이상의 사람들이 Free Code Camp를 통해 첫 개발자 직업을 얻었습니다.
저는 JavaScript를 가르치기 때문에 그것을 옹호하는 것이 아닙니다. 저는 첫 개발자 직업을 얻는 가장 확실한 길이기 때문에 JavaScript를 가르칩니다.
하지만 JavaScript가 당신에게 적합할까요? 첫 프로그래밍 언어로 삼을 가치가 있을까요? 앞서 언급한 요인들을 살펴보겠습니다.
요인 #1: 구인 시장
만약 당신이 순전히 지적 호기심으로 프로그래밍을 배우고 있다면, 이 요인을 건너뛰어도 좋습니다. 하지만 대다수의 프로그래머들이 그렇듯이 이 기술을 통해 직업을 얻고 싶다면, 이는 중요한 고려 사항입니다.
앞서 언급했듯이, Java는 다른 어떤 프로그래밍 언어보다 더 많은 구인 공고에서 언급되고 있습니다. JavaScript는 그 뒤를 바짝 쫓고 있습니다.
하지만 JavaScript에 관해서는 다음과 같은 점이 있습니다: 비록 20년 이상 존재해왔지만, 최근에야 Netflix, Walmart, PayPal과 같은 기업들이 전체 애플리케이션을 구축하는 데 진지하게 사용하는 도구가 되었습니다.
그 결과, 많은 회사들이 JavaScript 개발자를 채용하고 있지만, 실제로 구인 시장에는 그리 많은 수가 없습니다.
[Indeed.com]의 데이터
Java 포지션 하나에 대해 2.7명의 Java 개발자가 경쟁하고 있습니다. PHP와 iOS 직무에 대한 경쟁도 비슷하게 치열합니다.
하지만 JavaScript 포지션 하나에 대해 0.6명의 JavaScript 개발자만 있습니다. JavaScript 기술을 가진 개발자에게는 매우 유리한 시장입니다.
요인 #2: 장기 전망
평균 JavaScript 프로젝트는 평균 Java, Python, Ruby 프로젝트보다 두 배 더 많은 풀 리퀘스트를 받습니다. 게다가 JavaScript는 다른 인기 언어들보다 더 빠르게 성장하고 있습니다.
GitHub 프로젝트에서 가장 널리 사용되는 프로그래밍 언어들, 이는 전체 언어 인기의 좋은 지표입니다.
JavaScript 생태계는 Google, Microsoft, Facebook, Netflix와 같은 기업의 막대한 자금과 엔지니어링 인재의 투자로 혜택을 보고 있습니다.
예를 들어, TypeScript(정적 타입을 가진 JavaScript의 상위 집합)는 100명 이상의 오픈 소스 기여자를 보유하고 있으며, 그 중 많은 이들이 Microsoft와 Google의 직원입니다.
이런 유형의 기업 간 협력은 Java에서는 찾기 어렵습니다. Oracle은 Sun Microsystems를 인수함으로써 사실상 Java를 소유하고 있으며, 이를 확장하려는 기업들을 종종 고소합니다.
요인 #3: 학습 난이도
이것은 [XKCD 만화]의 패러디입니다.
대부분의 프로그래머들은 고급 스크립트 언어가 상대적으로 배우기 쉽다는 데 동의할 것입니다. JavaScript는 Python, Ruby와 함께 이 범주에 속합니다.
비록 대학들이 여전히 Java와 C++와 같은 언어를 첫 번째 언어로 가르치고 있지만, 이들은 상당히 배우기 어렵습니다.
요인 #4: 당신이 만들 수 있는 프로젝트
여기서 JavaScript는 정말 빛을 발합니다. JavaScript는 브라우저가 있는 모든 장치에서 실행되며, 바로 브라우저 내에서 작동합니다. JavaScript로는 기본적으로 무엇이든 만들 수 있으며, 이를 어디에서나 공유할 수 있습니다.
JavaScript의 보편성 덕분에 Stack Overflow의 공동 창립자인 Jeff Atwood는 이제는 유명한 법칙을 만들었습니다:
“JavaScript로 작성할 수 있는 모든 애플리케이션은 결국 JavaScript로 작성될 것이다.”
그리고 매달 지나갈수록, Atwood의 법칙은 여전히 강력합니다.
Java도 한때 어디서나 실행될 것이라고 약속했습니다. 아마도 Java Applet를 기억하실 것입니다. Oracle은 올해 초 이들을 공식적으로 폐기했습니다.
Python도 비슷한 문제를 겪고 있습니다:
“내가 만든 이 게임을 친구에게 어떻게 줄 수 있을까? 더 나아가, 이를 내 휴대폰에 올려서 아이들에게 설치하지 않고도 보여줄 수 있는 방법이 있을까? 음.” — James Hague의 Python을 교수 언어로 퇴직하며
대조적으로, 우리 오픈 소스 커뮤니티의 멤버들이 CodePen에서 브라우저로 만든 몇 가지 애플리케이션을 소개합니다. 여러분은 클릭하여 브라우저에서 바로 사용할 수 있습니다:
스타워즈 테마의 위키백과 검색
하나의 언어를 잘 배우고, 그 다음 두 번째 언어를 배워라.
언어를 계속 바꾸기만 하면, 멀리 가지 못합니다.
기본을 넘어가기 위해서는 첫 번째 언어를 잘 배워야 합니다. 그 다음 두 번째 언어는 훨씬 더 쉬워질 것입니다.
그 이후에는 다양한 언어를 배우며 더 다재다능한 개발자가 될 수 있습니다:
- C는 메모리 관리 측면에서 컴퓨터가 실제로 어떻게 작동하는지를 배우기에 훌륭하며, 고성능 컴퓨팅에서 유용합니다.
- C++는 게임 개발에 적합합니다.
- Python은 과학과 통계에 훌륭합니다.
- Java는 대형 기술 회사에서 일하고 싶다면 중요합니다.
하지만 먼저 JavaScript를 배우세요.
좋습니다, 이제 불가능한 것을 시도해 보겠습니다 — 댓글 섹션에서의 반대 의견을 예상해 보겠습니다.
반대 #1: 하지만 JavaScript는 느리지 않나요?
JavaScript는 — 대부분의 실제 용도로 — 고성능 언어만큼 빠릅니다.
JavaScript (Node.js)는 Python, Ruby 및 PHP보다 몇 배 더 빠릅니다.
또한 C++, Java 및 Go와 같은 고성능 언어와 거의 비슷한 속도를 자랑합니다.
여기 가장 포괄적인 최근의 다국어 벤치마크 결과가 있습니다:
반대 #2: 하지만 JavaScript는 정적으로 타입되지 않잖아요
Python과 Ruby처럼, JavaScript는 동적으로 타입되고, 이는 편리합니다. 그러나 문제에 빠질 수 있습니다. 여기서 exampleArray
는 배열로 의도했습니다. 값을 설정한 다음, 그 길이 — 즉, 포함된 요소의 수를 확인합니다.
exampleArray = [1, 2]
-> [1, 2]
exampleArray.length
-> 2
하지만 그 후 실수로 문자열로 할당했습니다.
exampleArray = “text”
-> “text”
exampleArray.length
-> 4
이러한 종류의 오류는 동적으로 타입된 언어에서 자주 발생합니다. 대부분의 개발자는 이러한 오류를 방지하기 위해 체크를 두고, 그에 따라 테스트를 작성합니다.
첫 프로그래밍 언어에서 정적 타이핑이 반드시 필요하다면, 여전히 JavaScript를 먼저 배우는 것을 추천합니다. 그 후 TypeScript를 빠르게 익힐 수 있습니다.
“TypeScript는 학습 곡선이 있지만, 이미 JavaScript를 알고 있다면 매끄러운 과정이 될 것입니다.” — Alex Ewerlöf의 TypeScript에 대한 의견
반대 #3: 하지만 나는 정말로 모바일 앱을 만들고 싶어요
여전히 JavaScript를 먼저 배우는 것을 추천합니다.
- JavaScript는 Angular Cordova와 React Native와 같은 네이티브 모바일 앱을 만들기 위한 여러 도구를 제공합니다.
- 모바일 앱이 실제로 흥미로운 작업을 수행하려면 적절한 백엔드가 필요하며, 이를 위해 Node.js + Express.js와 같은 적절한 웹 개발 프레임워크를 사용해 구축하는 것이 좋습니다.
또한 모바일 앱 개발의 가장 좋은 시기가 이미 지나갔을 가능성도 있다는 점을 지적할 가치가 있습니다.
우선, 사람들이 모바일 앱을 많이 사용하지만, 개발자 직종의 거의 절반은 웹 개발입니다. 모바일 앱 개발과 관련된 직업은 겨우 8%에 불과합니다.
2023년 Stack Overflow 설문조사에 따르면 직종별 개발자 수. 이 질문은 설문조사에 응답한 개발자 76,872명의 응답을 바탕으로 하므로 상당히 대표적입니다.
“그에 대한 앱이 있다”는 대비전은 실현되지 않았습니다. 대신, 대부분의 스마트폰 소유자는 새로운 앱 다운로드를 중단했습니다.
물론 여전히 앱을 사용하고 있습니다. 주로 Facebook, Google Maps 및 몇몇 다른 앱들입니다. 이처럼 모바일 앱 개발자에 대한 수요는 몇몇 대규모 고용주에 집중되어 있습니다.
모바일 개발 직종의 전망은 예측하기 어렵습니다. 모바일 앱의 개발, 유지 관리 및 배포의 많은 측면이 JavaScript로 더 쉽게 이루어집니다. 그래서 Facebook과 Google과 같은 기업은 JavaScript를 사용하여 이러한 도구를 만들기 위해 막대한 투자를 하고 있습니다.
사실 모든 개발은 웹 개발입니다. 모든 것은 “웹”이라는 큰 플랫폼과 연결되어 있습니다. 그리고 집 주변에서 대화할 수 있는 다음 세대의 기기와, 학교에서 아이들을 픽업하는 자동차들도 모두 웹을 통해 연결될 것입니다.
그리고 그 연결은 JavaScript를 의미합니다.
반론 #4: JavaScript는 10일 만에 작성된 장난감 언어 아닌가요?
JavaScript는 독특한 역사를 가지고 있습니다.
사람들이 그것에 대해 농담을 하는 것을 듣게 될 것입니다.
사람들은 C++에 대해서도 싫어하는 경향이 있습니다. 그러나 JavaScript처럼 C++도 이러한 싫어함에도 불구하고 성공을 거두었고, 지금은 거의 모든 곳에서 사용되고 있습니다.
그러니 만약 누군가 JavaScript를 배우는 대신 ‘엘리트 언어’를 선택하지 않았다고 비난한다면, C++를 만든 사람의 유명한 말을 기억하세요:
“프로그래밍 언어는 두 가지 종류밖에 없다: 사람들이 항상 불평하는 언어와 아무도 사용하지 않는 언어.” — Bjarne Stroustrup
저는 프로그래밍과 기술에 대해서만 씁니다. 만약 당신이 내 트위터를 팔로우한다면 당신의 시간을 낭비하지 않을 것입니다. ?
이 기사의 내용은 원본 기사에서 번역되었습니다.