본문 바로가기

소프트웨어/JavaScript

프로그래밍 공부방법

프로그래밍을 공부할 때 여러가지 방법들이 있고, 자신들만의 노하우가 있다고 생각합니다. 자신들만의 노하우에 더해 좀 더 효과적인 방법이 있진 않을까? 하는 고민을 하는데, 아래 소개하는 방법도 하나의 아이디어가 될 수 있다는 생각이 들어 정리를 해봅니다. 아래의 내용은 다른 블로그에 정리되어 있는 글을 읽어서 판단해 보고, 괜찮은 방법인 것 같아서 소개를 합니다. 언어는 'javascript'라고 되어있는데, 다른 프로그래밍 언어를 공부한다고 하더라도 학습하는 방법을 찾는데는 도움이 될 것 같습니다.

아래에 작성한 내용은 참고한 블로그 URL에 있는 내용을 좀 더 이해하기 쉽도록 정리한 것이고, 제가 작성한 내용은 아닙니다. 참고하셔서 읽어주시면 되겠습니다.

 

1. 책 읽기 - 정제된 정보 습득

2. 라이브러리 학습하고, 사용하고, 이해하기

3. 연습하고 스스로 질문하기

4. 표준 배우기

5. 웹에 있는 자료 활용하기

 

참고한 블로그 URL - shorturl.at/cvy47 

 

훌륭한 JavaScript 개발자가 되는 법

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

medium.com

1. 책 읽기 - 정제된 정보 습득

프로그래밍 공부에 접근할 때 헌신적인 노력을 할 생각(태도)을 가져야 한다. 

성의없는 노력은 잡스러운 결과를 얻을 것이 자명하기 때문이다. 

블로그 게시물들을 읽으면서 그때 그때 상황을 해결할 수도 있고, 초기의 투자 시간이 적으니 쉬워 보일 것입니다. 하지만 이렇게 학습한 결과는 정제된 학습보다 결과적으로 더 오랜시간을 허비하게 됩니다. 이런 문제의 해답은 책을 읽는 것입니다. 

책 속의 글자는 우리가 지식을 정제된 형태로 현세대에서 다음 세대로 전달하는 방법입니다. 웹 자체는 학습 도구로서는 혼란스럽고 집중을 방해하는 매체가 됩니다. 따라서 일단 잘 정제되어 정리된 책을 통해 학습을 하는 것을 첫번째로 추천 드립니다.

 

아래 책들로 JavaScript 공부를 시작해보세요. 먼저 더글라스 크락포드의 자바스크립트 핵심 가이드(원서/번역서)는 JavaScript의 성경 같은 책입니다. 오래된 책이지만, 여전히 JavaScript 공부를 시작하기에 가장 좋은 책입니다. 자바스크립트 완벽 가이드(원서/번역서는 절판) 또한 반드시 가지고 있어야 할 책입니다. 이 책은 한 번 사두면 필요할때 레퍼런스로 사용할 수 있을 것입니다. jQuery를 개발한 John Resig이 쓴 자바스크립트 닌자 비급(번역서) 또한 주목할 만 합니다. 또한 책은 아니지만 모질라 개발자 네트워크(MDN) 사이트에도 훌륭한 JavaScript 가이드가 있습니다. MDN에는 JavasScript에 대해서 궁금한 부분을 검색을 통해 도움을 받을 수 있습니다.

 

- 자바 스크립트 핵심 가이드(더글라스 크락포드, Douglas Crockford)

- 자바 스크립트 완벽 가이드(존 레식 John Resig, 베어 바이볼트 Bear Bibeault)

- 자바 스크립트 닌자 비급 (존 레식, John Resig) 

- 모질라 개발자 네트워크(MDN) : developer.mozilla.org/ko/ 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 라이브러리 학습하고, 사용해 보고, 이해하기

다음으로 중요한 단계는 라이브러리들을 학습하는 것입니다. 책을 보면서 기본적인 문법과 동작원리를 이해하는데 중점을 뒀다면 라이브러리는 바로 그것들을 직접 사용해보고, 소스 코드를 이해하는 것입니다.

 

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

 

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

 

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

 

3. 연습하고 스스로 질문하기

좋은 JavaScript 개발자가 되기 위한 다음 단계는 많은 연습을 해보는 것입니다. 이 연습들은 DOM보다는 JavaScript 언어 자체에 초점이 맞춰져 있습니다. 따라서 반드시 테스트들이 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로 만드는가?
어떻게 이 라이브러리는 이런 기능을 제공하는가?”

같은 일반적인 질문들을 당신 스스로 해봐야 합니다.

 

4. 표준 배우기

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

 

Understanding ECMAScript 6 : leanpub.com/understandinges6  

Exploring JS : exploringjs.com/

 

5. 웹에 있는 자료 활용하기

저는 앞서 웹을 통해 웹에 대해 배우는 것의 위험성을 언급했습니다. 이제 제 마지막 추천은 웹에서 최고의 리소스를 얻는 방법입니다. 

 

Hacker News는 꾸준히 따라가기에는 시간이 많이 들지만 노이즈가 줄어드는 좋은 소스입니다. 조금 버겁다면, 대신 JavaScript Weekly 같은 주간 다이제스트를 목표로 해보세요. 시간이 흐르면 당신은 어떤 라이브러리나 기술이 대세를 이끄는지 알 수 있을 겁니다. 

 

Hacker News : news.ycombinator.com/news

JavaScript Weekly : javascriptweekly.com/

 

트위터에서 영향력 있는 JavaScript 개발자를 찾아보세요. Tutsplus가 만든 33명의 팔로우할만한 JavaScript 개발자 목록은 좋은 출발점입니다. 웹에는 Toptal Blogs, Rebecca Murphey의 블로그, Nicholas Zakas의 블로그 와 같은 블로그들에도 자료가 있습니다. (혹시 관심이 있다면 A Baseline for Front-End [JS] Developers: 2015 의 글도 읽어보세요.)
(혹시 이 목록에 없는 다른 좋은 블로그가 있다면 저에게 메일로 알려 주세요.)

 

Tutsplus가 만든 33명의 팔로우할만한 JavaScript 개발자 목록  : shorturl.at/adARV

Toptal Blogs : www.toptal.com/developers/blog/web-front-end

Rebecca Murphey의 블로그 : rmurphey.com/

Nicholas Zakas의 블로그 : humanwhocodes.com/

A Baseline for Front-End [JS] Developers: 2015  : shorturl.at/mpuxR


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

JSConf : jsconf.com/

Pluralsight : www.pluralsight.com/  

 

요약 하자면,

정제된 정보로 지식 습득하기 - 책 읽기

jQuery, underscore, Backbone 같은 주요 라이브러리를 학습하고, 소스 코드를 이해해 보세요.

JavaScript의 핵심 개념들을 연습하고, 다른 친구나 동료들과 대화를 해보거나 강의를 해보세요.

최신 버전의 표준 문서를 읽고, 언어의 최신 기능을 도입해 보세요.
다이제스트(요약본)나 블로그를 한 주마다 읽거나 컨퍼런스나 교육 비디오를 보면서 여러 웹 리소스를 따라가세요.

 

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

-----

 

여기까지가 공부방법에 대한 내용을 약간은 부드럽게 바꿔서 작성한 내용입니다. 원본 블로그를 보시려면 위에 링크를 걸어 놓은 URL을 참고해서 보시면 되구요. 내용을 정리하면서 느낀건데, 이대로 하는 방법이 굉장히 좋은 방법이라는 생각이 듭니다. 개인적으로 저도 이 과정중에서 빠트리고 실행하지 못했던 내용들도 있고 한데요. 이렇게 하는 학습방법이 프로그래밍을 하시는 분들한테 많은 도움이 될거라 생각합니다. 내용 잘 참조하셔서 본인들의 프로그래밍 실력이 일취월장 하길 기원해 봅니다! 다들 화이팅!!