소년코딩

※ 이 글은 How to Become a Great JavaScript Developer의 번역판입니다.


저는 커가면서 점차 관심 분야가 다양해지고, 겉으로 보기에는 무관한 영역까지 넓어져 갔습니다. 저는 수학을 역사 만큼 좋아했었죠. 저의 목표는 여러 분야에 능통한 르네상스 맨(박식가)이 되는 것이었습니다. 그것은 아주 힘든 일 이란 것을 알게 되었고, 갑자기 저는 여러 분야를 알지만 한 분야에도 능통하지 못한 사람이 되는 위험성과 마주했습니다.

저는 르네상스 시대의 사람들처럼 될 순 없더라도 적어도 한 분야 만이라도 마스터한 사람이 되기 위해, 확실하게 어떤 분야를 전문적으로 해야겠다고 생각했습니다. 어떻게 하면 소프트웨어 개발에 필요한 어마어마한 양의 지식을 유지하면서 내 전문 분야를 정할 수 있을까요?

이 글을 통해 지난 5년 간의 경험을 바탕으로 제가 훌륭한 JavaScript 개발자가 되기 위해 썼던 기법과 자료를 대략적으로 알려드리고자 합니다.

요즘 거의 모든 웹 개발자는 같은 문제에 시달리고 있습니다. 우리는 데이터베이스로부터 시작해서 백엔드 아키텍쳐, 프론트엔드 사용자 인터페이스, 그리고 CSS 지식으로 UI를 다듬는 부분까지 여러 분야에 모두 능통해야 합니다.


책 읽기

가장 우선적이고 중요한 제안은 잘 하기 위해 헌신적인 노력을 해야 한다는 것입니다. 당신이 성의 없이 노력하는 동안은 잡스러운 결과를 얻을 것이 자명합니다. 예를 들자면 몇몇 블로그 게시물을 가끔 읽으면 초기 투자 시간이 적으니 그것이 쉬워 보일 것입니다. 그런 교육은 열정적이고 정제된 학습 과정보다 더 오랜 기간 동안 많은 시간을 할애하게 합니다. 이 딜레마의 해답은 간단합니다. 책을 읽으세요.

책이야 말로 우리 문명을 떠받치고 있는 것입니다. 책 속의 글자는 우리가 지식을 정제된 형태로 현 세대에서 다음 세대로 전달하는 수단입니다. 웹 기술 전문가가 되는 데에 있어 하나의 문제는 당신이 언제 웹 그 자체로부터 거리를 두어야 하는 지를 배워야 한다는 것입니다. 웹 그 자체는 학습 도구로서는 혼란스럽고 집중을 방해하는 매체입니다. 따라서 저의 첫 번째 제안은 주제에 대한 책을 읽는 것입니다.

이 책들로 JavaScript 공부를 시작해보세요. 먼저 더글라스 크락포드의 자바스크립트 핵심 가이드(원서/번역서)는 JavaScript의 성경 같은 책입니다. 오래된 책이지만, 여전히 시작하기에 가장 좋은 책입니다. 자바스크립트 완벽 가이드(원서/번역서는 절판) 또한 반드시 가지고 있어야 할 책입니다. 당신은 아마 레퍼런스로써 이 책을 소장하게 될 겁니다. jQuery의 주요 개발자인 John Resig이 쓴 자바스크립트 닌자 비급(번역서) 또한 주목할 만 합니다. 만약 당신이 좋은 (그리고 무료로 온라인에서 볼 수 있는) 책을 찾고 있다면 JavaScript AllongéYou Don’t Know JS, 자바스크립트 개론(원서/원서+주석/번역서)을 보십시오. 이 책들은 ebook이나 종이 책으로 구입할 수 있습니다. 또한 책은 아니지만 모질라 개발자 네트워크 사이트에도 훌륭한 JavaScript 가이드가 있습니다.


라이브러리 배우기, 사용하기, 읽기

다음으로 가장 중요한 단계는 라이브러리들을 익히는 것입니다. 책이 당신에게 언어를 어떻게 읽는지 가르쳐 주었다면, 라이브러리는 당신에게 어떻게 말하는 지를 알려줄 것입니다. 당신이 라이브러리로 해야 할 중요한 일은 두 가지입니다. 바로 그것들을 직접 사용해 보고, 소스 코드를 읽는 것입니다.

라이브러리 사용 측면에서는, jQuery, Backbone, underscore 와 React, Angular, Ember 중 한 가지 라이브러리에 익숙해져야 합니다. 이들 중 한 라이브러리를 꼭 사용해야만 한다는 말은 아닙니다. 그러나 JavaScript 개발자라면 최소한 이 라이브러리들에 대한 경험이 좋건 나쁘건 어느 정도 있어야 한다는 것입니다.

당신의 JavaScript 실력을 키우기 위한 두 번째 중요한 일은 이 라이브러리들의 소스 코드를 읽는 것입니다. 이 중에서 저는 Backbone과 underscore의 소스 코드를 강력하게 추천합니다. 저 둘의 소스 코드는 아름답게 작성되어있습니다. underscore의 소스 코드를 읽고 이해함으로써 당신은 함수형 프로그래밍 실력을 키울 수 있습니다. 소스 코드를 읽기 좋은 또 다른 라이브러리로는, 제가 여러 개발자들로부터 추천 받기도 한 mootools입니다. (저는 개인적으로 mootools에 대한 경험도, 그것의 소스 코드를 읽어본 적도 없습니다. 단지 메시지를 전달할 뿐입니다.)

목록에 있는 다른 것들도 살펴보세요. React나 Ember 같은 것들 말이죠. 분명 어려울 것입니다. 하지만 확실히 노력해볼 가치가 있습니다. 하다못해 다른 라이브러리들의 소스 코드 전체를 훑어보기라도 하면서 코드 베이스를 어떻게 설계하는 지를 배우고, 몇 가지 패턴을 발견하기 위해 노력해보세요. 그 외에 d3, highchart, moment.js 등의 라이브러리들도 소스 코드를 읽어볼 만합니다.


연습하고, 스스로에게 질문하기

좋은 JavaScript 개발자가 되기 위한 다음 단계는 많은 연습을 해보는 것입니다. 원칙적으로 이 연습들은 DOM이 아니라 언어 그 자체에 초점이 맞춰져 있습니다. 따라서 반드시 테스트들이 node.js에서 돌아갈 수 있게 해야 합니다. node.js로 작게, 또 많이 연습하세요. 개인 훈련을 하고, JavaScript를 사용하는 다른 방법들을 살펴보세요. Closures, Prototypes, Array Extras (map, filter) 등이 있습니다. 연습을 하는 동안에는 언제나 JavaScript의 근본적인 철학들을 마음 속에 새겨야 합니다.

제 친구 Armagan은 훌륭한 JavaScript 프로그래머이자 교사로서 Pro JavaScript Design Patterns을 자신의 수업 교재로 사용하고 있습니다. 그 수업을 통해 이 책의 가치는 입증되었습니다.

이런 질문에 대답해보세요. "Prototype을 사용한 상속은 어떻게 동작하는가?", "Closure의 정의는 무엇인가?", "this 키워드 의미는 어떻게 변하나?", "apply/bind/map/filter/call은 어떻게 사용하나?". JavaScript 개발자들이 경험하는 일반적인 소스 포인트의 목록을 모아서 당신이 아는 대로 설명해 보세요. 이런 개념들을 다른 사람에게 글이나 구두로 설명해 보는 것은 당신의 실력 향상에 엄청난 도움이 될 것입니다. 이 연습을 하면서 "만약에 이랬더라면?" 하고 발견한 시나리오 들을 시도해 보세요. 예를 들면, "bind를 두 번 썼을 때, 'this'는 무엇을 의미하는가? 어떻게 jQuery는 'this' 키워드를 전역 object가 아닌 jQuery object로 만드는가? 어떻게 이 라이브러리는 어떤 기능을 제공하는가?" 같은 일반적인 질문들을 당신 스스로에게 해봐야 합니다.


표준 배우기

다음 단계는 EcmaScript 표준에 대해 더 깊이 알아 가는 것입니다. 최신 EcmaScript 표준을 뽑아 들고 읽어보세요. 이렇게 하면 ES6와 ES7으로부터 JavaScript의 새로 나올 기능들에 대해 배울 수 있습니다. Nicholas Zakas의 Understanding EcmaScript 6나 Dr. Axel Rauschmayer의 Exploring JS 같은 ES6 관련 책과 함께 표준을 읽으면 Promises, 모듈, 제너레이터, Comprehensions 같은 새로운 기능들의 변화를 알 수 있습니다. 전문가가 되는 길은 지속적으로 주요 소스로부터 표준을 배우고 언어의 새로운 기능을 발견함으로써 가능합니다.


웹에 있는 자료 활용하기

저는 앞서서 웹에서 웹에 대해 배우는 것의 위험성을 언급했습니다. 이제 제 마지막 추천은 웹에서 최고의 리소스를 얻는 방법입니다. Hacker News는 꾸준히 따라가기엔 시간이 많이 들지만 노이즈가 줄어드는 좋은 소스입니다. 대신에, JavaScript Weekly 같은 주간 다이제스트를 목표로 해보세요. 시간이 흐르면 당신은 어느 라이브러리 혹은 기술이 대세를 이끄는지 알 수 있을 겁니다. 트위터에서 영향력 있는 JavaScript 개발자를 찾아보세요. Tutsplus가 만든 33명의 팔로우할만한 JavaScript 개발자 목록은 좋은 출발점입니다. 웹에는 Toptal BlogsRebecca Murphey의 블로그Nicholas Zakas의 블로그 와 같은 블로그들에도 자료가 있습니다. (혹시 관심이 있다면 A Baseline for Front-End [JS] Developers: 2015 의 글도 읽어보세요.)

(혹시 이 목록에 없는 다른 좋은 블로그가 있다면 저에게 메일로 알려 주세요.)

웹에 있는 또 다른 중요한 자료는 컨퍼런스와 교육 비디오입니다. 컨퍼런스로는 JSConf 시리즈가 질이 좋습니다. 교육 비디오 중에서는 Pluralsight를 강하게 추천합니다. 그들의 숙련된 개발자 부대가 양질의 코스를 준비해 놓았습니다. (Pluralsgiht의 제휴를 받은 것은 아닙니다.)


요약 버전

  • 책을 읽는 것부터 시작하세요. 그들이 정제된 정보를 줄 것입니다.
  • jQuery, underscore, Backbone 같은 주요한 라이브러리를 배우고, 소스 코드를 읽으세요.
  • JavaScript의 여러 개념들을 연습하고 자신이 아는 데로 설명해 보세요. 위 주제에 대해 강의하고 대화해 보세요.
  • 최신 버전의 표준 문서를 읽고, 언어의 최신 기능을 도입해 보세요.
  • 다이제스트나 블로그를 한 주마다 읽거나 컨퍼런스나 교육 비디오를 보면서 여러 웹 리소스를 따라가세요.

마치며

끊임 없이 이 과정을 반복하고 수많은 프로젝트를 해보면 당신의 JavaScript 실력은 엄청나게 향상될 것입니다. 언제나 마음 속에 헌신적인 노력을 하겠다는 마음을 가진다면 머지않아 실력자가 될 수 있습니다. 저는 스스로를 좋은 JavaScript 프로그래머라고 생각하지만 아직도 제가 숙련된 개발자가 되려면 멀었고, 제 여정 중에 그 기술들을 따라갈 것입니다. 제 피드백이 필요하거나 수정할 사항이 있으면 ustun@ustunozgur.com 으로 마음 편히 연락 주세요.

그리고 마지막으로, Ustun Ozgur Software에서는 터키 이스탄불에서 일할 숙련된 JavaScript 개발자를 모집합니다. 모집 상황은 저희 웹사이트를 참조해주세요.

즐거운 공부 되시길!

Ustun

여기까지 읽으셨다면 제 트위터 계정, @ustunozgur을 팔로우 해보시는 건 어떨까요?

React.js와 고급 JavaScript 훈련에 관심이 있으신가요? 제 개인 training/workshop 사이트를 방문해보세요.

저와 이 글에 대해 초기 논의를 해준 Engin Arslan에게 감사합니다.

HackerNews에서 논의해보세요.


역자 정보


js

by 소년코딩

추천은 글쓴이에게 큰 도움이 됩니다.

악플보다 무서운 무플, 댓글은 블로그 운영에 큰 힘이됩니다.

댓글 로드 중…

블로그 정보

소년코딩 - 소년코딩

소년코딩, 자바스크립트, C++, 물리, 게임 코딩 이야기

최근에 게시된 이야기