TIL(Today I Learned)

TIL
TIL은 2021년부터 사용하고 있는, 학습한 내용을 마크다운 형식으로 정리해서 올리는 깃헙 프로젝트이다.
처음에는 단순히 배운 내용을 정리하는 용도로 사용했는데, 더 효율적으로 학습할 수 있는 도구로 사용하면 좋지 않을까? 해서 이런저런 고도화를 해 보고 있다.
왜 하는가?
나는 배운 내용은 무조건 글로 정리하는 편이다. 머릿속에 얽혀 있는 지식을 내 언어로 한 번 정제해야 더 기억에도 오래 남고, 나중에 복기해서 다시 뇌에 담기에도 좋기 때문이다.
처음에는 이 목적으로 블로그를 썼었는데, 블로그를 운영하다 보니 단순히 새로 알게 된 지식을 블로그에 포스팅하는 것이 과연 영양가가 있는가? 하는 고민이 들었다. 지식의 습득은 공식 문서나 도서가 더 효율적이고, 나 또한 새로운 지식을 학습할 때에는 블로그 글보다는 이런 문서들을 더 많이 참고하기 때문이다.
그래서 블로그는 학습 내용 정리보다는 기술적 경험이나 노하우를 공유하기 위해 사용하고 있고, TIL은 학습한 내용을 데이터베이스화 하는 용도로 관리하고 있다.
굳이 학습 내용을 Git으로 관리하는 이유는, 변경 추적 용이성과 GitHub Action 기반 자동화의 이점 때문이다.
물론 요즘에는 문서 관리 서비스들에도 이런저런 좋은 자동화 도구들이 많이 도입되고 있지만, 여전히 이만큼 개발자 친화적으로 커스터마이징하기 좋은 도구는 없는 것 같다. (있는데 내가 모르는 걸 수도? 있다면 추천 환영)
1차 고도화: 목차 자동 생성
GitHub은 문서 뷰어 서비스가 아니다
가장 먼저, 2023년에 1차 고도화를 진행했었다. 이 내용도 블로그에 정리했었기 때문에 첨부한다.
TIL 자동화 도전기 🤓
Introduction 나는 2021년 12월 무렵부터 TIL(Today I Learned) 이라는 Github Repository를 관리하고 있다. 기술 블로그를 따로 운영함에도, 학습 내용을 TIL에 정리하게 된 이유는 다음과 같다. 블로그에는 잘 정
devpanpan.tistory.com
1차 고도화의 진행 목적은 가독성 향상이었다. Git과 GitHub는 코드 저장소인 만큼 변경 관리에는 용이했으나, 문서를 찾거나 다시 읽을 때 가독성이 항상 아쉬웠기 때문이다.
그래서 이때 집중했던 것은 작성했던 문서들을 예쁘게 리스팅해서 가독성을 개선하고, 원하는 정보에 빠르게 접근할 수 있도록 하는 것이었다.
이를 위해 목차 자동 생성기를 만들고, GitBook도 적용해서(https://yihyuns-gitbook.gitbook.io/today-i-learned) 내가 작성한 문서들을 더 예쁘고 쉽게 확인할 수 있도록 했다.
어떻게 구현했는지는 이전 블로그 글에 적혀있으니, 구현에 대한 자세한 내용은 생략한다.
2차 고도화: AI Reviewer
AI가 내 학습 내용을 리뷰해준다면
이전부터 나는 unknown unknown 영역을 어떻게 넓혀 나갈 것인가에 대한 고민이 많았다. 그래서 최근에는 학습을 할 때 정리한 내용을 들고 AI 어시스턴트를 찾아가 학습 내용을 공유하며 ‘틀린 점은 없는지’, ‘추가로 학습하면 좋을 것이 있는지’ 등을 물어보고 조사하곤 했다.
이 방식을 지금까지 쭉 사용하다가, 아예 새로운 TIL을 업로드했을 때 위 질의응답을 자동으로 수행해주면 더 효율적이지 않을까? 싶은 마음이 들어 만들게 된 것이 바로 이 AI Reviewer이다.
AI Reviewer는 학습 내용을 push하고 나면 아래와 같이 학습에 대한 리뷰 리포트를 GitHub Issue로 만들어 발행해주는 친구이다.


이 AI Reviewer를 통해 학습 내용 중 틀렸거나 보완이 필요한 지식이 있는지 검토하고, 모르는 영역을 확장해 나갈 수 있게 되었고, TIL은 단순히 배운 내용을 정리하는 곳을 넘어 AI 멘토와 내가 학습한 내용을 점검하고 다음 학습 플랜을 세울 수 있는 공간이 되었다.
그리고 정말 내 학습을 검토해주는 멘토가 생긴 느낌이어서 약간의 TIL 작성 동기부여 효과도 있었다. 요즘 정말 작성하기 귀찮아서 미루곤 했는데 이 내용에는 어떤 리포트를 줄까 기대하는 마음으로 하나씩 업로드 해보고 있다.
어떻게 구현했는가
AI Review 파이프라인은 아래와 같은 플로우로 동작한다.
- GitHub Action을 통해 main 브랜치에 새 커밋이 푸시되면 AI 리뷰어 Python 스크립트를 실행한다.
- Python 스크립트는 변경 내역 중 신규 생성된 마크다운이 있으면 새 학습 내용으로 간주하고 마크다운 내용을 읽어 적절한 프롬프트와 함께 LLM API 호출하여 정해진 양식대로 리뷰를 작성하도록 한다.
- 리뷰가 작성되면 리뷰 내용을 깃헙 이슈로 생성한다.
자세한 구현 내용은 아래 저장소의 워크플로우 파일과 스크립트 파일을 참고하면 된다!
3차 고도화: 주간 퀴즈 & 월간 리포트
주간 퀴즈로 지식 인출하기
학습 내용을 기록하는 것 좋지만, 점점 TIL이 쌓여갈 수록 드는 생각은 ‘나는 과연 여기 기록한 내용 중 과연 얼마나 기억하고 있을까?’ 였다.
아마도 휘발된 지식이 거의 대부분일 것 같았다. 오래 운영하기도 했고 많은 내용을 정리했기 때문이다.
배운 내용을 아예 잊지 않는 것은 불가능하겠지만, 최근에 뇌과학 서적이나 효율적 학습법에 대한 서적들을 읽으며 체감한 것은 지식의 ‘인출 과정’의 중요성이었다. 이 인출 과정이라는 것은 학습한 내용을 보지 않고 떠올리려고 애쓰는 과정에서 지식들이 장기기억화 되는 과정을 말한다.
이 TIL에 작성한 학습 내용들도 인출 과정을 거치면 더 오래 기억에 남지 않을까? 어떻게 자연스럽게 인출을 유도할 수 있을까를 고민하다가 도입하게 된게 바로 이 주간 퀴즈 자동 생성기이다.
이 기능은 말그대로, 한 주의 학습 내용들을 참고해 퀴즈를 만들어주고, 이 퀴즈를 풀기 위해 배운 내용을 떠올리는 것을 의도한다. 주간 퀴즈는 마치 구독한 저널처럼 내 메일로 수신받고 있다.

월간 리포트
회사 업무에 치여, 논다고 바빠서, 기타 등등의 이유로 점점 작성하지 않게 되고 방치되는 TIL을 보며, 그간 지속가능성에 대한 고민도 많이 해왔다.
최근에 읽은 책에서 얻은 인사이트 중 하나가 성과를 눈에 보이게 해야 지속가능한 힘을 얻는다는 것이었는데, 이걸 TIL에도 도입하면 좋겠다 싶어 추가한 기능이 바로 이 월간 리포트이다.

현재는 시범 운영 상태로 (처참한 결과물) 한달 간 작성한 TIL 개수와 학습 내용을 간단하게 요약한 내용 정도만 받고 있는데, 추후 캘린더 형태로 한달 중 TIL을 언제언제 작성했는지 볼 수 있게 하거나, 학습 내용을 토대로 내가 이번 달에는 어느 분야에 관심을 가졌는지를 분석하거나 하는 내용을 추가해 봐도 좋을 것 같다.
어떻게 구현했는가
- cron 스케줄링 트리거를 포함한 GitHub 워크플로우를 추가하여 주간 퀴즈는 매주 월요일, 월간 리포트는 매월 1일에 자동 호출한다. 각각의 워크플로우는 지난 주/지난 달의 커밋 내역을 읽어 온다.
- Python 스크립트 통해 커밋 내역들 중 마크다운인 것들만 추려서, AI 리뷰어와 마찬가지로 적절한 프롬프트와 함께 LLM API를 호출한다.
- 다만 주간 퀴즈/월간 리포트는 깃헙 이슈보다는 이메일로 받는 편이 더 출근길에 받아 보기 좋다고 생각했기 때문에, SMTP 프로토콜을 통해 내 Gmail로 전송하고 있다.
- 그리고 GMail로 전송할 때 예쁘게 보내기 위해, 미리 html 템플릿을 정의해두고 API 호출 결과로 받아온 내용을 여기에 끼워서 전송하고 있다.
마찬가지로 자세한 구현 내용은 아래 저장소의 워크플로우 파일과 스크립트 파일을 참고하면 된다,
앞으로는 어떤 개선을 할까?
더 잘 기억하기 위한 도구
내가 알고있는 4가지 장기기억화 방법은 다음과 같다.
- 인출하기 — 보고 읽는게 아니라 안 보고 떠올려보기
- 간격을 두고 복습하기 — 1일, 7일, 30일과 같이 간격을 두고 반복 학습하기
- 내 말로 설명하기 — 글로 배운 내용 쓰기
- 알고 있는 것들과 연결하기
3번은 TIL을 작성하는 행위 자체에서 달성하게 되며, 이번 고도화를 통해 1번도 달성할 수 있게 되었다.
2번과 4번을 어떻게 할 것인지? 사실 2번은 단순히 리마인더 추가 정도로도 충분히 달성할 수 있으나, 리마인드를 무시하지 않고 읽고싶어지게 만들 방법을 잘 생각해봐야 할 것 같다.
그리고 4번 또한 AI를 통해 달성하기 아주 좋은 주제라고 생각되는데, 현재 TIL 저장소에 있는 데이터와 새로 추가되는 TIL 간 연관성을 분석하여 AI 리뷰를 생성할 때 함께 생성되도록 할 수 있을 듯하다.
생각을 확장하기 위한 도구
할루시네이션은 여전히 해소되지 않은 문제이기 때문에, AI를 통해 단순히 지식 자체를 학습하는 일은 아직 100% 신뢰하기 어려워 보인다. 다만, AI에게 필요한 정보를 수집하도록 시키는 일은 교차 검증을 통해 진위 여부를 파악할 수 있으므로 AI의 강력한 사용 사례가 아닌가 싶다.
그래서 내 학습 내용이나 정리 패턴 등을 분석해서, 학습하는 습관 자체에 개선 포인트를 제공해주도록 한다거나, 다음에 학습하면 좋을 만한 주제를 추천해준다거나 하는 방향으로도 AI를 활용해볼 수 있을 듯하다. 내 생각을 확장하기 위한 정보 수집 도구로 사용하겠다는 건데, 이것 또한 도입하면 학습에 많은 도움이 될 것 같다.