오랫동안 블로그에 글을 쓰지 않았다. 언제부턴가 의무감에 한 달동안 알게 된 지식을 정리하는 정도의 포스트만 하다가 그조차도 필요 없다고 느껴져 그만 두고 말았다.
그렇게 세월은 흘러 약 3년의 시간이 지났고, 가끔씩 블로그를 방치해두는 것이 신경 쓰이긴 했지만 크게 아쉽진 않았다. 왜냐면 나름대로 개인의 생각을 정리하는 시스템이 고도화되었기 때문이다. 거기에 더해 글을 작성해서 공개할 만큼 내가 공개 지식을 생산할 만한 가치가 없다고 생각하기도 했다. 다시 생각해 보면 아주 거만한 생각이다.
왜냐면 블로그라는 것 자체가 내가 익힌 것, 감명받은 것을 공개된 공간에 올리고 지나가다 살펴보는 누군가에게 조금이라도 도움이 되라고 올린 것이기 때문이다. 그 본질을 잊고 나 자신이 뭐라도 된 것 마냥 포스트를 작성하는데 주저하고 말았다.
그래서 오랜만에 글을 작성하면서 그간 어떤 방식으로 학습을 해 왔는지 그러면서 무엇이 아쉬웠는지 이야기를 해 보고, 앞으로는 어떻게 해 보려 하는지 가볍게 털어내보려 한다. 인지과학이나 통계 등을 들어서 설명하는 더 전문적인 글도 있겠지만 어디까지나 나 자신의 경험에 비추어 이야기하고자 한다.
생각을 정리하기 시작하다
내가 개발자로서 일을 하면서, 요구사항을 구현하기 위한 모든 지식을 사전에 알고 어떠한 검색도 하지 않고 기능을 완벽하게 구현해 내는 경우는 극히 드물었다. Stack Overflow에서 검색을 하기도 하고 누군가에게 암묵지를 전달받기도 하고, GitHub에서 내가 만들고 싶은 것과 유사한 구현체의 소스 코드를 분석하는 등 많은 자료를 끼고 살아야 했다.
구현을 하면서 퀄리티를 끌어올리기 위해, 혹은 구현에 걸리는 시간을 단축하기 위해 경험이나 지식을 쌓아두어야 할 필요가 있다. 이럴 때 간접적으로 경험을 쌓을 수 있는 수단은 책, 비디오, 강의, 웹 아티클 등이 있다.
이런 지식들은 어디에 적어놓지 않고 한 번 접하고 나의 것이 되게 만들려면 같은 내용을 자주 많이 접해야 할 것이다. 하지만 현실적으로 그러기엔 시간이 부족하고, 우리가 접해야 하는 맥락은 아주 많기 때문에 하나의 맥락만 계속 반복적으로 들여다볼 수도 없다.
그래서 지식 습득에 걸리는 시간을 단축하기 위해, 혹은 다른 이유로 ‘개발자로서 본인이 학습한 내용을 기록하고 정리를 하라’는 말을 많이 접해보았을 것이다.
개발자는 지식노동자이니만큼 본인의 자본은 지식이 된다. 이 지식을 적재적소에 활용하는 능력이 있는 사람은 조직 안에서 가치를 인정받을 확률이 높다. (지식뿐 아니라 다른 역량도 더러 필요하다고 생각하지만 이번 글의 주제를 벗어난다.)
나는 모든 것을 보자마자 완벽히 기억할 수 있는 능력이 없어서 대안을 찾기로 했다. 내가 익힌 것을 어디에 기록하고 기록을 쉽게 찾아볼 수 있도록 머릿속에 인덱싱하기 시작한 것이다.
노트 정리를 통한 인덱싱
’노트 정리를 하는 것’ 자체가 중요하지 어떤 도구를 쓰던지 상관없는 것 아닌가 하는 의문이 들 때도 있었지만 지식이 점점 쌓이기 시작하면서 쌓인 지식을 인덱싱하는 방법도 중요하다는 것을 깨닫기 시작했다.
만약 내가 어떤 기능을 구현해야 한다고 할 때, 그 기능을 구현하기 위해 머릿속에서 연관된 키워드를 꺼내게 될 것이다. 어차피 해당 키워드의 상세한 내용은 다 기억할 수 없다. 하지만 키워드에 따라 내가 정리해 둔 노트를 어떻게 검색해야 할지 알고 있다면, 그리고 그 노트 안에 연관 자료 링크 등이 첨부되어 있다면 매번 검색 엔진을 통해 검색해야 하는 수고를 크게 줄일 수 있다. 또한 이 과정이 반복될수록 어렴풋이 키워드만 떠오르던 지식은 점점 나의 경험으로 녹아들어 더 자연스럽게 특정 지식을 다룰 수 있게 되었다.
여기서 말하는 지식은 개발 지식에만 한정되는 것이 아니라 업무를 하면서 업무와 연관된 도메인 지식이라던가(개발 지식과 더불어 아주 중요하다), 어떤 형태로든 ‘어제보다 더 나은 나’를 만드는 데 도움이 되는 지식을 모두 망라한다.
몇 년 전까지는 습득한 지식을 인덱싱할 때 별도의 과정이 크게 필요하지 않았다. 어떤 형태로 작성하던지 대충 검색하여 그 결과가 표시되기만 하면 되었다. 그래서 처음에는 회사에서 지급받은 노랑 공책에 되는대로 적고 그날그날 적은 내용을 들여다보다 커리어 초기부터 기록을 디지털화하기 시작했다.
기록을 디지털화하면서 처음에는 nvALT라는 도구를 사용하여 뭐라도 기록하기 시작했다. 이후 Simplenote를 써 보기도 하다 Bear라는 노트 앱과 사랑에 빠졌다.
인덱싱의 한계, 그리고 모던(?) 노트 앱
Bear는 미려하고 빠릿한데다 마크다운 기반 노트 작성이 가능하여 몇 년 동안 큰 불만 없이 잘 써왔다. 그러던 중 매월 TIL(Today I Learned)을 모아 정리하는 포스트를 만들 때마다 불편함을 느끼기 시작했다. 주제에 따라 어디서나 태그를 달 수 있었지만, 태그를 관리하는 게 점점 어려워졌다. 그리고 그 태그를 기반으로 정보를 의미 있게 찾아보는 것도 편하지 못했다. 분명 더 나은 요령이 있었겠지만 여러 가지 삽질을 해본 나에게 크게 두 가지가 아쉽다는 것을 깨달았다.
- 서로 연관 있는 정보를 위키처럼 손쉽게 왔다 갔다 할 수 있으면 좋겠다(Backlinking). 그런데 이 작업을 수동으로 해야 한다.
- 내가 원하는 키워드의 정보를 더 쉽게 찾고, 그 콘텐츠의 내용을 보는데 들어가는 시간과 노력을 최소화하고 싶다.
그러다 2021년 즈음부터 접하게 된 것이 Roam Research, Obsidian같은 모던(?) 노트 앱이다. 아까 위키라는 말을 언급했는데, 내가 쌓고 인덱싱하는 지식은 단순히 노트 형태로 남기보다 위키 형태로 연결 관계가 형성될 수록 새로운 지식을 쌓아 확장하기 쉽다는 사실을 깨닫게 되었다.
그로 인해 제텔카스텐이라는 용어까지 접하게 되었지만 깊이 들여다보진 않았다. 여태까지 목적은 등한시한 채 수단을 발전시키는데 의미 없는 시간을 많이 투자했었기 때문이다. 내 목적은 ‘내가 익히는 지식을 찾기 쉽고 확장 가능하기 쉬운 체계를 만드는 것’ 이지, 그 수단인 ‘XX 노트를 잘 쓰기 혹은 제텔카스텐을 잘 하는 것’ 같은게 아니기 때문이다.
그래서 이번 글에는 Obsidian 같은 이미 유명한 노트 앱에 대한 소개는 하지 않으려 한다. 지금은 업무용 기기에서는 Obsidian, 개인용 기기에서는 Logseq을 사용하고 있지만 내가 두 도구를 사용하는 방법은 거의 동일하다. 이 글에서는 내 나름의 ‘본질적인 사용법’에 대해 조금 더 이야기를 해보려 한다.
2024년 나의 생각 정리법
굳이 소개를 하기에도 부끄러울 정도로 단순하지만, 이번에 글을 작성하면서 나 자신의 생각 정리 흐름을 되짚어보고 싶어졌다. 어떻게 설명해야 할까 조금 고민했는데, Reflect라는 노트 앱의 튜토리얼에서 내가 하고 싶었던 말을 대부분 담아내고 있어 참고하기 좋았다. 이 튜토리얼 시리즈에서 핵심적인 내용을 발췌한다면 아래와 같다.
기본 원칙
부드러움
- 생각을 노트에 기록하는 과정에서 마찰은 최소화되어야 한다.
- 노트 작성 도구는 신속하고, 직관적이어야 하며, 복잡한 생각을 할 필요가 없어야 한다.
- 특히 폴더나 파일 구조 등은 노트 작성 프로세스를 방해할 수 있다.
오로지 덧붙이기만
- 새로운 정보가 생길 때마다 기존 노트를 수정하는 게 아니라 추가해야 한다. 이 방법은 사람의 기억이작동하는 방식과 유사하다. 우리는 과거의 기억을 수정하는게 아니라 새로운 기억을 쌓아나가기 때문이다.
- 노트의 수정 이력을 쌓는 가장 편리한 방법은 일일 저널링을 활용하는 것이다.
상호 참조 (Backlinking)
- 기억은 연상을 통해 작동하므로, 노트끼리 서로 참조(백링크)를 만드는 것으로 유사한 구조를 만들 수 있다.
- 일반적으로 모든 엔티티(사람 이름, 위치, 회사 등)는 백링크하는 것이 좋다. (영어 기준으로) 대문자로 시작하는 경우, 백링크하라.
- 즉 어떤 용어나 개념, 등 특정 명사로 지칭할 수 있는 모든 것은 백 링크하는 게 좋다.
시간과 공간을 연결한다
- 물리적 공간(노트)과 날짜는 기억을 형성하고 회상하는데 중요한 요소이다. 우리는 어느정도 기억과 시간을 연관시키기 때문에 이 둘을 쉽게 연결할 수 있는 시스템이 있으면 좋을 것이다.
- 일일 저널링을 통해 노트를 날짜와 연결할 수 있다.
‘왜’ 를 포함하라
무엇을 알게 되었는지, 무엇을 했는지 기록하는 것 뿐 아니라 그 당시의 동기와 감정도 같이 기록하는 것이 유용하다. 이를 통해 편항된 시각을 갖는 것을 억제한다.
일일 저널링
TV 드라마 “Billions” 의 제작자 Brian Koppelman은 매일 아침 “Morning Pages”라는 3페이지의 자유 노트를 작성한다.
”당신은 정말 이걸 종이에 적는 것뿐입니다. 잠재의식을 내려놓는 것이죠. 이렇게 함으로써 창의성을 방해하는 완벽주의와 두려움에서 벗어날 수 있습니다.”
일일 저널링은 정신 건강에 매우 도움이 된다. 마음에 가득한 걱정, 불안, 할 일 등을 해소하는 데 도움을 준다고 한다.
일일 저널링을 지원하는 노트 앱을 활용하면 하루의 모든 노트, 미팅 내용, 리서치 등을 하나의 일일 노트에 누적할 수 있다. 직접 매일 일기 페이지를 생성할 수도 있겠지만 노트의 체계 자체가 ‘일일 저널링을 쓰기 좋게’ 만들어진 앱들을 알아보고 활용할 것을 권장한다.
- Roam Research
- Obsidian
- Logseq
- Tana
- Reflect
- Craft
꾸준한 일일 저널링을 통해 시간과 연계된 노트를 쉽게 작성할 수 있고, 앞서 소개 한 기본 원칙 중 ‘오로지 덧붙이기만’ 원칙을 활용할 수 있다.
노트 링크하기
노트 간 연결을 지원하는 도구를 사용하면 웹에서 링크를 만드는 것과 유사한 방식으로 노트를 연결할 수 있다. 더 구체적으로는 위키에 가깝다.
일반적으로 사람, 장소, 사물같은 ‘개체(Entity)‘를 링크할 대상으로 삼는다. 앞서 언급한 노트 앱을 이용하면 보통 [[
를 타이핑하는 것으로 링크할 노트가 자동완성되며, 아직 페이지가 없는 개체라면 링크를 타고 갈 때 자동으로 노트가 생성된다.
여기서 ‘노트를 자동으로 생성한다’ 는 부분이 나에게는 아주 중요했다. 시간의 흐름에 따라 저널링을 하며 작성을 했던, 어떤 페이지에서 자연스레 연결을 했던, 내가 아직 페이지를 따로 생성하지 않았다 하더라도 특정 개체에 대해 작성했던 내용 조각이 백링크를 통해 한 번에 모여져 볼 수 있기 때문이다.
이런 노트 간 연결은 유연하고 상호 연관된 지식의 데이터베이스를 구축하는데 도움이 된다. 고전적 노트의 작성 방식이 트리 구조라고 한다면(Notion, Evernote), 이런 방식의 노트 작성은 지식의 그래프를 형성하는 것이다.
그렇게 매일의 기록은 쌓여 나만의 지식 데이터베이스가 된다. 그리고 이런 도구에 익숙해지면서 굳이 ‘추가 지식 정제 작업’인 블로그 포스팅을 하지 않게 되었다. 왜냐면 어차피 내가 어찌어찌 기록한 노트의 내용을 복기하거나 더 깊이 파고들면서 내재화한 과정을 기록하기 위하여 블로깅을 했는데, 이미 일일 저널링 + 주간 회고를 통해 스스로와 대화하면서 그 작업이 이루어지기 때문이다.
Learn in Public
개발자가 된 지 초창기 몇 년 동안은 알아야 할 것도 너무 많고 궁금한 것도 많고, 정리하고 글을 작성하는 대로 스스로 얻어 가는 게 많았지만, 최근 3~4년 동안은 본질적인 동기 부여가 잘되지 않았다. 개인적으로 힘든 일도 있었고 매너리즘에 빠져서 그런 것 같기도 하고 여러모로 부족함을 느끼고 있었다.
SNS를 통해 많은 지식을 얻은 만큼 조금이나마 돌려줄 수 있으면 좋겠다는 마음가짐으로 포스트나 트윗을 작성하던 것도 동력을 잃었다.
그러다 요즘에 다시 학습에 불을 붙이고 싶은 계기가 여러 방면으로 다가왔다. 이직을 통해 약간 복잡한 환경 + 팀 빌딩 과정의 한가운데 뛰어들게 되었고, 여기서 내가 개발자로서 새로이 발전을 시도해보기로 마음먹었다.
나 자신의 루틴 및 생각 정리 기법도 조금씩 삐걱거리고 있었기 때문에 이참에 개인 생활도 다듬고 다시 학습에 대한 의욕을 끌어올리기 위한 방법으로 다시 ‘Learn in Public’ 전략을 취하기로 했다.
인용한 블로그의 내용을 간단히 요약하자면 다음과 같다.
- 블로그, 튜토리얼, 강연, 라이브러리 직접 만들기, 클론 코딩 등등 다양한 방식으로 자신의 ‘학습 배출물’을 만들 것을 권장한다. 학습할 때 3개월 전의 자신과 대화하듯 찾았으면 좋겠다고 생각했던 것을 만든다. 그러면 가장 큰 수혜자는 미래의 자신이 될 것이다.
- 일회성 콘텐츠를 만드는 데 지쳤다면 시간이 지남에 따라 성장하는 지속적인 지식 창고를 구축하고 이를 오픈소스로 만들어보라. 모든 단계에서 수행한 작업과 해결한 문제를 문서화하라.
- 잘하기 위해 최선을 다하되 틀리더라도 걱정하지 말고 나아가라. 틀렸을 때는 누군가 바로잡아 줄 수 있고, 그 사람이 나의 멘토가 될 수도 있다. 그러면 그 기회를 잡아 더욱 빨리 성장할 수도 있다.
- 궁극적으로 자신이 공개적으로 학습하고 공유한 것이 다른 사람들에게 도움이 되고, 나아가 금전적인 기회로도 이어질 수 있다.
트위터나 블로그를 거의 하지 않는 동안에도 작은 규모로 ‘Learn in Public’을 실천하고는 있었다. 주로 다니는 회사 안에서 동료들에게 알려주거나 비정기적 발표 세션을 갖기도 했고, 직접 회사 내부에서 강의를 하기도 하면서 내가 알고 있던 지식에 깊이를 더하거나 모르는 부분을 잘 이해하기 위해 노력하기도 했다. 하지만 언제나 약간씩 아쉬움과 부족함을 느꼈다.
생각보다 내가 거쳐간 회사 안에서는 제품이나 기술에 대한 깊은 이야기를 하면서 이를 발전시키기 위한 노력을 함께 하고자 하는 사람의 비중이 높지 않았다. 이런 사람들이 가까이 모여있는 조직을 동경하지만, 그런 조직의 옆에서 다른 일을 하는 정도가 내 커리어의 최선이었다. 언젠가 또 기회가 있겠지.
그렇다면 회사 밖 세상은 어떨까? 이미 뛰어난 사람들이 온라인에서 자신의 의견을 내고 정보를 공유하는 시대인데 굳이 내가 골방에 틀어박혀 있을 이유가 없다.
그렇게 Learn in Public을 통해 최소한 학습에 대한 동기 부여를 끌어올리고, 더 나아가 피드백을 받을 수 있는 범위를 넓혀보기로 했다.