왜 책으로 공부하나?

  • 책으로 공부하는 것이 가장 중요.
  • 유튜브로 공부해서 학습에 성공한 적이 없었다.
  • 블로그, 웹 문서 등은 대체로 공부하는 기분만 든다.

To do 리스트관리

  • 나는 vimwiki 를 쓴다.
  • loal wiki 에 todo.md 파일을 만든다.
    • 읽고 있는 책의 모든 챕터를 체크 리스트 형태로 만든다.
    • 챕터를 읽을 때마다 완료 표시를 한다.
    • 체크해가는 재미가 있어 책을 매일 읽게 된다.
    • 체크리스트가 있어 하루에 3~6 권의 책을 야금야금 읽는 것도 가능하다.

책으로 어떻게 공부하나?

  • 책을 다 읽으면 책의 "제목"을 기록한다.
  • 중요한 책이라면 챕터별로 markdown 파일에 메모하며 공부한다.
  • 책에서 제너럴한 주제를 다루는 인상적인(흥미있는) 부분을 발견하면 새로운 markdown 파일을 만들고, 해당 주제를 제목으로 달아둔다.
    • 인상적인 부분을 메모해 둔다.
    • 블로그로 발행한다.
    • 다른 책을 읽다가 추가할 만한 정보를 얻으면 파일을 업데이트한다.
    • 시간이 흐르며 해당 주제의 글이 풍부해지게 된다.

모르는 것을 발견하면

  • 그 책 안에서 해결하지 못한 모르는 것은 반드시 기록해 둔다.
    • 이 정보가 쌓이면 내가 어떤 영역을 얼마나 모르는지 알 수 있다.
  • 조사해서 짧게 기록해 둔다.
    • 관련 책을 장바구니에 넣어둔다. (바로 구매하지는 않는다)

여러 책을 함께 읽기

  • 두꺼운 책을 읽으면 몇 달이고 공부가 끝나지 않아 지겨움을 느끼고 의욕을 잃게 된다.
  • 여러 책을 동시에 공부하면 그나마 덜 지겹게 학습할 수 있다.
  1. 요즘 읽고 있는 책들 중 하나를 고른다.
  2. 1~2개 챕터를 공부하고, 다이어리 또는 체크리스트에 기록한다.
  3. 책을 책장에 꽂는다.
  4. 요즘 읽고 있는 책들 중 방금 읽은 책 말고 다른 책 하나를 고른다.
  5. 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 문법 등도 언어별로 똑같이 자동완성이 되도록 만들면 된다.

이렇게 하면 사용하는 언어가 달라도 비슷한 키 입력으로 같은 일을 할 수 있다.