2016년 2월 13일 토요일

어려운 것을 쉽게 배우는 방법 : 슈퍼 파워를 장착하기 위한 3단계 학습법

이번 포스팅에서는 노르웨이의 개발자인 Per Harald Borgen (미디엄페이스북, 트위터, 깃헙, 링크드인)이 미디엄에 공개한 "The Easy Way To Learn Hard Stuff :Three steps to gain a new superpower. (어려운 것을 쉽게 배우는 방법 : 슈퍼 파워를 장착하기 위한 3단계 학습법)이란 글을 번역하여 소개하고자 한다. 그의  미디엄에는 다른 멋진 글들이 가득하므로 꼭 한번 들러보길 추천한다.

글을 시작하기에 앞서 이 멋진 글의 번역을 흔쾌히 허락해준 Borgen씨에게 감사의 말을 전한다.


어려운 것을 쉽게 배우는 방법

슈퍼 파워를 장착하기 위한 3단계 학습법


지난 몇 년 동안 저는 많은 시간을 웹 개발과 머신 러닝을 독학하는데 많은 시간을 써 왔습니다.
학습의 테마는 자바스크립트, NodeJS, React에서 Python, Scikit-learn 그리고 신경망 프로그래밍에 이르기까지 다양했지만 이 모든것을 저는 일관된 방식으로 공부해 왔습니다.

제가 사용한 이 공부법은 3단계로 진행이 되는데 진부하다고 말해도 될 정도로 단순합니다. 하지만 웹 개발에 완전히 문외한 이었던 제가 단 5개월만에 스스로 프로라고 느끼는 것이 가능할 정도가 된 것은 이 공부법의 효과 덕분이라고 생각합니다.

저는 이 학습법이 다른 사람에게도 도움이 될지 모른다고 생각하여 이 기사를 써 보기로 마음먹었습니다.

이 기사는 아무 것도 모른채 무작정 도전을 시작한 2012년 당시의 제 자신을 가르친다는 마음가짐으로 작성하였습니다.

1단계: 배우기전에 익숙해져라

새로운 기술을 배우기 위해서 가장 먼저 실행하는 첫 단계는, 머리로 이론을 학습 하려 하지 말고 어찌되었든 손을 움직여서 사용해 보는 것 입니다. 이러한 방식이야 말로 이론부터 머리속에 넣는 방법보다 훨씬 뛰어납니다.

그렇다고는 해도 배우고자 하는 테마에 대해서 아무 것도 모르는 상태 이므로 자력으로는 뭘 어찌 해 볼 도리가 없습니다.


Justine Michel의 Django 강좌는 완벽하게 "배우기전에 익숙해져라"라는 방식으로 진행이 됩니다.


그래서 우리가 맨 먼저 할 일은 작은 뭔가를 더미로서 만드는 과정을 개략적으로 설명해주는 튜토리얼 영상을 찾는것 입니다. 저자가 설치부터 한 줄 한 줄 끝까지 코드를 설명해 주는 튜토리얼을 찾아 비디오를 보며 여러분도 똑같이 코딩해 보세요. 그 연습용 프로젝트가 제대로 작동하는 것을 확인하며 한줄 한줄 쫓아가는 겁니다.

10분정도의 영상이라고 한다면 여러분이 그것을 끝까지 쫓아 하는데에는 1시간정도 걸린다고 생각해 두세요.

또한 MOOC 코스보다는 숙련된 아마추어가 YouTube에 올린 영상쪽이 오히려 공부하기가 쉬울지도 모릅니다. MOOC를 지금 단계에서 보기엔 너무 부담스러운 경우도 있기 때문입니다.

이 방법의 정 반대되는 접근방법은 그 주제에 대한 책을 읽고 이론부터 배워 나가는 것 입니다. 다만, 그 방법은 제게는 잘 맞지 않았습니다. 다 읽기도 전에 질려버리기 때문입니다. 초보자를 위한 책 조차도 대게는 너무 자세하기 때문입니다. 그래서 저는 책이나 문서를 처음 단계에서는 절대 보지 않으려고 합니다.
튜토리얼 비디오를 따라하는 과정속에서, 자신이 지금 무얼 하고 있는지 알 수가 없어 불안하게 느낄 수도 있습니다. 하지만 그런건 신경쓰지 마세요. 이해 할 수 없는 것은 일단 메모를 해 두고 2단계에서 다시 살펴 봅니다.

이 단계의 핵심은 혼란 스럽거나 지식이 부족하더라도 일단 끝까지 튜토리얼을 한번은 쫓아가는것 입니다.

이러한 방식의 단점을 넘어서는 장점은 다음과 같습니다.

1. 첫날부터 일단 뭔가 만들어 본다

첫날부터 실제로 뭔가를 만들기 때문에, 이론만 읽고 공부만 하는것 보다 만족감을 맛볼 수 있습니다. 그리고 이러한 만족감은 학습을 계속하려고 하는 의욕으로 연결됩니다.

제가 맨 처음 만든 Node.js서버 입니다. 두고두고 많은 참고가 되어 주었습니다.

2. 샘플코드를 얻을 수 있다


게다가 학습과정에서 언제든지 참고할 수 있는 샘플코드들이 여러분의 수중에 남게 됩니다. 이 단계에서 만들어진 샘플 코드들은 이후 단계에서 매우 유용하게 쓰여지게 됩니다.

저는 배우고자 하는 테마에 대한 이해가 깊어졌다고 실감 할 때마다 과거에 만들어둔 예제 코드를 여러번 반복해서 살펴 봄으로서 기억을 새롭게 하고 있습니다.

3. 자신이 무엇을 모르는지 파악 할 수 있게된다


또한, 제 자신은 스스로 공부해 나가는 중에 특히 어느 부분을 신경써서 공부해야 하는지를 발견하는데 있어서 이 방법이 가장 빠르다는것을 깨달았습니다.

학습을 시작하기 전에는 무엇을 아는지 모르는지도 알 수 없는 상태이기 때문에, 배우고자 하는 기술의 어떤 부분에 신경을 써야 하는지, 어느 부분이 까다로운 지를 알 방법이 없습니다. 그렇기 때문에 특히 주의가 필요합니다. 이러한 부분은 가능한 한 빨리 파악해 두는것이 필요 합니다만 이것이 하나의 장벽이 되지 않도록 이해하는 것은 나중에 천천히 해도 됩니다.



아래의 목록은 제가 다양한 테마를 배우기 시작하는데 있어서 많은 도움을 받은 튜토리얼들 입니다.



2단계: 난관에 도전하라


1단계에서 언급한 교제를 적어도 한번 끝까지 마치고 나면 배우고자 하는 기술의 전체적인 구조에 대한 감을 잡을 수 있게 됩니다. 하지만 분명 아직까지는 머리속이 뒤죽박죽일 껍니다. 그래서 다음 단계는 이러한 혼란을 해소하는 것 입니다.

React.js를 배우고 있다면, 그것은 상태와 속성의 차이가 무엇인지를 제대로 파악하는 것 일 겁니다. (참고로 여기를 읽어보시면 이해하실 수 있을것으로 생각합니다.)

이 단계에서는 사실 구체적으로 추천할 수 있는 무언가가 없습니다. 기본적으로는 상황에 맞춰서 책, 공식문서, 스텍오버플로등 어떤 것이라도 살펴볼 필요가 있습니다.

지난번 제가 이것을 경험한 것은 신경망의 코딩 방법을 공부 할 때 였습니다. 코세라 과정을 수강하고 알았지만 신경망의 전체를 이해할 수 있으려면 로지스틱 회귀를 이해할 필요가 있었던 겁니다. 그래서 로지스틱 회귀에 대한 기본적인 공부를 우선 마친 후에 다시 신경망에 대한 학습에 임한 결과 이번에는 훨씬 더 쉽게 이해할 수 있었습니다.

3단계: 뭔가 만들어 본다

1단계와 2단계는 절대 건너 뛸 수 없는것 이지만 사실은 3단계를 위한 디딤돌에 지나지 않습니다. 새로운 기술을 배우고 싶다는 것은 그 기술로 뭔가를 만든다는 것 입니다. 드디어 이번 단계에서 이러한 목적을 실행에 옮깁니다.

스스로 새로운 뭔가를 만들 수 있게 되었다면 즉시 있는 힘껏 부딧쳐 봅시다.

왜냐구요? 실제로 무언가를 만드는 것이야 말로 진정한 의미에서의 배움의 완성이기 때문입니다.

기술을 배우고 나서도 무언가를 만들지 않는다면 그건 진정한 배움이라 할 수 없습니다.

1단계와 2단계는 대충 넘길 수 있지만 3단계는 그럴 수가 없습니다. (여기서 말하는 만들기는 단순히 코드를 복사하고 붙여넣기가 아닙니다)

만들것은 평소에 관심을 가지고 있는것과 연결 시키는 것이 좋습니다. 예를들면, HTML과 CSS를 배우는 와인 애호가라면 와인 시음에 대한 웹사이트의 프로토 타입을 만들어보면 좋을겁니다. 머신러닝에 대해 배우고자 하는 의사라면 건강관련 데이터세트부터 시작해 보는것이 어떨까요?

제가 초기에 수행한 프로젝트에서는 다음과 같은 것을 만들었습니다.
어디가서 자랑할 수준은 아니지만 저에게는 많은 공부가 되었습니다.



제가 만든 최초의 Ajax프로젝트 입니다. 2014년 초순경에 Founders&Coders 팀으로서 구축에 참여하였습니다.

마지막으로 말씀드리고 싶은것은, 위에서 언급한 3단계는 때때로 얽혀 있기도 하여, 이 기사에서 적은것 처럼 순차적으로 진행되기만 하는것은 아니라는 점 입니다.

저는 반드시 1단계부터 시작해 3단계로 마무리를 하지만, 학습 도중 이전 단계로 돌아가는 일도 자주 있습니다.

중요한것은 이 세 단계가 각각 새로운 기술을 배우는 것 만큼이나 중요한 요소라는 사실 입니다.

여러분의 성공을 기원합니다!

역주: 혹시 이 기사가 마음에 드신다면 원문으로 가셔서 하트(미디엄의 좋아요)를 꼭 눌러 주시기 바랍니다. 그리고 영어가 되신다면 댓글도 남겨주신다면 고맙겠습니다. ^_^

댓글 4개:

  1. Nice & Informative Blog !
    you may encounter various issues in QuickBooks that can create an unwanted interruption in your work. To alter such problems, call us at QuickBooks Customer Service Number 1-855-974-6537 and get immediate technical services for QuickBooks in less time.

    답글삭제
  2. Nice Blog !
    Our experts at QuickBooks Phone Number work hard to meet our customer needs during the economic crisis.

    답글삭제
  3. Thank you very much for your great information. It really makes me happy and I am satisfied with the arrangement of your post. If you face any QuickBooks Error, you may Contact:QuickBooks Support phone numberFor solution.

    답글삭제
  4. Thank you very much for your great information. It really makes me happy and I am satisfied with the arrangement of your post. If you face any QuickBooks Error, you may Contact:QuickBooks Support phone numberFor solution.

    답글삭제