세상에는 많은 프로그래밍 언어들이 존재하고, 그중 어떤 것을 먼저 배울지 결정하는 것은 생각보다 어려운 일이다. 많이 사용하는 언어를 배워야 하는 것인지, 이 언어 외에 다른 것은 없는 것인지 등 생각할 부분도 너무나 많다. 아래의 조언을 참고해서 첫 번째 언어에 도달해 보자. (해당 글은 "커리어 스킬"을 참고하여 작성하였습니다)
어떤 언어인지는 중요하지 않다
언어를 생각해보자고 이야기해 놓고 어떤 언어인지는 중요하지 않다니. 황당하고 어이없을 수 있다. 하지만 많은 프로그래밍 언어들은 근본적으로 아주 비슷하다고 한다. 물론 문법과 사용되는 외양이나 기능 구성은 매우 다르다. 그러나 여러 언어들을 살펴보면 생각보다는 공통점이 많다. 분기처리, 반복 형태, 메서드와 프로시저 호출과 같은 기본적인 문법 및 코드 정리 방법을 갖추고 있다. 그래서인지 하나의 언어를 익히고 나면 다른 언어를 익히는 것이 훨씬 쉬워진다. 때문에 첫 번째 언어를 배우는 것이 가장 어려운 단계이다. 첫 번째 언어를 배우고 나면 비슷한 문법을 가지고 있는 두 번째, 세 번째 언어는 더욱 빠른 속도로 배울 수 있게 된다. 예를 들어 자바를 배우고 나면 C#이나 자바스크립트를 배우기 굉장히 쉬워진다. 첫 번째 언어를 어떤 것으로 선택하든 우선 배우자. 그 후에 언어가 잘 맞지 않다고 생각되거나 다른 언어에 관심이 생기거나 어떤 직장에서 다른 언어를 사용해야 한다면 그 언어를 배우면 된다. 그 단계는 첫 번째 언어를 배울 때보다 훨씬 쉬울 것이다. 이를 잘 알기 때문에 특히 큰 회사의 면접에서 코딩 테스트 같은 면접을 치를 때 자신이 사용하는 언어를 선택할 수 있도록 해준다.
그래도 고민이라면 고려할 부분
그래도 누군가 "이 언어를 배워!"라고 이야기해주는 것이 편한 사람들이 있다. 그런 사람들을 위해 고려해야 할 부분을 알려주겠다. 가장 빠르게 선택할 수 있는 압박이 되어주는 것은 일자리 전망과 미래일 것이다. 어떤 언어를 선택해서 열심히 배운 끝에 직장에 들어갔는데 그 회사에선 그 언어를 사용하지 않는다면? 낭패가 아닐 수 없을 것이다. 그렇기 때문에 자신이 원하는 직군이나 회사에서 원하는 언어를 배우는 것이 가장 쉬운 선택지이다. 우선적으로 가장 많이 사용하는 언어에는 C#, 파이썬, 자바, 루비, 자바스크립트, C++, PHP가 있다. 입문자의 경우 예의 언어들에서 고르는 것도 좋은 방법이다. 두 번째로 생각할 수 있는 부분은 흥미가 가는 기술을 구현해 낼 수 있는 언어를 고르는 것이다. 안드로이드에 흥미가 있다면 코틀린이나 자바를 배우게 될 것이고 IOS에 관심이 있다면 스위프트 등의 언어를 배우는 식이다. 난이도도 중요한 고려 요소이다. 초보자의 경우 독학으로 시작을 하게 되는 경우도 많은데 그때 어려운 개념이 잔뜩 등장하면 배움에 흥미가 떨어질 것이다. 그런 의미로 C++는 별로 추천할 수 없다. 메모리 관리와 포인터 같은 다른 언어에는 보이지 않는 개념이 존재하여 어렵다. C#이나 루아, 파이썬, 루비, PHP 등의 언어는 이 부분에서 추천한다.
더 생각해볼 부분
위의 고려할 사항들은 표면적으로 생각해 볼 수 있는 부분들이다. 하지만 어떤 언어를 고른 후 배우기 시작하면서 난관에 부딪힐 수 있는 부분이 있다. 바로 자료들이다. 어떤 기술을 사용하면서도 느낀 부분이다. 많이 사용하지 않는 기술과 언어는 자료가 많이 없다. 그래서 어떤 부분에서 막히게 되더라도 검색이 안된다. 아무리 찾아도 나오지 않고, 해결은 불가능한 상황에 머리가 아파오며 포기하게 될 것이다. 때문에 해당 언어에 대한 자료가 많이 존재하는 언어일수록 배우기가 훨씬 편리한 상황에 놓이게 될 수 있다. 인지도가 높거나 인기가 많은 언어의 경우 책, 동영상 강의뿐 아니라 블로그 포스팅도 넘쳐나서 여러 관점에서, 여러 방법으로 문제를 해결해 볼 수 있는 길이 열린다. 하지만 많이 사용하지 않는 언어라면 자신이 언어 사용설명서를 만들어내는 기분으로 언어를 배워야 할 수밖에 없다. 또한 자신이 가지고 있는 자원도 고려요소이다. 만약 "난 IOS 개발자가 될 거니까 스위프트를 배워봐야지!"라고 생각을 한 후 윈도우 노트북을 산다면? 슬프게도 불가능한 상황이다. 몇몇 언어들은 OS에 따라 사용이 불가능하기도 하고, 환경에 따라 배울 수 없기도 하다. 마지막으로 생각해 볼 부분은 바로 인맥이다. 1:1 과외를 받으라는 말이 아니다. 어떤 부분에서 막혔을 때, 혹은 사용해 볼 수 있는 라이브러리 등을 생각해 볼 때 가장 쉽게 확인해 볼 수 있는 것이 인맥이다.
댓글