Evergreen Notes: Pisząc notatki, które z czasem rosną w siłę

Notatki, które się rozwijają, a nie ulegają zanikowi.

Page content

Większość notatek inżynierskich jest pisana raz i zapominana. Zapisujesz coś podczas sesji debugowania, wklejasz to gdzieś i znajdujesz ponownie dwa lata później, nie mając pojęcia, dlaczego to kiedykolwiek miało znaczenie.

Problemem nie jest wysiłek. Inżynierowie piszą nieustannie — komentarze w kodzie, wiadomości na Slacku, strony na Confluence, opisy w Jira, wyjaśnienia do pull requestów, diagramy architektury. Problemem jest to, że większość tych notatek jest pisana dla konkretnego momentu i szybko traci wartość. Nie kumulują się. Składają się w stertę.

Notatki evergreen (wiecznozielone) są alternatywą. Pomysł jest prosty: pisz każdą notatkę tak, aby była użyteczna przez nieokreślony czas, ulepszała się przy ponownym przeglądnięciu i łączyła z innymi notatkami w sposób, który sprawia, że cały system z czasem staje się bardziej wartościowy.

Notatki evergreen rosną i łączą się z czasem

Termin ten został spopularyzowany przez badacza Andy’ego Matuschaka, którego własne publiczne notatki demonstrują tę ideę w dużym skali. Dla inżynierów zasób ten ma bezpośrednie zastosowanie w pisaniu technicznym, dokumentacji, decyzjach architektonicznych i długoterminowym przechowywanie ciężko zdobytych lekcji.

Co sprawia, że notatka jest evergreen

Atomowa

Notatka evergreen zawiera jeden pomysł. Nie jeden temat — jeden pomysł.

Notatka zatytułowana „PostgreSQL” nie jest evergreen. To pojemnik czekający na wypełnienie. Notatka zatytułowana „Indeksy cząstkowe redukują obciążenie zapisem, gdy zapytania odnoszą się do małego podzbioru” jest evergreen. Stawia konkretne, przenośne twierdzenie.

Ograniczenie do atomowości jest ważne, ponieważ kontroluje ponowne użycie. Notatka-pojemnik może być linkowana jedynie jako nieokreślony temat. Notatka atomowa może być linkowana wszędzie tam, gdzie stosuje się ten konkretny pomysł — w dyskusji o optymalizacji zapytań, w porównaniu strategii indeksowania, w notatce projektowej dotyczącej konkretnego problemu wydajnościowego.

Samodzielna

Notatka evergreen powinna być zrozumiała bez odwoływania się do jej oryginalnego źródła.

Oznacza to pisanie własnymi słowami. Notatka mówiąca „Zobacz połączony artykuł — dobre treści o cachowaniu” nie jest evergreen. Notatka mówiąca „Cachowanie write-through aktualizuje cache synchronicznie z bazą danych przy każdym zapisie, poprawiając spójność odczytu kosztem wyższej latencji zapisu” jest evergreen. Możesz ją przeczytać rok później, nie goniąc oryginalnego źródła.

To trudniejsze, niż się wydaje. Pisanie samodzielnej notatki wymaga rzeczywistego zrozumienia tego, co przeczytałeś, a nie tylko oznaczenia go tagiem. To właśnie ten etap przetwarzania jest miejscem, gdzie zachodzi większość uczenia się.

Rozwijająca się

Notatki evergreen ulepszają się z czasem, zamiast tracić świeżość.

Notatka ulotna ma cykl życia: piszesz ją, służy ona chwilowo, staje się nieaktualna. Notatka evergreen powinna być warta ponownego odwiedzenia i udoskonalenia sześć miesięcy lub dwa lata później. Możesz dodać kontrprzykład, zaktualizować ją doświadczeniem z produkcji, połączyć z nowym wzorcem lub po prostu przepisać ją precyzyjniej.

Słowo „evergreen” jest celowe: te notatki nie umierają po zbiorach. Przetrwują i się poprawią.

Połączona

Notatki evergreen łączą się z innymi notatkami, zamiast istnieć w izolacji.

Samodzielna notatka o cachowaniu write-through łączy się naturalnie z notatkami o obciążeniach odczytowych, anulowaniu cache, ostatecznej spójności i wydajności zapisu w bazie danych. Każde połączenie czyni obie notatki bardziej użytecznymi — łączność ujawnia kontekst, którego żadna z notatek nie zawiera samodzielnie.

Zwyczaje łączenia są tym, co przekształca kolekcję indywidualnych spostrzeżeń w sieć połączonych zrozumień.

Rodzaje notatek i kiedy używać każdej z nich

Zrozumienie notatek evergreen wymaga zrozumienia tego, czym one nie są.

Notatki ulotne to tymczasowe przechwyty. Linijka notowana podczas sesji debugowania, zakładka do późniejszego powrotu, pytanie do dopilnowania. Notatki ulotne służą chwili. Powinny być szybko przetworzone i albo odrzucone, albo awansowane do czegoś trwalszego. Większość notatek ulotnych nigdy nie staje się notatkami evergreen, i to jest w porządku.

Notatki literaturowe to streszczenia zewnętrznych źródeł — strony dokumentacji, postmortem, rozdziału książki, prezentacji konferencyjnej. Notatki literaturowe zachowują to, co źródło mówiło. Są krokiem w kierunku zrozumienia, a nie samym zrozumieniem. Notatka literaturowa mówi „to źródło twierdzi X”. Notatka evergreen mówi „wierzę w X z tych powodów”.

Notatki evergreen syntetyzują to, co zrozumiałeś. Istnieją na wyjściu procesu uczenia się, nie na wejściu.

Rodzaj notatki Cel Czas trwania Przykład
Ulotna Szybkie przechwytywanie Godziny do dni „Sprawdź, dlaczego vacuum w Postgresie pominął ten wiersz”
Literaturowa Streszczenie źródła Średni termin „Dokumentacja Redis mówi, że domyślne fsync AOF to 1s”
Evergreen Przenośny pomysł Lata „Trwałość fsync-on-write handluje przepustowość za bezpieczeństwo awaryjne”

Pisanie technicznych notatek evergreen

Struktura dobrej technicznej notatki evergreen podąża prostą logiką: twierdzenie, dowód, implikacja.

# Cachowanie write-through poprawia spójność odczytu kosztem latencji zapisu

Cachowanie write-through aktualizuje cache w tym samym czasie co magazyn podstawowy przy każdym zapisie. Każdy odczyt trafiona świeże dane, ponieważ ścieżka zapisu zapewnia spójność przed potwierdzeniem zapisu.

Kompromisem jest latencja zapisu — każdy zapis wymaga teraz dwóch operacji (magazyn i cache) do ukończenia przed otrzymaniem potwierdzenia przez wywołującego.

Ten wzorzec pasuje do obciążeń odczytowych, gdzie zaleganie cache ma realny wpływ biznesowy, taki jak liczenie stanów magazynowych produktów lub ustawienia użytkowników.

Linki:
- [[Cachowanie read-through przenosi zasiedlanie cache na czas odczytu]]
- [[Anulowanie cache jest problemem koordynacji]]
- [[Cachowanie write-behind handluje spójność za przepustowość zapisu]]

Ta notatka jest użyteczna bez źródła. Stawia twierdzenie, wyjaśnia kompromis, daje kontekst, w którym się stosuje, i łączy się z powiązanymi pomysłami.

Czego unikać

Odwołania wrażliwe na czas szybko stają się nieaktualne. „Od Postgres 14, to zachowanie działa w ten sposób” to notatka literaturowa, nie notatka evergreen. Napisz zasadę: „Planista pomija skany indeksu, gdy szacowana liczba wierszy przekracza próg względem rozmiaru tabeli”. To twierdzenie przetrwa zmiany wersji, nawet jeśli próg się zmieni.

Specyficzne dla narzędzia komendy bez kontekstu to fragmenty, nie notatki. Notatka będąca tylko komendą kubectl skopiowaną z odpowiedzi na StackOverflow nie jest evergreen. Notatka o tym, dlaczego ta komenda działa — co za zasób Kubernetesa zmienia i jaki problem rozwiązuje — ma szansę.

Założenia dotyczące wiedzy czytelnika szybko się psują. Pisuj tak, jakbyś tłumaczył kompetentnemu koledze, który nie jest w Twoim bieżącym kontekście.

Dobre kandydaci na notatki evergreen w inżynierii

Prawie każda ciężko zdobyta lekcja o szerokim zastosowaniu jest dobrym kandydatem:

  • Kompromisy architektoniczne i uzasadnienie decyzji
  • Wzory debugowania stosujące się do różnych systemów
  • Zasady projektowania API i ich przypadki brzegowe
  • Charakterystyki wydajnościowe z realnymi liczbami
  • Założenia bezpieczeństwa, które okazały się błędne
  • Lekcje ze strategii testowych z projektów, gdzie podejście zawiodło
  • Ograniczenia wdrożeniowe, które zmieniły sposób pracy zespołu

Wspólny mianownik: na tyle specyficzne, by były działające, na tyle ogólne, by można je było zastosować więcej niż raz.

Praca z notatkami evergreen

Krok 1: Przechwytywanie notatek ulotnych

Przechwytuj szybko, nie nadmiernie analizując. Celem nie jest stworzenie notatki evergreen w danym momencie — celem jest zachowanie surowego materiału do jej stworzenia.

Podczas sesji debugowania:

Odkryłem, że cache zwracał przestarzałe uprawnienia użytkownika po zmianie roli.
TTL wynosił 5 minut, ale aktualizacja roli była natychmiastowa.
Muszę przemyśleć, jak to obsłużyć — anulowanie przy zapisie?
Czy krótszy TTL? Czy aktualizacja oparta na zdarzeniach?

To jest notatka ulotna. Nie jest notatką evergreen, ale zawiera zarodki kilku takich.

Krok 2: Przetwarzanie w notatki evergreen w ciągu 48 godzin

Przetwarzanie to miejsce, gdzie pojawia się wartość. Weź surowy przechwyt i wyciągnij pomysły, które warto zachować.

Z tej notatki debugowania możesz napisać:

# wpisy cache oparte na rolach wymagają anulowania przy zapisie, a nie tylko wygaśnięcia TTL

Gdy dane w cache kodują uprawnienia lub role, wygaśnięcie oparte na TTL nie jest bezpieczne.
Użytkownik, którego rola została obniżona, zachowuje podwyższone uprawnienia do momentu wygaśnięcia TTL.
Anulowanie w czasie zapisu — lub aktualizacje cache oparte na zdarzeniach przy zmianie roli — jest wymagane
dla poprawności w cache wrażliwych na uprawnienia.

Linki:
- [[Anulowanie cache jest problemem koordynacji]]
- [[Decyzje autoryzacyjne nie powinny być cachowane w spoczynku bez walidacji]]

Kontekst debugowania zniknął. Przenośny pomysł pozostał.

Krok 3: Łączenie z istniejącymi notatkami

Po написании notatki poświęć dwie minuty na zadanie sobie pytań:

  • Z jaką istniejącą notatką to się łączy?
  • Od jakiego konceptu to zależy?
  • Co to rozszerza lub zaprzecza?

Dodaj linki w obu kierunkach. Nowa notatka łączy się z istniejącymi. Istniejące notatki, które są teraz bogatsze dzięki połączeniu, linkują się z powrotem.

Krok 4: Odwiedzanie i ulepszanie

Notatki evergreen nie mają jednego poprawnego stanu. Za każdym razem, gdy napotkasz ten pomysł ponownie — w incydencie produkcyjnym, w przeglądzie projektu, w komentarzu do code review — rozważ powrót do notatki i jej ulepszenie.

Możesz:

  • Dodać bardziej konkretny przykład
  • Zaktualizować twierdzenie na podstawie nowych dowodów
  • Usunąć zastrzeżenie, które okazało się nieważne
  • Dodać link do nowej powiązanej notatki
  • Przepisać zdanie otwierające dla jasności

Ten cykl udoskonalania sprawia, że notatki kumulują się, a nie zanikają.

Notatki evergreen i dokumentacja

Istnieje użyteczne rozróżnienie między osobistymi notatkami evergreen a dokumentacją zespołową.

Osobiste notatki evergreen to Twoje zrozumienie, napisane dla przyszłego Ciebie. Mogą być surowe, zdeterminowane i niekompletne. Ich wartość polega na byciu wielokrotnego użytku dla Twojego myślenia.

Dokumentacja zespołowa jest dla wspólnego zrozumienia. Wymaga dokładności, dostępności i odpowiedzialności za utrzymanie.

Te dwie warstwy się uzupełniają. Twoje notatki evergreen o tym, dlaczego system został zaprojektowany w określony sposób, mogą stać się surowym materiałem dla rekordu decyzji architektonicznych. Twoje notatki debugowania mogą zasilać runbook. Twoje notatki projektowania API mogą informować przewodnik stylu.

Kierunek przepływu to zwykle: notatki evergreen → dopracowana dokumentacja, a nie odwrotnie.

Notatki evergreen i systemy RAG

W miarę jak narzędzia do zarządzania wiedzą wspomagane przez AI stają się bardziej praktyczne, dobrze napisane notatki evergreen stają się coraz bardziej wartościowe jako materiał źródłowy do pobierania. Problem pobierania versus reprezentacji w zarządzaniu wiedzą dotyczy w istocie jakości materiału źródłowego — a notatki evergreen, będąc atomowymi, samodzielnymi i napisanymi dla zrozumienia, dobrze się dzielą (chunking) dla wyszukiwania wektorowego.

Zettelkasten atomowych notatek evergreen jest naturalnym fundamentem dla osobistego systemu RAG. Struktura atomowa współgra z rozmiarem chunka do pobierania. Właściwość samodzielności oznacza, że pobrane notatki nie potrzebują dodatkowego kontekstu, by być użyteczne. Struktura łączeń zapewnia możliwości traversingu grafu wykraczające poza wyszukiwanie słów kluczowych.

To staje się coraz bardziej istotne dla inżynierów, którzy chcą zapytać swoją bazę wiedzy za pomocą LLM, zamiast zaczynać od zera za każdym razem.

Częste błędy

Pisanie zbyt szeroko

Notatka obejmująca cały temat nie jest notatką evergreen — jest artykułem w wersji roboczej. Jeśli Twoja notatka jest dłuższa niż pojedeczny ekran i obejmuje więcej niż jedno twierdzenie, podziel ją na mniejsze notatki i połącz je.

Pisanie zbyt wąsko

Notatka zbyt specyficzna dla jednego kontekstu nie ma wartości ponownego użycia. „Naprawiono błąd cache usługi rozliczeniowej 2024-03-14” to wpis dziennika, nie notatka evergreen. Podnieś poziom abstrakcji, dopóki pomysł nie będzie stosował się co najmniej w trzech różnych kontekstach.

Mylenie „evergreen” z „nigdy się nie zmienia”

Evergreen nie oznacza niezmiennego. Oznacza, że notatka pozostaje warta powrotu. Notatka o typach generycznych w Go napisana w 2022 roku nadal jest evergreen, jeśli zaktualizujesz ją, aby odzwierciedlała, jak wzorce ewoluowały w 2024 roku. Notatka, której nigdy nie dotkniesz, bo wierzysz, że jest trwale poprawna, to notatka, która ostatecznie stanie się błędna w ciszy.

Pomijanie kroku przetwarzania

Najczęstsza porażka to traktowanie notatek evergreen jako celu kolekcjonowania, a nie praktyki pisania. Nie możesz wyrosnąć kolekcji wysokiej jakości notatek atomowych poprzez zapisywanie zakładek. Notatka evergreen to nie artykuł, który przeczytałeś — to to, co z niego wyciągnęłeś własnymi słowami.

Narzędzia

Obsidian

Obsidian jest najpopularniejszym narzędziem do notatek evergreen. Jego lokalne pliki Markdown, linki dwukierunkowe i widok grafu dobrze współgrają z tą praktyką. Prosta struktura:

vault/
  fleeting/
    daily/
  literature/
  evergreen/
  maps/       ← notatki indeksujące dla klastrów notatek evergreen

Widok grafu w Obsidianie czyni klastry linków widocznymi — przydatne do odkrywania, które koncepty tworzą naturalne grupy, które mogą stać się notatkami indeksowymi lub opublikowanymi artykułami.

Czysty Markdown z Git

Repozytorium Git z plikami Markdown działa dobrze i nie zależy od żadnego konkretnego narzędzia. Standardowe linki Markdown łączą notatki. Wyszukiwanie jest obsługiwane przez Twój edytor lub grep. Historia wersji pochodzi z Gita.

knowledge/
  evergreen/
    caching/
    api-design/
    performance/
  literature/
  fleeting/

Dyscyplina jest taka sama niezależnie od narzędzia — jeden pomysł na notatkę, napisany własnymi słowami, połączony z powiązanymi notatkami.

Zaczynanie od zera

Najbardziej użytecznym sposobem na rozpoczęcie nie jest migracja istniejących notatek. To napisanie jednej notatki evergreen dzisiaj.

Weź coś, czego się nauczyłeś w ostatnim tygodniu. Napisz to jako twierdzenie. Wyjaśnij to własnymi słowami w jednym akapicie. Dodaj linki do zera lub jednego powiązanego pomysłu.

To jest kompletna notatka evergreen. Powtórz raz w tygodniu przez sześć miesięcy i masz działający system.

Efekt kumulacji potrzebuje czasu, by stać się widoczny. Inżynierowie, którzy utrzymują notatki evergreen przez rok, często zgłaszają, że ich notatki zaczynają odpowiadać na pytania, zanim skończą je zadawać — ponieważ już napisali odpowiedź w poprzednim kontekście.

Podsumowanie

Powodem, dla którego notatki evergreen działają, nie jest to, że są lepsze w przechowywaniu. Są lepsze w myśleniu. Dyscyplina pisania jednego przenośnego pomysłu na notatkę, własnymi słowami, z linkami do powiązanych pomysłów, wymusza zrozumienie, którego bierna kolekcja nie zapewnia.

Dla inżynierów ma to praktyczne konsekwencje. Notatki z incydentu produkcyjnego, które przetworzysz w format evergreen, są bardziej użyteczne niż dziennik incydentu. Kompromis projektowy, który skondensujesz w atomową notatkę, jest bardziej użyteczny niż diagram architektury. Wzorzec debugowania, uogólniony z konkretnego błędu, jest bardziej wielokrotnego użytku niż ticket.

Używane wraz z metodą PARA do organizowania bieżącej pracy, notatki evergreen dają Ci warstwę konceptualną, której PARA nie zapewnia — rosnącą sieć wielokrotnego użytku zrozumienia, która przetrwa przez projekty, przez role i przez lata.

Subskrybuj

Otrzymuj nowe wpisy o systemach, infrastrukturze i inżynierii AI.