작년에 작성했던 2021년 배우면 좋은 프로그래밍 언어의 2022년판!!

올해의 주제는 “내가 만약 주니어라면,” 이다!

내가 만약 주니어라면, 어떤 언어를 배우는 게 좋을까?

폭풍처럼 지나간 2021년은 말 그대로 코딩 교육 열풍이였다. 특히 연초에 있었던 개발자 연봉 인상 열풍으로 인해 전공/비전공자 모두 소프트웨어 엔지니어 라는 직종에 많은 관심을 가지게 된 해였다.

나 또한, 2021년동안 다양한 곳에서 감사하게도 불러주셔서 꽤 많은 강의를 다녔었는데, 취업을 위한 프로그래밍 뿐만 아니라 기술에 대한 지식 습득을 위해 프로그래밍을 배우는 분들도 있었다. 그 관점을 돌이켜보면서 2022년은 내가 만약 주니어라면 어떤 언어를 배우는게 좋을까? 라는 내용으로 글을 작성 했다.

Python, 파이썬

2021년과 더불어 여전히 강력 추천하는 언어는 Python 이다. Python은 2022년 1월 현재, PYPL 1위, TIOBE 1위, Github Top Language 2위 에 랭크될 만큼 현 시대에 가장 핫 한 언어다. 이제 파이썬은 소프트웨어 엔지니어라면 반드시 알아야 하는 언어이면서, 주니어 개발자가 가장 먼저 시작하기 좋은 언어이기도 하다.

Python TIOBE Index

커리어 하이라이트

  • ML, AI 에서 여전히 주 언어로 사용한다.
  • 많은 스타트업의 백엔드(Backend) 언어로 자리 잡았다.(Django, Flask)
  • 엔지니어링 마인드나 지식을 키우기에 쉽게 배우기 좋다.
  • 실무에서 주 언어(Main Language)로 쓰이는 경우보단, 서브 언어(Sub Langauge)로 많이 쓰인다.

잠깐, 홍보를 하자면, 파이썬 기초 문법과 프로그래밍 지식 관점은 [비전공자 개발자 만들기 프로젝트 : 파이썬으로 시작하는 프로그래밍 입문] 강의를 추천합니다. (하하하.. 접니다)

프로그래밍 하이라이트

  • 오픈소스, 객체지향, 인터프리터 언어
  • 크로스 플랫폼(모든 OS에서 사용가능)
  • 모던(Modern) 프로그래밍을 지원
  • 방대한 라이브러리를 지원
  • 2021년에 3.10이 출시 되었다.

나도 현업에서 정말 많은 경로로 Python을 사용하고 있다. NCSoft에 있을 때 팀 온보딩 문서를 작성하기 위해 mkdocs나 slackbot를 썼었는데, 이때 필요한 라이브러를 추가로 구현하기 위해 썼던 적이 있고, 팀에서 사용하는 챗봇과, 번역을 위해 문자열 추출 도구 등을 만들 때도 사용했었다.

어떻게 시작할까?

  • 슬랙 API를 이용해 봇을 만들어보는 것도 괜찮다.
  • 게임쪽에서 핫한 Blender라는 오픈소스 DCC툴에 Plugin을 제작해보는 것도 괜찮다.
  • 게임을 통해 파이썬을 배우는 CodeCombat을 이용해도 좋을 것 같다.

파이썬은 배워두면 활용할 곳이 꽤 많다. 특히 주니어 분들의 취업 관문인 “코딩테스트” 에 무조건 포함되어 있는 언어라서, 배워두면 일단 코딩테스트를 시작해 볼 수 있다. 시작이 반이니 한번 해보는거 어떤가?!

TypeScript, 타입스크립트

두번째 추천하는 언어는 타입스크립트다. 많은 분들이 왜 자바스크립트가 아니라 타입스크립트지? 라고 생각할 수 있겠지만, 난 만약에 주니어 개발자가 프로그래밍 언어를 배운다면, 타입스크립트부터 시작하는게 매우 경쟁력 있다고 생각한다. 우선, 타입스크립트는 자바스크립트의 슈퍼셋 관계에 있는 프로그래밍 언어로, 상호 호환이 가능하다. 뿐만 아니라 자바스크립트의 고질적 단점인 추상적인 부분을 명시적으로 바꾸면서 확장 가능하도록 만든 좀 더 모던에 가까운 언어라고 할 수 있다.

Typescript TIOBE Index

실제로, 타입스크립트 사이트에선 다음과 같이 설명하고 있다.

TypesScript is JavaScript with syntax for types.

https://www.typescriptlang.org/

커리어를 시작하는데 있어, 명시적인 언어를 사용한다는 건, 다른 사람이 이해하기 쉽게 코딩을 할 수 있다는 뜻과도 연결되서 협업에 정말 많은 도움을 준다. 뿐만 아니라, 확장에 대해서도 열려있어서 최근에 시작하는 많은 프로젝트들이 JavaScript 대신에 TypeScript를 선제적으로 사용하는 경우도 많다.

아래는 Github Octoverse에 언어 랭킹인데, TypeScript의 상승 곡선이 심상치 않음을 알 수 있다.

Github Octoverse

커리어 하이라이트

  • 타입스크립트는 곧 자바스크립트이면서, 좀 더 모던하다.
  • 자바스크립트의 롤을 병행 할 수 있다.
  • 최근에 만들어진 많은 프로젝트가 타입스크립트를 우선해서 만들고 있다.
  • React /Angular/Node.js 등의 가장 많은 커리어가 존재한다.
  • 웹 쪽에 관심이 있다면, 무조건 배워보자!

현재 다니고 있는 회사에서도 최근에 만들어진 프로젝트는 모두 TypeScript를 기반으로 한다. JavaScript에서 TypeScript로의 전환은 어쩌면 빠르게 이뤄지고 있을 수도 있다.

프로그래밍 하이라이트

  • JavaScript와 본질적으로 같은 언어다.
  • 타입 정의와 문법을 지원한다.
  • 신뢰성 있는 소프트웨어를 제작 할 수 있다.
  • 이해하기가 상대적으로 쉬워, 협업에 매우 용이하다.

타입스크립트는 자바스크립트의 방대한 라이브러리 풀과 많은 장점을 가지면서, 좀 더 확장 가능한 기능들을 통해 언어를 모던하게 진화시켰다.

만약에 주니어 개발자로 도전한다면 자바스크립트보다, 타입스크립트를 우선시 하는 게 유리하지 않을까?

어떻게 시작할까?

자바스크립트와 타입스크립트에는 정말 방대한 자료가 존재한다. 그 중에서도 엄선을 하면 아래에 있는 링크를 추천 해본다. (쉽게 언어에 대해서 배울 수 있는 사이트나 글이다)

만약에 여러분이 이미 자바스크립트를 알고 있거나, 하나의 주 언어를 갖고 있는 주니어 이상의 소프트웨어 엔지니어라면 타입 스크립트와 연관된 클린아키텍쳐에 대해서 찾아보는 것도 매우 좋은 방법으로 생각된다.

Dart, 다트? : Flutter

오늘 마지막으로 다룰 언어는 Dart이다. 사실 Dart라는 언어는 매우 매우 매우 생소하게 느껴질 것이다. 어디서 이런 듣보 언어를 가져와?! 라고 생각하신다면, 잠깐만 제 이야기를 들어달라!

혹시 플러터(Flutter)라는 프레임워크에 대해서 들어본 적 있는가? 있다면, 당신은 Dart에 관심을 가져야 한다. (이제 Flutter와 Dart는 한몸으로 쳐야 한다)

아마도, 많은 분들이 최근에 어플리케이션 개발 프레임워크를 이야기하면 리액트 네이티브를 많이 떠올릴 것이다. 그렇다. 최근에 많은 앱(App)들이 웹에서 넘어온 리액트 네이티브를 사용한다. 만약에 여러분이 지금 개발자라면 리액트 네이티브를 사용하고 있을지도 모른다. 하지만 오늘의 주제가 개발자가 되려고 하는 분들을 고려 한다고 했을 때, 리액트 네이티브가 매력적일까?

우선 2가지 문제가 있다.

  1. 리액트/리액트 네이티브를 다루는 사람은 너무 많다.
  2. 지금과 같은 개발자 부족 시대에도 시니어급(리액트를 다루는 모든)과 경쟁 해야 한다.

즉, 새로 진입하는 사람들에게 이미 많은 만렙이 존재하고 있다는 것이다. 약간 와우 레이드로 따지면, 초행팟은 취급하지 않는 느낌에 가깝다고 보면 된다.

하지만 Flutter는 다르다. 당신이 비전공자건, 전공자건, 프로그래머건 아직까진 “공평하다.” 가르쳐 주는 대학도 없고, 전문가(?)도 매우 적다.

이런 케이스는 자칫 잘못하면 아무도 하지 않는 언어가 될 수 있어서 매우 조심해야 하는데, 트렌드가 매우 신기하게 흐르고 있다. 아래는 구글 트렌드에서 리액트 네이티브와 플러터의 트렌드를 비교한 그래프다.

이 그래프가 100% 확신을 준다고는 할 수 없지만, 지속적으로 관심이 늘고 있고, 2020년부턴 리액트 네이티브를 앞섰다.

5년간의 구글 트렌드

2021년에 Flutter2 패치와 함께 더 많은 플랫폼과 기능을 제공한다. 때문에, Flutter의 발전을 보려면 여러분은 Dart를 알아야 한다.

커리어 하이라이트

  • 국내 스타트업에서도 Flutter 를 사용하는 곳이 많이 생겨나고 있다. (밀리의 서재, 문토등)
  • 커리어로 앱을 만들고 싶고, 개발에 입문한다면 매우 적합한 언어이다.
  • 플러터 2.0부터 앱(Android/iOS)뿐만 아니라 멀티플랫폼(Windows/Linux/MacOS)을 지원한다.
  • 구글의 차세대 OS(퓨시아)를 지원한다.(Next Android)

나도, 2021년에 플러터를 잠깐 다뤄보면서 매우 놀란점이 있는데, 프로토타이핑에 정말 특화되었다고 느낀게 한두개가 아니였다. 실제로 1시간안에 앱의 모습을 갖출 정도로 빠르게 배우고, 빠르게 만들어 볼 수 있어서, 초기 스타트업이나 프로토타이핑을 통해 검증이 필요한 곳에서 커리어를 시작한다면 매력적인 언어와 프레임워크가 아닐 수 없다.

프로그래밍 하이라이트

  • Hot Reloading(코드를 수정하면 앱에 바로 반영되는)을 지원한다.
  • 언어 자체가 App UI 제작에 특화 되었다.
  • 개발 생산성(Productive Development)에 특화된 언어다.
  • 급성장하는 언어이자 프레임워크다.
  • 관심도는 점진적으로 올라가고 있으며, 플러터로 앱을 만들어보는 게 매우 간단하다.

어떻게 시작할까?

Flutter 2가 나온지 얼마 안되서, 아직까지는 Google에서 만든 문서가 대부분이긴 하지만, 영어로 되어있는 것도 따라쳐보면 쉽게 배워볼 수 있을 것이다.

마무리하며,

프로그래밍 언어만 한다고 해서 소프트웨어 엔지니어가 되는 건 아니지만, 시작은 프로그래밍 언어에서 시작한다. 주변에서 “에이, 그렇게 배워도 개발자는 되기 힘들지” 라던가, 일부 커뮤니티에서 _“개발자의 불편한 진실 : 열심히 배우셔도 안됩니다."_과 같은 글을 읽었다고 해도, 낙심하지 말라! 주변에서 정말 많은 비전공자 분들을 봐왔고, 무모한 도전으로 개발자가 되신 분들도 많이 봐왔다.

앞으로는 더 많은 기술 기업들이 탄생할 거고, 더 많은 개발자 필요해질 것이다. 그 과정에서 더 많은 혁신이 일어날 것이다. 2022년엔 그 혁신의 라인에 올라타는 한해가 되셨으면 좋겠다. 이 글을 보고, 프로그래밍을 배우고 싶다는 생각이 드셨다면 무조건 시도해보라! 도전은 공짜다.