2013년 8월 27일

올해가 가기 전에 반드시 배워야 할 6가지 IT 기술



기술은 빠르게 변한다. 그래서 자바 1.3 코드 편집이나 파워빌더(PowerBuilder)에만 집착하면 새로운 취업 기회를 잡기가 점점 어려워질 것이다. 그렇다면 어떤 기술을 배워야 할까? 자신의 경력을 계속 발전시키고 시장 수요에 맞춰 연봉을 높이려면 지금 제시하는 6가지 기술 정도는 알고 있어야 한다.

1. 하둡 : 신기술 시장의 지배자 
아직 하둡에 대해 잘 모르고 있다면 서둘러 하둡(Hadoop)에 통달해야 한다. 맵리듀스(MapReduce) 개념과 이용 방법도 알아야 한다. 하둡은 인기와 수요 등 모든 기준에서 신기술 시장을 지배하고 있다. 다른 기술을 배울 능력도 있을 수 있지만 하둡은 더 어렵다. 'Hello world' 이상을 터득하기 위해서는 더 많은 시간과 노력을 기울여야 한다. 가장 어려운 작업 중 하나는 스스로 공부를 할 간단한 주제를 찾는 것이다.

그러나 이조차도 그리 쉽지는 않다. 충분한 데이터를 확보하는 것도 마찬가지다. 위키피디아(Wikipedia)같이 인기는 있지만, 덩치가 커서 별 쓸모없는 데이터들이 있다. 어쩌면 이를 다른 것들과 결합해, 누가 누구를 '편집하는 것'을 좋아하는지 보여주는 일종의 소셜 그래프를 만드는 것도 방법이다. 호튼워크(Hortonwork)는 깃허브(GitHub)와 관련해 유사한 개념을 입증해 보였다.

일단 '손을 더럽히고 나면' 맵리듀스가 대답할 수 있는 다른 질문 결과를 화면에서 확인할 수 있게 될 것이다. 이 분야에는 호튼워크 같이 하둡에만 전문화된 회사에서 (VM웨어/EMC에서 분사한) 피보탈(Pivotal) 같이 여러 기술을 취급하는 업체, 자신들의 제품에 하둡을 도입하기 시작한 오라클(Oracle) 등 기존 업체까지 많은 기업이 있다. 이 가운데 어떤 회사도 성장 가능성은 무궁무진하다.

2. 몽고DB : 객체지향형 백 엔드의 출발점
하둡만큼 거대하지는 않지만 몽고DB(MongoDB) 또한 중요한 기술이다. 또 훨씬 배우기 쉽다. 몽고DB 같은 문서 데이터베이스는 대형 AJAX 애플리케이션이나 객체 지향형 백 엔드(Back ends)에 적합하다. 또 확장이 쉽다는 장점이 있다. 이런 부분에서 시도해 볼 기술은 여러 가지가 있다. 그러나 출발점은 몽고가 되어야 한다. 경력 관점에서 가장 유리한 기술이기 때문이다. 대다수 기업이 이 데이터베이스에 친숙한 상태이다. 몽고DB 개발사인 10젠(10gen)은 8,100만 달러에 달하는 활동 자금을 보유하고 있다.

3. 스칼라 : 병행성 높은 새 객체지향 프로그래밍 기법
동시(병행) 프로그래밍이 변하고 있다. 개발자로서 구축을 요청받는 애플리케이션 또한 마찬가지이다. 얼마 전까지만 해도 로우 레이턴시(저지연) 애플리케이션에는 C나 C++가 사용됐다. 그러나 지금은 자바가 많이 쓰이고 있다. 병행성이 높고 기능적으로 객체 지향적인 새로운 프로그래밍 기법은 스칼라(Scala)로 개발되는 경우가 많다. 이후 자바나 다른 인기 언어로 공개된다.

스칼라는 하나의 언어 또는 'syntactic candy' 이상이다. Akka와 Play 같은 아이디어와 라이브러리 생태계라 할 수 있다. 스칼라를 좋아하든 싫어하든, 스칼라가 포용하고 있는 아이디어를 이해할 필요가 없다. 스프링 프레임워크(Spring Framework) 창조자인 로드 존슨이 타이프세이프(Typesafe) 이사회에 합류했고, 2,000만 달러의 투자가 확보됐다. 이 역시 주목해야 할 부분이다.

4. Node.js : 이벤트 기반 논블로킹 시스템에 대한 이해
Node.js를 꼽기는 했지만 오해하지 말 것은 자바스크립트(JavaScript) 개발자가 되고 다른 모든 것을 포기하라고 종용하는 것이 아니다. Node.js 같은 이벤트 기반의 논블로킹 시스템과 서버에서 사용되는 자바스크립트 같은 역동적인 언어 하나를 터득해야 한다고 주장하는 것이다. 루비(Ruby)를 배울 수도 있다. 그러나 '이벤트 기반'과 '논블로킹'이라는 부분을 놓치게 된다.

Node.js에는 (싱글 스레드 등) 단점이 있다. 그러나 그보다 많은 장점이 있다. 마이크로소프트에서 클라우드비스(Cloudbees), VM웨어 등 많은 회사와 단체의 사람들이 Node.js를 이용해 개발하고 있다. (1억1,200만 달러 이상의 자본을 가진) Node.js의 개발사인 조이엔트(Joyent)는 Node.js의 상품화를 시도하고 있지 않다. 그러나 클라우드 상품은 Node.js 중심의 PaaS와 차별화가 되어 있다.

5. C/C++ 또는 어셈블리 : 컴퓨터를 이해하는 지름길
필자는 이를 어셈블리(Assembly), 또는 더 나아가 C로 남겨두지 않으려고 노력했다. 잡종인 하이브리드 사촌을 제거하는 것 또한 마찬가지이다 (리누스는 NSFW 주장에서 이것이 최상이라고 말했다). 표준 lib이나 STL, 기타 이런 종류를 통달할 필요는 없다. 그러나 컴퓨터의 작동 원리를 알아야만 한다. 메모리의 작동 원리, 컴파일러의 기능 등을 이해해야 한다는 의미이다.

필자는 수년간 MASM을 사용하지 않았다. 그러나 이때 배운 지식을 꾸준히 응용하고 있다. 기술이 더 높은 수준으로, 그리고 추상적으로 성장하면서, 더 기본적인 단계에서 이해하는 것이 확장성이 높은 고성능 시스템을 개발하거나 디버깅할 때 훨씬 유리하다. 루비 개발자에게 이와 관련된 지식을 요구하지는 않는다. 그러나 이에 대한 지식과 전문성이 있다면 바로 잡아야 할 문제를 더 잘 이해할 수 있다. 이런 방식으로 생각할 수 있는 사람은 시간이 지날수록 스스로에 대한 가치를 입증할 수 있게 될 것이다.

6. 깃 : 효과적인 개발을 위한 필수 툴
아직도 깃(Git)에 대해 알지 못하고, 깃허브(GitHub) 계정을 만들지 않았다면 많이 늦은 것이다. 이미 지난해에 이를 터득했어야 했다. 현재 업무에서 여전히 클리어케이스(ClearCase)를 이용하고 있다면, 아마 상당한 위험수당을 받고 있거나, 더 이상 클리어케이스를 사용할 수 없게 될 때 일을 그만둬야 할 것이다.

현재 수요가 있는 기술은 많다. 그러나 앞서 언급한 6가지 기술을 터득한다면 쉽게 일자리를 찾을 수 있을 뿐만 아니라 연봉도 늘어날 것이다. editor@idg.co.kr



댓글 없음:

댓글 쓰기