플러닝 Flearning

2016년 초보자가 꼭 배워야 할 프로그래밍 언어 분석 (1) 본문

프로그래밍과 진로/프로그래밍 언어와 공부법

2016년 초보자가 꼭 배워야 할 프로그래밍 언어 분석 (1)

플러닝 2016.08.05 17:53

2016년 초보자가 꼭 배워야 할 프로그래밍 언어 분석 (1)





이 글은 한글 번역본입니다.

(출처: https://www.codementor.io/learn-programming/beginner-programming-language-job-salary-community)











최근에 STEM (Science, Technology, Engineering, Mathematics) 자질을 갖춘 사람들을 많이 필요로 하는 추세이며


또, 이런 사람들이 월급도 더 많이 받을 수 있다는 것이 사실인데요,


소프트웨어 일을 모집하는 미국 온라인 채용 공고는 


2007년부터 2012년 사이에 무려 31%나 증가했다고 합니다.


전체 일자리 공고에 비하면 3배나 빠른 속도로 많아지고 있습니다.


미국 노동부에서는 소프트웨어 개발자 직업은 2012년에서 2022년 사이에


22% 정도 늘어날 것으로 예상하고 있습니다.


2014년 5월에는 소프트웨어 앱 개발자들의 급여의 중간값은 $95,510라고 합니다.



코딩하는 방법을 배우고 싶어도 너무나 많은 프로그래밍 언어가 존재하기 때문에


혼란스러울 수도 있는데요, 어떤 것을 선택해야 할까요?


이 글에서는 각각의 프로그래밍 언어의 수입, 대중성, 그리고 전망에 대해서 


자세하게 분석해보도록 하겠습니다!







프로그래밍 언어들을 서로 비교하기 전에, 먼저 어떤 언어들이 있는지 알아보겠습니다.




동적 언어 (Dynamic Languages)



동적 언어는 융통성있고 흥미로운 점 때문에 모든 초보자들이 배우기에 더 쉬운 언어로 여겨집니다.


적은 코드를 써서 빠르게 앱을 만들 수 있으며,


자신이 원하는 대로 작성하고 싶을 때 그다지 어려운 규칙이 따르지 않습니다.


동적 언어는 고급 레벨 언어인 만큼, 


세부적인 것을 알아가기 보단 프로그래밍 개념을 이해하는데 더 많은 시간을 쓸 수 있습니다.


그래서 초보자들도 쉽게 만들고 빠르게 결과를 확인 할 수 있습니다.


이는 동적 언어가 초보자들에게 더 인기 있는 이유 중 하나입니다.













JavaScript



Java와는 다른 언어로, JavaScript는 프론트엔드 개발에 주로 사용되는 클라이언트 사이드 스크립팅 언어입니다.


JavaScript는 모든 브라우저에 호환이 되며,  jQuery와 같은 라이브러리나 


AngularJS, Ember.js, React와 같은 프론트엔드 프레임워크를 통해 대화식 앱을 만드는 데에 사용됩니다.



JavaScript는 Node.js 플랫폼을 통해 현재 서버 사이드 언어로 사용될 수 있습니다.


Node.js는 상대적으로 최신에 나온 것으로 현재 입지가 확고해지고 있습니다.


JavaScript를 이용해서 phonegap과 같은 프레임워크를 통해 하이브리드 모바일 앱을 만들 수도 있습니다.


페이스북은 React Native 통해서 JavaScript를 통해서 앱을 만들 수 있도록 하는 것을 목표로 두고 있습니다.



하지만 JavaScript는 형식화 되어있지 않아서 디버그 하기 힘든 점 때문에 어려운 언어라고 알려져 있습니다. 


정적 타이핑 버젼인 마이크로소프트의 TypeScript나 JSX도 있습니다.













Ruby


재미뿐만 아니라 동시에 생산성을 위해 개발된 언어로,


루비는 풀 스택 웹 프레임워크인 루비온레일즈 플랫폼 덕분에 인기를 얻었습니다.


루비는 영어처럼 읽을 수 있고 일반적인 개발 작업을 더 쉽게 만들어 주기 때문에


많은 사람들이 처음 배우는 프로그래밍 언어로 루비를 추천합니다.



루비는 백엔드 개발에 주로 사용되며,


Airbnb, Shopify, Bloomberg, Hulu, Slideshare, 등 많은 인기있는 사이트들이


루비온레일즈를 이용해서 만들어졌습니다.













Python



파이썬도 초보자들에게 가장 많이 추천되는 언어인데요,


미국 상위 대학교들에서는 가장 인기있는 입문 언어입니다.


개발자들은 파이썬을 이용해서 데스크탑 앱과 웹 앱을 만들며,


파이썬은 데이터 마이닝을 하기에도 좋은 도구 입니다.


또한 파이썬은 특히 과학적인 컴퓨팅, 데이터 분석, 그리고 생물 정보학에 많이 쓰입니다.



구글, 드롭박스, Pinterest, 인스타그램, Reddit, BitTorrent, Civilization IV, 등


많은 것들이 파이썬을 사용해서 만들어졌습니다.













PHP



PHP는 서버사이드 스크립팅 언어로,


PHP 코드를 쉽게 개념화할 수 있기 때문에 입문자들에게 좋은 언어로 여겨지고 있습니다.


그렇기 때문에 배우기에 어렵지 않을 것입니다.


대부분의 웹사이트들은 PHP를 이용해 만들어졌는데요,


이는 웹을 전문으로 하고 있기 때문입니다.



페이스북, WIkipedia, 야후, 텀블러, WordPress 등이 PHP로 만들어져있습니다.







정적 타이핑 언어



정적 타이핑 언어를 통해 만들어진 앱은 확장 가능하고, 안정적이며, 지속적이라고 알려져있습니다.


정적 언어는 주로 타입 체킹을 통한 오류를 찾아내는 것에 더 엄격하며,


프로토타입을 만들 때 더 많은 코드를 작성해야 합니다.


게임 엔진, 모바일 앱, 백엔드는 주로 정적인 타이핑 언어를 통해 만들어집니다.













Java



다목적의 언어로, Java는 안드로이드 앱, 데스크탑 앱, 그리고 게임을 만드는 데에 사용됩니다.


Java는 또한 기업 수준의 백엔드 개발을 위한 서버사이드 언어로도 쓰입니다.


500개 기업 중 90%가 Java를 사용합니다.



Hadoop은 Java를 기반으로한 인기있는 프레임워크인데요,


빅데이터를 저장하고 처리하는데에 사용되며,


야후, 페이스북, 그리고 아마존 웹 서비스와 같은 기업이 실행하고 있습니다.













C



C는 시스템 소프트웨어를 프로그램할 때 자주 쓰입니다.


흔히 운영체제의 공통어라고도 말합니다.



C는 거의 모든 프로그래밍 언어, 특히 Objective-C와 C++ 에 영향을 주었는데요,


그래서 C를 잘 알고 있다면, 다른 인기있는 언어들을 배우는 데 큰 어려움은 없을 것입니다.


C는 간단한 작업을 할 때 더 복잡한 코드를 필요로 하기 때문에


입문자가 배우는 첫 언어로는 조금 어려울 수도 있습니다.


하지만 C를 알면 프로그래머로써 큰 도움이 될 것입니다.












Objective-C / Swift (iOS 개발)



Objective-C는 C언어를 기반으로 만들어진 정적인 언어인데요,


동적 타이핑에도 사용될 수 있습니다.


애플의 스위프트는 정적인 언어로 Objective-C에 호환되도록 디자인 되었습니다.


정적 타이핑이기 때문에 오류도 극복할 수 있습니다.



파이썬에 영감을 받아서, 스위프트는 코딩 입문자들이 배우기에 더 쉽도록 목표를 두고 있고,


Objective-C의 문제점을 보완하도록 디자인 되었습니다.













C++



C++는 C를 기반으로 한 강력한 언어입니다.


프로그래밍 시스템 소프트웨어를 위해 디자인 되었는데요,


게임이나 게임 엔진, 데스크탑 앱, 웹 앱을 만드는데에 사용되기도 합니다.


C++는 빠르고 강력하기 때문에 페이스북도 고성능과 고신뢰성 요소를


개발하는데에 이 언어를 사용하고 있습니다.



소프트웨어의 많은 부분이 C++로 만들어졌는데요,


Adobe Systems, Amazon, Paypal, Chrome, 등이 있습니다.


C와 비슷하게, C++는 일반적으로 입문자들이 독학하기에는 어려운 언어로 여겨지고 있습니다.


그래서 C++를 첫 언어로 배우기로 결정했다면 강좌나 멘토를 찾는 것이 좋을 것입니다.













C#



C#은 Microsofts. NET 프레임워크를 개발되는 데에 사용됩니다.


주로 Microsoft Windows에 실행됩니다.


C#은 웹 개발, 게임 개발, 그리고 일반적인 마이크로소프트 개발에 쓰입니다.


옛날에는 마이크로소프트가 크로스 플랫폼에 호환되지 않는다고 알려져 있었지만,


Xamarin은 Mono라는 오픈 소스 프로젝트를 작업하면서 C#을 다른 플랫폼으로 맞추고,


리눅스 개발자들에게 더 좋은 개발 툴을 가져오는 것을 목표로 하고 있습니다.


최근에는 C#으로 Xamarin을 통해 iOS와 안드로이드 모바일 앱을 만들 수 있습니다.







그 외













SQL



SQL ("Sequel")은 Structured Query Language의 약자로,


데이터베이스와 커뮤니케이션에 사용되는 쿼리 언어입니다.


SQL은 앱을 만드는데 사용될 수는 없지만, RDMS를 사용하는 앱의 데이터를 관리하는데에 쓰입니다.







일자리 / 취업 기회



모든 언어의 수요나 봉급이 똑같지는 않습니다.


프로그래밍을 배우는 목적이 취업 기회라면, 여기 어떤 언어를 배워야 할 지에 대한 자료를 모아보았는데요,



indded.com의 예상 급여 분석를 바탕으로 프로그래밍 언어를 9개의 단계로 나눠볼 수 있습니다.













결과에 따르면, 프로그래밍 언어 중에 스위프트를 고를 때 가장 많은 돈을 벌 수 있고,


Java, Ruby, Python, C++ 또한 좋은 선택임을 알 수가 있습니다.


급여가 프로그래밍 언어를 배우는 이유 중 가장 큰 관심사라면, JavaScript, C#, SQL, PHP는 맞지 않을 수도 있습니다.



평균 봉급은 수요 (얼만큼 일자리 공고가 많은지)와 공급 (얼마나 많은 개발자들이 그 언어를 알고있는지), 그리고 경험에 따라 달라집니다.


평균적으로 시작한 지 얼마 안된 개발자가 고급 개발자보다 더 적게 받습니다.


그래서 어떤 언어를 고를 지 결론을 짓기 전에 이러한 요소들을 자세히 살펴보는 것이 좋습니다.







일자리 추세



자신이 알고 있는 프로그래밍 언어를 바탕으로 어떻게 일자리를 구할 수 있을까요?


여기 indeed.com에서 가져온 일자리 추세에 대한 자료가 있습니다.













여기서 보면, 채용공고에서 C, SQL, Java, JavaScript를 가장 많이 언급한 것을 알 수가 있는데요,


C#, C++, Python도 알면 편리한 언어입니다.



하지만, 스타트업에서 일하는 것이 목표라면 여기에 나온 일자리 추세는 별로 쓸모가 없을지도 모릅니다.


AngelList는 스타트업 채용공고를 알아보기에 좋은 사이트 인데요,


소프트웨어 개발자 광고를 바탕으로 프로그래밍 스킬에 대한 수요를 알아보도록 하겠습니다.













여기서 또한, JavaScript가 가장 많이 필요로 하는 능력이라는 것을 볼 수 있습니다.


하지만 스타트업 기업들은 Java, C, C++나 C#보다 파이썬과 루비를 더 선호하는 것을 알 수 있습니다.







개발자 공급 시장



Codementor의 멘토들이 어떤 스킬을 가지고 있는지 알아보도록 하겠습니다.













실제 시장의 정확한 묘사는 아니지만, 현재 상황에 대해 간략하게 파악할 수 있습니다.


보시다시피, Obejctive-C 전문가들은 별로 없지만,


모바일 앱 비즈니스는 꽤 오랫동안 붐을 일으키고 있습니다.


Objective-C 개발자들의 공급이 적기 때문에 그에 따른 보상은 자연적으로 높을 수 밖에 없겠죠.



다른 한편으로, PHP는 노동자들 중에 공급이 많은 편인데요,


이 말은 고용주들이 더 많은 선택권을 가지고 있기 때문에 봉급 등에서 큰 협상력을 가지고 있다는 뜻입니다.


그러므로 PHP 개발자들은 더 적게 법니다.



JavaScript는 조금 특별한 케이스 입니다.


공급이 가장 많음에도 불구하고, 수입 면에서는 밑 단계에 있지 않습니다. 


JavaScript에 대해서는 이 글 후반에 더 자세하게 알아보도록 하겠습니다.







수입 범위



이제 각 언어의 수요와 공급에 대해서 알게 되었다면,


수입 정보를 바탕으로 얼마만큼의 잠재적인 수입을 벌 수 있는지에 대해서 알아보도록 하겠습니다.


밑에 데이터는 gooroo.io에서 가져온 정보인데요, 개개인의 채용공고의 수입 범위의 평균 값입니다.













Ruby, C++, Java를 알고 있는 개발자들의 초봉이 더 높은 것을 알 수 있습니다.


파이썬과 루비는 잠재적인 수입이 가장 높은데요,


루비와 파이썬 개발자들의 수는 적지만 수요가 높기 때문입니다.


JavaScript는 잠재적인 수입 면에서 봤을 때 크게 하락한 것을 볼 수 있는데요,


2015년 4월에 $188,168정도였지만, 현재는 약 $124k인 것으로 알 수 있습니다.


그럼에도 불구하고, JavaScript는 특별한 케이스인데요, 그 이유는 밑에서 설명하도록 하겠습니다.







특수 사례: JavaScript 프레임워크 



JavaScript를 배웠을 때 나중에 돈을 얼만큼 벌 수 있는 지 알아보려면


JavaScript 언어를 단순히 다른 프로그래밍 언어들과 비교하는 것은 충분하지 않습니다.



위에서 언급 했던 것처럼 JavaScript는 하나의 큰 범주에 속합니다.


많은 프레임워크들이 프론트엔드 웹사이트 개발에 가능하도록 개발되었기 때문에,


오직 JavaScript와 jQuery에 대해서만 아는 사람보다


JavaScript 프레임워크를 알고있는 개발자가 더 많은 돈을 벌 수 있습니다.



미국에 다양한 JavaScript 프레임워크 개발자들의 평균 수입을 살펴보도록 하겠습니다.













보시다시피 평균 수입이 나쁘지 않습니다.


특히 React는 가장 좋은 미래 전망을 가지고 있습니다.


물론, 이 자료는 그저 참고용일뿐, indeed.com은 평균 수입을 $105,000정도로,  조금 다르게 예상하고 있습니다.


이 자료에 나와있는 기술들을 배우기 위해서는 JavaScript를 알아야합니다.


이 때문에 JavaScript가 다른 언어에 비해 조금 더 수익성이 있는 언어인 것 입니다.



여기 프레임워크의 개발자에 대한 수요를 살펴보도록 하겠습니다.













Node.js는 백엔드 개발로, 프론트엔드 프레임워크에 대해서 말하자면,


자료에서 AngualrJS가 가장 수요가 크다는 점을 명확하게 보여줍니다.


그러므로, 프론트엔드 JavaScript 개발을 하고 싶다면, AngularJS를 배우는 것이 좋습니다.



다른 한편으로, React는 꽤 최신 기술인데요,


AngularJS의 초기단계와 경쟁을 하면서 빠른 속도로 입지를 확고히 하고 있습니다.


잠재적으로 널리 수요가 증가할 것으로 예상이 되는데요,


일반적으로 AngularJS보다 더 성능 기준에 맞아서 더 좋은 사용자 경험을 제공할 수 있기 때문입니다.







프로그래밍 자원



개발자 세계에 대해서 조금이나마 알고 있다면, 독학을 할 때


다른 개발자들의 지원을 받는 것이 정말 중요하고 도움이 되는 것을 알 수 있을 것입니다.



이러한 네트워크의 일부가 되는 것은 미래 개발자로서의 삶을 확실히 더 쉽게 만들어 줄 것입니다.













StackOverflow



StockOverflow는 전세계의 개발자들이 서로 다른 프로그래머들에게 도움을 주는 가장 큰 개발자 네트워크입니다.


그래서 자연스럽게 프로그래밍 언어가 얼마나 커지고 인기있는지,


또 그 언어를 배울 때 그 네트워크가 얼마나 도움이 되는지를 살펴볼 수 있습니다.







언어 선호도



StackOverflow에 tag 팔로워들을 바탕으로 전체적인 언어의 선호도를 살펴볼 수 있습니다.













아까 위에서 보았듯이 Java와 JavaScript 개발자들의 수요가 가장 많은 트렌드 덕분에, tag 팔로워가 가장 많습니다.


JavaScript는 Java를 넘어서 StackOverflow에서 현재 가장 많이 쓰이는 tag입니다.



SQL, Ruby, Swift는 팔로워 수가 가장 적은데요,


Ruby는 웹 개발에 거의 엄격하게 쓰이고, Swift는 상대적으로 최신 언어이기 때문입니다.







StackOverflow 응답율



StackOverflow는 무언의 약속이 있는데요,


질문을 "정확하게" 표현하지 않으면 아무도 답변을 해주지 않습니다.


이를 고려했을 때, 각 언어에 대한 질문을 했을 때의 응답율을 살펴보도록 하겠습니다.













C, SQL, C++를 팔로우하는 StackOverflow 사용자 수는 적지만, 


이 언어들에 대한 질문 답변율은 60%가 넘습니다.


C, C++는 고급 언어이어서 답변을 해주는 사용자들은 아마 프로그래밍에 더 능숙하기 때문입니다.


그리고 질문하는 사용자도 질문을 더 잘 표현하는 방법을 알고 있는 사람들 입니다.



이 자료에서 중요한 것은 파이썬과 루비 개발자들이 StackOverflow에서 얼만큼 지원을 잘 해주는 가 인데요,


이 언어들은 초보자들에게 가장 인기 있어서


이 언어들의 입문자들은 주로 질문을 정확하게 표현하는데 어려움을 느낍니다.


그럼에도 불구하고 30일안에 답변율은 거의 60%나 됩니다.



다른 한편으로는 PHP는 널리 쓰이는 언어이지만 가장 낮은 응답율을 보입니다.


즉, 많은 사람들이 PHP에 대한 질문을 하지만 답변을 해주는 사람의 수가 적습니다.







GitHub



개발을 시작하게 된 순간 가능하면 자신의 프로젝트에 대한 해결책으로


원래 있던 것을 사용하는 것이 가장 좋다는 것을 깨닫게 됩니다.


일반적으로는 오픈 소스 프로젝트에서 얻을 수 있는데요, GitHub은 그 중 하나입니다.


사용자들은 자신이 좋아하는 프로젝트를 표시할 수 있고,


가장 많이 표시되어있는 프로젝트가 가장 도움이 되는 것이라는 것을 알 수 있습니다.



그러므로, GitHub에 있는 자료들을 조사해보면 프로젝트 개발에 사용한 각각의 언어들을 비교할 수 있습니다.


또한 각각의 언어가 얼마나 빨리 새로운 기술을 혁신하는 지에 대해서 알 수 있습니다.


여기 간단한 그래프를 보면 GitHub에서 인기있는 프로젝트들의 분포를 볼 수 있습니다.













예상처럼, JavaScript에 대한 프로젝트가 가장 많습니다.


JavaScript는 가장 빠르게 움직이는 언어로 알려져 있으며 프레임워크와 새로운 기술에서의 전환율이 가장 높습니다.


그렇기 때문에 개발자들은 JavaScript의 지속적인 혁신을 유지하는데에 어려움을 느끼기도 하는데요,


Node.js 플랫폼 외에는 JavaScript는 주로 프론트엔드 개발에 사용되기 때문에


Ruby, Python, Java, PHP와 같은 다른 백엔드 언어와 직접적으로 비교되지는 않습니다.


이를 고려했을 때, JavaScript가 다른 프로그래밍 언어와 큰 격차가 나는 것은 당연한 일입니다.



Ruby와 Objective-C도 개발에 필요한 툴과 리소스가 많은데요,


StackOverflow에서 비교했던 것처럼 두 언어가 Java같은 언어처럼 널리 사용되는 언어는 아니지만, 


신기하게도 개발자들은 이에 대한 오픈 소스 프로젝트를 더 도움이 된다고 느낍니다.













C/C++ 언어로 쓰인 대부분의 오픈소스 프로젝트는 C/C++개발에만 사용되지 않습니다


전반적인 개발에 도움을 주기 위한 도구로 쓰인 것 뿐입니다.


예를 들어서 가장 흔히 쓰이는 파이썬을 설명하기 위한 도구로는 CPython, 즉 C언어입니다.


앞에 말했던바와 같이, C/C++가 개발 시스템과 응용프로그램에 가장 많이 쓰이는데요,


그래서 GitHub에 있는 오픈소스 프로젝트들이 시스템 도구라는 것입니다



마지막으로, PHP는 가장 많이 쓰이는 언어임에도 불구하고 리소스가 가장 적습니다.


C#은 현재 마이크로소프트에서 많은 오픈 소스를 제공하려고 노력중이기 때문에


미래의 GitHub에서의 존재감을 높이고 있습니다.







다음 글에 연결해서 프로그래밍 언어들의 전망에 대해서 알아보도록 하겠습니다!


2016년 초보자가 꼭 배워야 할 프로그래밍 언어 분석 (2)

http://flearning-blog.tistory.com/227

저작자 표시
신고
1 Comments
댓글쓰기 폼