Zettelkasten dla programistów: praktyczna metoda, która działa

Stwórz graf wiedzy deweloperskiej.

Page content

Programiści zazwyczaj nie cierpią na brak informacji. Cierpią na ich nadmiar.

Istnieją dokumentacje API, pull requesty, incydenty produkcyjne, dyskusje projektowe, notatki z spotkań, diagramy architektury, komentarze w kodzie, wątki na Slacku, prace badawcze, eksperymenty, zakładki i półdowe pomysły rozrzucone w pięciu różnych narzędziach. Trudną rzeczą nie jest zapisywanie informacji. Trudną rzeczą jest przekształcanie ich w ponownie wykorzystywalne myślenie.

Tutaj przydaje się Zettelkasten.

zettelkasten infographic

Zettelkasten jest często opisywany jako system notowania, co jednak nie oddaje jego pełnego znaczenia. Przy dobrej aplikacji jest to system zarządzania wiedzą osobistą służący do rozwijania pomysłów z upływem czasu. Dla programistów może stać się praktycznym mostem między kodem, architekturą, debugowaniem, uczeniem się a pisaniem.

Kwestią sporną jest to, że większość programistów nie powinna traktować Zettelkastena jako romantycznego hobby produktywnościowego. Nie buduj pięknego muzeum notatek. Zbuduj działający system, który pomoże Ci rozwiązywać problemy, wyjaśniać systemy i podejmować lepsze decyzje inżynierskie.

Co to jest Zettelkasten?

Zettelkasten oznacza „skrzynkę na kartki”. Metodę tę kojarzy się ze socjologiem Niklasem Luhmannem, który używał dużej kolekcji powiązanych notatek do rozwijania pomysłów i pisania rozległych prac.

Ważną lekcją nie jest to, że używał papierowych kart. Ważną lekcją jest to, że jego notatki nie były izolowanymi plikami. Każda notatka miała jasno zdefiniowany pomysł, miejsce w systemie i połączenia z innymi notatkami. Z czasem system zyskiwał na wartości, ponieważ gromadziły się w nim połączenia.

Dla programistów nowoczesna wersja jest prosta:

  1. Pisz jedną użyteczną myśl w każdej notatce.
  2. Połącz ją z powiązanymi notatkami.
  3. Używaj tych połączeń do rozwijania wyjaśnień, decyzji, wzorców i artykułów.

To wszystko. Reszta to szczegóły implementacyjne.

Dlaczego programiści borykają się z przeciążeniem wiedzą

Tworzenie oprogramowania generuje wiedzę, która jest zarówno szczegółowa, jak i tymczasowa.

Uczysz się, dlaczego wystąpił błąd w nieważeniu pamięci podręcznej. Odkrywasz dziwny przypadek brzegowy w frameworku. Porównujesz dwie strategie kolejkowania. Debugujesz awariję na produkcji. Rozumiesz, dlaczego usługa legacy zachowuje się dziwnie. Czytasz świetny artykuł o śledzeniu rozproszonym.

Wtedy, dwa miesiące później, ledwie pamiętasz, że kiedyś znałeś odpowiedź.

Zwykła stosowana przez programistów struktura zarządzania wiedzą pogarsza tę sytuację:

  • Zakładki przechowują źródła, a nie zrozumienie.
  • Foldery wymuszają wczesną kategoryzację.
  • Wiki tracą aktualność, gdy nikt nimi nie zarządza.
  • Listy TODO mieszają zadania z pomysłami.
  • Komentarze w kodzie wyjaśniają lokalne szczegóły, a nie szersze koncepcje.
  • Wiadomości w czacie znikają w historii.

Zettelkasten pomaga, ponieważ traktuje wiedzę jako sieć, a nie magazyn. Jeśli to ujęcie brzmi znajomo po przeczytaniu o budowaniu drugiego mózgu, nie jest to przypadek — obie metody atakują tę samą lukę między przechwytywaniem a ponownym wykorzystaniem, ale dyscyplina Zettelkastena polegająca na atomowych notatkach i eksplicitnych połączeniach daje programistom bardziej szczegółowe podejście do pomysłów technicznych.

Podstawowe zasady Zettelkastena

Notatki atomowe

Notatka atomowa zawiera jedną myśl.

Nie jeden temat. Nie jedno streszczenie artykułu. Nie jedna ogromna strona o nazwie „PostgreSQL”. Jedną myśl.

Na przykład, te są zbyt szerokie:

Notatki o PostgreSQL
Kubernetes
Cache'owanie
Projektowanie systemów

Te są bliższe atomowości:

Indeksy częściowe zmniejszają obciążenie zapisu, gdy zapytania dotyczą małego podzbioru
Proby gotowości w Kubernetes chronią routing ruchu, a nie uruchamianie kontenera
Cache'owanie write-through poprawia spójność, ale zwiększa opóźnienie zapisu
Klucze idempotentności zamieniają ponowe próby w bezpieczne operacje

Notatki atomowe są potężne, ponieważ są łatwiejsze do powiązania. Ogromna strona może być połączona tylko jako niejasny temat. Skupiona notatka może być połączona z dokładną koncepcją, decyzją, błędem lub systemem.

Dobra notatka programisty powinna zwykle odpowiadać na jedno z tych pytań:

  • Jaka jest ta idea?
  • Kiedy ma znaczenie?
  • Jaki kompromis ujawnia?
  • Gdzie spotkałem to w prawdziwym kodzie?
  • Z jaką inną koncepcją się łączy?

Połączenia

Połączenia są sercem systemu.

Chodzi nie o stworzenie pięknego grafu. Chodzi o to, aby pomysły były ponownie wykorzystywalne.

Gdy piszesz notatkę o kluczach idempotentności, połącz ją z notatkami o ponowych próbach, systemach rozproszonych, przetwarzaniu płatności, kolejkach wiadomości, projektowaniu API i zapobieganiu incydentom. Gdy piszesz notatkę o migracjach baz danych, połącz ją z bezpieczeństwem wdrażania, strategią cofania, kompatybilnością wsteczną i flagami funkcjonalnymi.

Połączenie powinno zwykle oznaczać jedną z tych rzeczy:

  • „To wyjaśnia tę samą koncepcję z innego kąta.”
  • „To jest praktyczny przykład tej idei.”
  • „To jest kompromis lub kontrargument.”
  • „Ta koncepcja zależy od tej koncepcji.”
  • „Ta notatka należy do szerszego argumentu.”

Unikaj leniwych połączeń. Łączenie każdej notatki z każdą inną tworzy szum. Najlepsze połączenia są świadome.

Wyłanianie się (Emergence)

Wyłanianie się to część Zettelkastena, która brzmi mistycznie, ale jest praktyczna.

Nie musisz projektować idealnej struktury z góry. Dodajesz użyteczne notatki, łączysz je uczciwie i pozwalasz klastrzom pojawiać się z czasem.

Po kilku miesiącach możesz zauważyć, że wiele notatek łączy się wokół tematów takich jak:

  • Wiarygodność API
  • Obserwowalność
  • Doświadczenie deweloperskie
  • Architektura napędzana zdarzeniami
  • Wydajność baz danych
  • Dług techniczny
  • Dokumentacja
  • Przeględy bezpieczeństwa

Te klastry stają się przyszłymi artykułami, dokumentacją wewnętrzną, zasadami projektowymi, wykładami konferencyjnymi, materiałami onboardingu lub lepszymi decyzjami inżynierskimi.

Dlatego Zettelkasten różni się od hierarchii folderów. Foldery proszą Cię o podjęcie decyzji, gdzie wiedza należy, zanim ją w pełni zrozumiesz. Połączenia pozwalają wiedzy należeć do wielu kontekstów.

Adaptacja Zettelkastena dla programistów

Klasyczne rady dotyczące Zettelkastena często pochodzą z akademickiego pisania — literatura o zarządzaniu wiedzą osobistą dobrze pokrywa tę tradycję. Programiści potrzebują nieco innej wersji.

Zettelkasten programisty powinien łączyć trzy rzeczy:

  1. Koncepcje
  2. Kod
  3. Systemy

Koncepcje

Notatki konceptualne wyjaśniają ponownie wykorzystywalne idee.

Przykłady:

Backpressure zapobiega przytłoczeniu wolnych konsumentów przez szybkich producentów
Optymistyczne blokowanie wykrywa konfliktowe zapisy bez blokowania odczytujących
Przerwaczniki obwodu chronią zależności przed powtarzającymi się nieudżnymi wywołaniami

Te notatki powinny być napisane własnymi słowami. Kopiowanie dokumentacji nie wystarczy. Wartość pochodzi z wymuszenia na sobie wyjaśnienia koncepcji jasno.

Użyteczna notatka konceptualna może zawierać:

  • Krótkie wyjaśnienie
  • Konkretne przykłady
  • Kompromisy
  • Połączenie do powiązanego wzorca
  • Połączenie do rzeczywistego systemu, gdzie to wykorzystałeś

Kod

Notatki kodowe przechwytyują praktyczną wiedzę implementacyjną.

Nie są losowymi zrzutami fragmentów kodu. Fragment jest użyteczny tylko wtedy, gdy wyjaśnia decyzję lub wzorzec.

Na przykład:

## Obsługa żądań idempotentnych z użyciem ograniczenia bazy danych

Najbezpieczniejszą implementacją jest często unikalne ograniczenie na kluczu idempotentności.
Aplikacja może bezpiecznie ponawiać próby, ponieważ zduplikowane żądania rozwiązywane są do tego samego
zapisanego wyniku, zamiast tworzyć drugi skutek uboczny.

Powiązane:
- [[Retries need idempotent operations]]
- [[Database constraints are concurrency control]]
- [[Payment APIs should treat network failure as unknown outcome]]

Dobre notatki kodowe wyjaśniają, dlaczego kod działa, kiedy go użyć i co może pójść nie tak.

Systemy

Notatki systemowe łączą abstraktowe idee z Twoją rzeczywistą architekturą.

Na przykład:

Usługa rozliczeń używa kluczy idempotentności, ponieważ wywołania dostawcy płatności mogą
sukcesnie zakończyć się nawet wtedy, gdy nasz klient HTTP przekracza limit czasu.

Ta notatka może być połączona z:

Klucze idempotentności zamieniają ponowe próby w bezpieczne operacje
Limit czasu nie dowodzi niepowodzenia
API płatności powinny modelować nieznane rezultaty
Wzorzec Outbox oddziela zapisy w bazie danych od zewnętrznych skutków ubocznych

Tutaj Zettelkasten staje się wartościowy dla pracy starszych inżynierów. Pomaga Ci budować pamięć o tym, dlaczego systemy mają taką, a nie inną strukturę.

Praktyczny przepływ pracy

Krok 1: Przechwytywanie notatek przelotnych

Notatka przelotna (fleeting note) to surowe przechwycenie. Nie musi być dopracowana.

Przykłady:

Sprawdź, dlaczego próba gotowości nie powiodła się podczas wdrożenia.
Może ponowe próby pogorszyły błąd zduplikowanego faktury.
Dobre cytaty z przeglądu incydentu: limit czasu to nie niepowodzenie.
Badanie: częściowy indeks Postgresa tylko dla aktywnych wierszy.

Użyj tego, co najszybsze: dzienna notatka w Obsidian, dziennik w Logseq, plik tekstowy, notatki na telefonie lub bufor notatek.

Zasada jest prosta: przechwyć szybko, przetwórz później.

Krok 2: Przetwarzanie notatek w notatki trwałe

Przetwarzanie to miejsce, gdzie pojawia się wartość.

Przekształć surowe notatki w jasne, ponownie wykorzystywalne notatki. Przepisz je własnymi słowami. Nadaj każdej notatce tytuł, który stwierdza ideę.

Zły tytuł:

Ponowe próby

Lepszy tytuł:

Ponowe próby są bezpieczne tylko wtedy, gdy operacja jest idempotentna

Zła notatka:

Potrzebuję idempotentności dla ponowych prób.

Lepsza notatka:

Ponowe próby mogą przekształcić tymczasowy problem sieciowy w zduplikowane skutki uboczne.
Ponowna próba jest bezpieczna tylko wtedy, gdy operacja może być wykonana więcej niż raz i nadal
wyprodukować ten sam wynik biznesowy. Dla API wymaga to często klucza idempotentności,
unikalnego ograniczenia lub zapisanego wyniku żądania.

Krok 3: Dodawanie połączeń, gdy kontekst jest świeży

Po napisaniu notatki zapytaj:

  • Co to wyjaśnia?
  • Od czego to zależy?
  • Gdzie widziałem to w kodzie?
  • Jaka jest przeciwna perspektywa?
  • Który system by na tym skorzystał?

Dodaj tylko te połączenia, które pomogą przyszłemu Tobie myśleć.

Krok 4: Tworzenie notatek indeksowych lub map treści

Gdy klastro rośnie, stwórz notatkę indeksową.

Na przykład:

# Wiarygodność API

## Podstawowe idee

- [[Retries are safe only when the operation is idempotent]]
- [[Timeouts do not prove failure]]
- [[Circuit breakers reduce pressure on failing dependencies]]
- [[Rate limits protect shared resources]]

## Wzorce implementacyjne

- [[Idempotency keys turn retries into safe operations]]
- [[Outbox pattern separates persistence from delivery]]
- [[Dead letter queues preserve failed messages for inspection]]

## Przykłady systemowe

- [[Billing service payment retry design]]
- [[Webhook delivery failure handling]]

Daje Ci to nawigację bez wymuszania wszystkiego na foldery.

Krok 5: Używanie notatek do produkcji wyników

Zettelkasten powinien produkować coś.

Dla programistów wynikiem mogą być:

  • Rejestry decyzji architektonicznych
  • Dokumenty projektowe
  • Posty na blogu
  • Przewodniki debugowania
  • Dokumentacja onboardingu
  • Wyjaśnienia pull requestów
  • Wykłady wewnętrzne
  • Plany refaktoryzacji
  • Wnioski z przeglądów incydentów

Jeśli Twoje notatki nigdy nie wpływają na Twoją pracę, system jest zbyt dekoracyjny.

Polecane typy notatek dla programistów

Notatki przelotne

Tymczasowe notatki do szybkiego przechwytywania.

Używaj ich do:

  • Pomysłów podczas kodowania
  • Obserwacji debugowania
  • Fragmentów spotkań
  • Pytań
  • Zakładek do późniejszego przetworzenia

Usuń je lub konwertuj szybko. Nie pozwalaj im stać się bagnem.

Notatki literaturowe

Notatki o zewnętrznych źródłach.

Dla programistów źródłem może być:

  • Dokumentacja
  • Artykuł na blogu
  • RFC
  • Kod źródłowy
  • Wykład konferencyjny
  • Problem na GitHubie
  • Postmortem
  • Rozdział książki

Trzymaj notatki źródłowe osobno od własnych notatek trwałych. Notatka źródłowa mówi: „To źródło to powiedziało.” Notatka trwała mówi: „Rozumiem tę ideę w ten sposób.”

Notatki trwałe

To są rdzeń Zettelkastena.

Notatka trwała powinna być:

  • Atomowa
  • Napisana własnymi słowami
  • Połączona z powiązanymi notatkami
  • Użyteczna bez konieczności posiadania oryginalnego źródła
  • Stabilna na tyle, aby można było do niej powrócić później

Notatki projektowe

Notatki projektowe są dozwolone, ale nie myl ich z notatkami trwałymi.

Notatka projektowa może być:

Przenieś worker rozliczeń do kolejki v2

Może być połączona z notatkami trwałymi, takimi jak:

Backpressure zapobiega załamaniu konsumentów kolejki
Wzorzec Outbox oddziela trwałość od dostawy
Flagi funkcjonalne redukują ryzyko wdrażania

Projekty kończą się. Koncepcje pozostają.

Przykłady narzędzi

Obsidian

Obsidian działa dobrze dla Zettelkastena programistycznego, ponieważ używa lokalnych plików Markdown i obsługuje wewnętrzne łącza.

Prosta struktura Obsidiana:

notes/
  fleeting/
  sources/
  permanent/
  maps/
  projects/

Przykładowa notatka:

# Timeouts do not prove failure

A timeout means the client stopped waiting. It does not prove the server failed.
The operation may have succeeded, failed, or still be running.

This matters for payment APIs, job queues, and any external side effect.

Related:
- [[Retries are safe only when the operation is idempotent]]
- [[Idempotency keys turn retries into safe operations]]
- [[External side effects need reconciliation]]

Obsidian jest dobrym wyborem, jeśli lubisz własność plików, czysty tekst i przepływy pracy podobne do edytora.

Logseq

Logseq jest przydatny, jeśli wolisz tworzenie zarysów, dzienniki dzienne i referencje na poziomie bloków.

Jego model bloków działa dobrze do przechwytywania małych jednostek myśli. Możesz pisać surowe notatki w dzienniku, a następnie promować przydatne bloki do notatek trwałych.

Przykładowy przepływ pracy w stylu Logseq:

- Timeout during payment request does not prove payment failure.
  - This should become a permanent note about unknown outcomes.
  - Related: [[Idempotency]], [[Retries]], [[Payment APIs]]

Logseq jest dobrym wyborem, jeśli Twoje myślenie zaczyna się od zarysów i lubisz referencje do bloków. Aby porównać oba narzędzia obok siebie pod kątem stylu przepływu pracy, opcji synchronizacji i ekosystemów wtyczek, Obsidian vs Logseq jasno mapuje kompromisy.

Czysty Markdown i Git

Nie potrzebujesz specjalnej aplikacji.

Repozytorium Git z plikami Markdown może wystarczyć:

knowledge/
  permanent/
  sources/
  maps/

Używaj zwykłych linków Markdown:

[Retries are safe only when operations are idempotent](../permanent/retries-safe-only-with-idempotency.md)

To podejście jest nudne, trwałe i przyjazne dla programistów. To komplement.

Nazewnictwo notatek

Preferuj tytuły, które formułują twierdzenia.

Słabe tytuły:

Cache'owanie
Kolejki
OAuth
Indeksy PostgreSQL

Silne tytuły:

Nieważnienie cache'a to problem koordynacji
Kolejki ukrywają opóźnienia, ale nie usuwają pracy
Tokeny dostępu OAuth powinny mieć krótki czas życia
Indeksy częściowe są użyteczne, gdy zapytania dotyczą podzbioru

Tytuł oparty na twierdzeniu sprawia, że notatka jest łatwiejsza do zrozumienia i łatwiejsza do połączenia.

Co wpisać do Zettelkastena programisty

Dobre kandydaty:

  • Zasady architektury
  • Lekcje debugowania
  • Wnioski z incydentów produkcyjnych
  • Zasady projektowania API
  • Wzorce baz danych
  • Założenia bezpieczeństwa
  • Kompromisy wydajnościowe
  • Przypadki brzegowe frameworków
  • Heurystyki refaktoryzacji
  • Strategie testowania
  • Lekcje wdrażania
  • Wzorce przeglądów kodu

Słabe kandydaty:

  • Surowe transkrypcje spotkań
  • Nieprzetworzone zakładki
  • Ogromne skopiowane strony dokumentacji
  • Losowe fragmenty bez wyjaśnienia
  • Listy zadań
  • Tajne dane
  • Kredensjały
  • Cokolwiek, co należy wyłącznie do oficjalnej dokumentacji firmy

Osobisty Zettelkasten może odwoływać się do pracy, ale nie powinien stać się niebezpieczną cieniową kopią prywatnych systemów.

Typowe błędy

Błąd 1: Nadmierne strukturyzowanie zbyt wcześnie

Programiści kochają strukturę. Czasami jest to problem.

Nie spędzaj pierwszego tygodnia na projektowaniu folderów, tagów, szablonów, konwencji nazewnictwa, paneli sterowania i automatyzacji. Jeszcze nie wiesz, jakiej struktury potrzebują Twoje notatki.

Zacznij od małej liczby typów notatek:

fleeting
sources
permanent
maps
projects

Pozwól złożoności zarobić swoje miejsce.

Błąd 2: Traktowanie go jak folderów

Zettelkasten nie jest lepszym drzewem folderów.

Jeśli każda notatka należy do dokładnie jednego folderu i nie ma znaczących połączeń, zbudowałeś szafę archiwową. Może to nadal być użyteczne, ale to nie jest Zettelkasten.

Wartość pochodzi z połączeń:

Ponowe próby API -> idempotentność -> ograniczenia bazy danych -> bezpieczeństwo płatności -> zapobieganie incydentom

To łańcuch jest bardziej użyteczny niż folder o nazwie „Backend”.

Błąd 3: Zapisywanie zamiast myślenia

Kopiowanie nie jest uczeniem się.

Zapisany akapit z dokumentacji może pomóc później, ale przepisane wyjaśnienie pomaga teraz. Akt sformułowania idei własnymi słowami to miejsce, gdzie poprawia się zrozumienie.

Dobra zasada:

Nie twórz notatki trwałej, dopóki nie będziesz mógł wyjaśnić idei bez kopiowania.

Błąd 4: Łączenie wszystkiego

Za dużo połączeń jest tak samo złe, jak za mało.

Nie łącz słów tylko dlatego, że istnieją. Łącz idee, ponieważ relacja ma znaczenie.

Użyteczne połączenie powinno pomóc przyszłemu Tobie odpowiedzieć:

Dlaczego to jest połączone?

Błąd 5: Mylenie tagów ze strukturą

Tagi są przydatne do statusu i szerokiej grupowania:

#todo
#source
#security
#draft

Ale tagi nie powinny unosić całego systemu. Jeśli polegasz tylko na tagach, tracisz bogatsze znaczenie bezpośrednich połączeń.

Połączenie mówi:

Ta idea jest powiązana z tą ideą w specyficzny sposób.

Tag zwykle mówi:

To należy do szerokiej kategorii.

Oba są użyteczne. Nie są tym samym.

Błąd 6: Nigdy nie produkowanie wyników

Zettelkasten, który nigdy nie produkuje wyników, staje się prywatnym archiwum.

Wynik nie musi oznaczać publicznego pisania. Może to być dokument projektowy, przegląd incydentu, lepszy pull request lub jasne wyjaśnienie dla kolegi z zespołu.

System powinien sprawiać, że Twoje myślenie jest łatwiejsze do ponownego wykorzystania.

Minimalny szablon

Używaj małego szablonu. Opaniaj chęć tworzenia formularza z piętnastu pól.

# Title as a claim

## Idea

Explain the idea in your own words.

## Why it matters

Describe the practical impact.

## Example

Show a code, system, or debugging example.

## Tradeoffs

Mention limits, risks, or counterpoints.

## Links

- [[Related note]]
- [[Another related note]]

Dla wielu notatek nawet to jest za dużo. Tytuł, akapit i trzy połączenia mogą wystarczyć.

Przykład: Od błędu do notatek Zettelkastena

Wyobraź sobie, że naprawiłeś błąd, w którym użytkownicy byli obciążani dwukrotnie po przekroczeniu limitu czasu.

Słaba notatka byłaby:

Payment bug - retries caused duplicate charge.

Silniejszy zestaw notatek mógłby być:

Timeouts do not prove failure
Retries are safe only when the operation is idempotent
Idempotency keys turn retries into safe operations
Payment APIs should model unknown outcomes
Database constraints are concurrency control

Teraz błąd stał się ponownie wykorzystywalną wiedzą inżynierską.

Później te notatki mogą wspierać:

  • Postmortem
  • Dokument projektowy dla ponowych prób płatności
  • Post na blogu o idempotentności
  • Checklistę dla integracji zewnętrznych API
  • Komentarz w przeglądzie kodu
  • Bezpieczniejszą implementację

To jest praktyczna wartość Zettelkastena.

Tygodniowa rutyna utrzymania

Nie potrzebujesz skomplikowanego procesu przeglądu.

Raz w tygodniu:

  1. Przetwórz surowe notatki.
  2. Usuń notatki, które już nie mają znaczenia.
  3. Konwertuj przydatne idee w notatki trwałe.
  4. Dodaj brakujące połączenia.
  5. Promuj klastry do notatek map.
  6. Wybierz jedną notatkę i przekształć ją w wynik.

Trzymaj to lekko. System powinien wspierać rozwój, a nie rywalizować z nim.

Praktyczne zasady

Używaj tych zasad, aby utrzymać system w dobrej kondycji:

  • Jedna idea na notatkę.
  • Pisz tytuły jako twierdzenia.
  • Preferuj połączenia nad foldery.
  • Trzymaj notatki źródłowe osobno od własnych idei.
  • Łącz notatki z prawdziwym kodem i prawdziwymi systemami.
  • Twórz notatki map tylko wtedy, gdy istnieje klastro.
  • Usuń notatki o niskiej wartości.
  • Nie automatyzuj, zanim nie zrozumiesz swojego przepływu pracy.
  • Używaj systemu do produkcji czegoś.

Kiedy Zettelkasten nie jest warty wysiłku

Zettelkasten nie jest odpowiedzią na każdy problem.

Może to być przesada, jeśli:

  • Potrzebujesz tylko menedżera zadań.
  • Rzadko powracasz do pomysłów technicznych.
  • Nie piszesz, nie uczysz, nie projektujesz ani nie dokumentujesz.
  • Twoje notatki to głównie krótkotrwałe szczegóły projektowe.
  • Używasz go, aby uniknąć wykonywania właściwej pracy.

Jest najbardziej użyteczny, gdy Twoja praca opiera się na narastającym zrozumieniu.

Obejmuje to senior engineering, architekturę, przywództwo techniczne, debugowanie złożonych systemów, pisanie, konsulting, badania i głębokie uczenie się przez wiele lat.

Ostatnie myśli

Dla programistów Zettelkasten nie chodzi o zbieranie notatek. Chodzi o budowanie środowiska myślowego.

Metoda działa najlepiej, gdy pozostaje praktyczna: notatki atomowe, znaczące połączenia, prawdziwe przykłady i regularne wyniki. Łącz koncepcje z kodem. Łącz kod z systemami. Łącz systemy z decyzjami.

Nie próbuj budować idealnego drugiego mózgu. Zbuduj użyteczny.

Dobry Zettelkasten programisty powinien pomóc Ci odpowiadać na lepsze pytania:

Where have I seen this problem before?
What concept explains this bug?
What tradeoff are we making?
What pattern applies here?
What should I write down so I do not relearn this again?

To wystarczy.

Subskrybuj

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