개발자가 기술을 익히는 방법에는 여러가지가 있다. 책 보기, 인터넷 강의 보기, 프로그램 만들어보기 등등. 나도 여러 방법으로 기술을 익혀보았고 실패도 해보았다. 새로운 방법을 찾기 위해 "커리어 스킬"의 저자가 추천하는 방식을 알아본다.
빠르게 기술을 익히는 절차
추천하는 기본적인 절차는 다음과 같다. 우선 무엇을 배울것인지에 대해 알아본다. 그 후 범위가 어떻게 되는지 알아본다. 학습하고자 하는 기술의 큰 그림을 살피고 나서 자신이 학습가능한 분량으로 나누는 것이다. 목표가 있는 것도 중요하다. 어떤 기술을 배울 때 "이거 요새 많이 사용한데" 라고 하는 것은 큰 목적이 될 수 없다. 내가 왜 그것을 배우고 싶은지를 확실히 정해야 한다. 또한 어떤 수준을 원하는지 측정 가능한 목표를 세워야 한다. 내가 어디까지 배워야 기술을 아는 상태라고 이야기할 수 있는 측정치가 필요하다. 이것이 없으면 중간에 지치기 쉽다. 기준이 정해지면 학습에 필요한 자료를 수집한다. 이 때에는 참고 도서 한 권을 독파하는 방식보다 책과 블로그, 동영상 강좌뿐 아니라 팟캐스트, 잡지 및 전문가의 의견 등의 다양한 형태를 살펴보는 것을 추천한다. 수집한 자료를 통해 계획을 새우고 학습 절차를 만든다. 학습 계획을 모듈 단위로 세우면 직접 실습에 빨리 돌입해볼 수도 있고 경험을 통해 배우는 방식이 가능하다. 실습과정 중에 생겨나는 호기심이 자연스럽게 학습단계로 이어지는 것을 더 추천한다. 그냥 단계별로 진행할 때보다 호기심이 있는 상태에서 학습을 하다보면 중요한 부분이 어디인지 알아보기도 더 쉽다. 마지막으로 이해하고 학습한 내용을 남에게 가르치는 단계를 가진다. 꼭 어떠한 "사람"에게 가르쳐야 한다는 것이 아니다. 누군가에게 가르친다는 느낌으로 준비하다보면 자신이 부족한 부분이 어디인지 알아보기 쉽다.
경험으로 배우자
프로그램 언어나 기술을 학습하다보면 항상 생각되는 부분이 있다. 지나면 까먹고, 비슷한 것은 너무 많다는 것. 이럴 때마다 다시 책을 찾아보고 학습을 시작하는 것보다 그런 경험들이 쌓여서 배우는 것이 더 많은 것 같다. 아무리 책을 많이 읽고 동영상 강의를 보아도 거기서 학습할 수 있는 내용은 표면적인 부분일 것이다. 실제 그 기술을 활용하여 어떠한 문제를 해결해보아야 제대로된 배움이 될 수 있다. 문법을 읽는것 만으로 제대로 언어를 사용할 수는 없다. 반드시 실습의 단계를 거쳐야 한다. 경험으로 배우기 전에도 생각해볼 문제가 있다. 배우고자 하는 기술이 자신에게 도움이 되는 것인지 먼저 확인해야 한다. 당장 필요한 기술이 아니라면 정말 배워야 하는 필요성이 있는지 생각해봐야 한다. 당장 필요하다면 배워야한다는 목표가 있기 때문에 훨씬 쉽게 배울 수 있다. 예를 들어 관계형 데이터베이스 학습 단계를 살펴본다. 자료를 읽고 쿼리 몇 개를 실행해보는 실습 정도를 하게 되면 어느정도의 학습 효과를 누릴 수 있다. 그런데 만약 자신이 가지고 있는 영화의 목록을 데이터베이스에 저장한다고 하면 어떨까? 데이터베이스에 영화 목록을 저장하고, 조회하고, 수정하고, 삭제할 수 있도록 하는것이 목표라면? 더 나아가 이를 활용한 애플리케이션을 만드는 것이 목표라면? 이를 위한 방법을 찾고 실습까지 진행하게 될 수 있다. 이렇게 배운 기술은 더욱 재미있게 기술을 익힐 수 있도록 도와줄 것이다.
가르치며 배우자
앞서 다른 이들에게 기술을 가르치면 더욱 배움의 효과가 크다고 하였다. 그런데 남에게 기술을 가르쳐줄 때도 중요한 것이 있다. 자신이 기술을 배운 때와 마찬가지로 이 기술로 무엇을 할 수 있는지에 대한 큰 그림이 우선이다. 그 기술의 활용법이나 문제가 무엇인지 알 수 없으면 검색조차 할 수 없다. 때문에 그 기술로 무엇을 할 수 있는지의 개요부터 가르치는 것이 좋다. 전체적인 부분을 표면적인 수준까지만 훑어볼 수 있도록 한다. 언어를 가르치다면 언어가 가지고 있는 역사 및 어떻게 쓰이게 되는지에 대해 간략히 알려준다. 또한 언어의 구성 요소들과 특징이 어떤 것이 있는지 가르친다. 그 언어의 고유한 특징이 있다면 거기에 집중한다. 해당 언어에서 주로 사용되는 라이브러리가 있다면 그것도 소개하면서 어떤 작업에 활용될 수 있는지 알려준다. 이 때 세부적인 것이 아니라 전체적인 부분을 완벽하게 알려주는 것이 핵심이다. 또한 모르고 있는 것이 무엇인지 깨닫는 것이 목표이다. 큰 그림을 가르치고 나면 어떻게 시작하면 좋을지를 가르쳐야 한다. 파일을 다운로드하고, 설치하고, 프로젝트를 만들고, 코드를 컴파일하는 등의 일련의 과정을 가르친다. 또한 여기에도 파레토의 법칙이 활용될 수 있다. 우리는 어떤 기술에서 20퍼센트의 내용을 80퍼센트에 사용할 것이다. 관계형 데이터베이스를 예로 든다면 참고 도서들에서는 insert, select, update, delete, indexing 등의 내용을 모두 동일한 비중으로 다룬다. 하지만 실제 사용하게 되는 기술에서는 select 문이 80퍼센트를 차지하게 된다. 이러한 내용까지 가르치기 위해 실제로 해보며 익히는 것이 도움이 된다. 그리고 이런 것을 가르치면 수강생에게도 큰 도움이 될 수밖에 없다.
댓글