나의 공부 방법
study
책
왜 책으로 공부하나?
- 책으로 공부하는 것이 가장 중요.
- 유튜브로 공부해서 학습에 성공한 적이 없었다.
- 블로그, 웹 문서 등은 대체로 공부하는 기분만 든다.
To do 리스트관리
- 나는 vimwiki 를 쓴다.
- local wiki 에 todo.md 파일을 만든다.
- 읽고 있는 책의 모든 챕터를 체크 리스트 형태로 만든다.
- 챕터를 읽을 때마다 완료 표시를 한다.
- 체크해가는 재미가 있어 책을 매일 읽게 된다.
- 체크리스트가 있어 하루에 3~6 권의 책을 야금야금 읽는 것도 가능하다.
책으로 어떻게 공부하나?
- 책을 다 읽으면 책의 "제목"을 기록한다.
- 중요한 책이라면 챕터별로 markdown 파일에 메모하며 공부한다.
- 책에서 제너럴한 주제를 다루는 인상적인(흥미있는) 부분을 발견하면 새로운 markdown 파일을 만들고, 해당 주제를 제목으로 달아둔다.
- 인상적인 부분을 메모해 둔다.
- 블로그로 발행한다.
- 다른 책을 읽다가 추가할 만한 정보를 얻으면 파일을 업데이트한다.
- 시간이 흐르며 해당 주제의 글이 풍부해지게 된다.
모르는 것을 발견하면
- 그 책 안에서 해결하지 못한 모르는 것은 반드시 기록해 둔다.
- 이 정보가 쌓이면 내가 어떤 영역을 얼마나 모르는지 알 수 있다.
- 조사해서 짧게 기록해 둔다.
- 관련 책을 장바구니에 넣어둔다. (바로 구매하지는 않는다)
여러 책을 함께 읽기
- 두꺼운 책을 읽으면 몇 달이고 공부가 끝나지 않아 지겨움을 느끼고 의욕을 잃게 된다.
- 여러 책을 동시에 공부하면 그나마 덜 지겹게 학습할 수 있다.
- 요즘 읽고 있는 책들 중 하나를 고른다.
- 1~2개 챕터를 공부하고, 다이어리 또는 체크리스트에 기록한다.
- 책을 책장에 꽂는다.
- 요즘 읽고 있는 책들 중 방금 읽은 책 말고 다른 책 하나를 고른다.
- 2로 돌아간다.
- 이렇게 하면 일정 기간이 지나게 되었을 때 책이 줄줄이 끝나서 큰 희열을 느낄 수 있다.
- 시분할로 책을 읽는 셈이니 집중력 조절을 할 수 있도록 분량을 잘 조절해야 한다.
공부하기 싫은 책이라면?
- 하기 싫은 공부는 일단 미뤄둔다.
- 그거 말고도 공부할 게 쌓여있다.
- 공부하기 싫은 이유를 생각해보고, 기록을 남겨둔다.
- 이유 목록을 가끔 보면서 이유를 갱신하거나, 미뤄둔 공부를 시작하기로 한다.
프로그래밍
나만의 snippet 파일을 만들자
vim에서 쓸 해당 언어의 자동완성 snippet 파일을 만든다.
특히 새로운 언어/프레임워크를 공부할 때 유용하다.
- 왜 snippet 파일을 만들까?
- 내 손에 맞는 자동완성 도구를 내 손으로 만드는 즐거움.
- snippet 파일이 일종의 cheatsheet 가 되어 학습에 꽤 도움이 된다.
- 뭔가 생각이 안 날 땐 snippet 파일을 보면 대강 생각이 난다.
- 도구를 만들며 학습하는 것은 재미있어서 빠져들게 된다.
날마다 조금씩
- 한 번에 snippet 파일 전체를 완성하면 안 된다.
- 해당 언어로 코딩을 하면서 날마다 아주 조금씩 채워가도록 한다.
예를 들어 변수 선언법을 알게 되면 변수 선언을 의미하는 snippet 을 추가한다.
for 문의 사용법을 알게 되면 for 문을 의미하는 snippet 을 추가한다.
나만의 일관된 키워드로 자동완성이 되게 한다
가령 go 의 경우 v 를 쓰고 tab 을 누르면 다음의 형태로 자동완성된다.
var := value
이 snippet 은 다음과 같이 만들었다. 탭 키를 누를 때마다 $1, $2, $3 으로 이동한다.
# 변수 선언
snippet v "var := value"
${1:var} := ${2:value}
${3}
endsnippet
한편 php 에서는 v 를 쓰고 tab 을 누르면 다음과 같이 자동완성된다.
$var = value;
snippet 은 다음과 같다.
# 변수 선언
snippet v "$var = value;"
$${1:var} := ${2:value};
${3}
endsnippet
- var 를 수정하고 탭을 누르면 value 로 커서가 이동해 수정할 수 있다.
:=
나$
,;
를 입력하는 귀찮음을 피할 수 있어 즐겁다.if
,for
,class
문법 등도 언어별로 똑같이 자동완성이 되도록 만들면 된다.
이렇게 하면 사용하는 언어가 달라도 비슷한 키 입력으로 같은 일을 할 수 있다.