Jakie techniki pomagają zachować wiedzę programistyczną? [Zamknięte]

44

Jak pamiętasz programowanie powiązanych rzeczy? Czy miałeś wrażenie, że napotkałeś błąd, który miałeś przed sobą kilka lat temu i mógłbyś przysiąc, że znasz przyczynę, ale teraz o tym zapomniałeś?

Czy pracowałeś kiedyś z parsowaniem łańcucha xsl, ale teraz nie pamiętasz dokładnie, jakie są funkcje łańcucha z xsl i musisz zacząć od zera? A może zapominasz o niektórych funkcjach z Apache Commons, takich jak „filtrowanie kolekcji według jakiegoś predykatu”, którego z pewnością używałeś w przeszłości.

Jak to robisz? Próbowałem założyć blog, ale kiedy tworzę aplikacje, nigdy nie znajduję czasu na aktualizację bloga lub pisanie o swoich doświadczeniach. Ponadto korzystanie z wiki jest fajną rzeczą, ale potem trudno mi było zachować czystą separację między nimi, ponieważ wiele razy musiałem zmienić post na blogu, aby dodać nowe informacje na ten temat. To sprawiło, że pomyślałem, że powinienem umieścić ten temat na wiki zamiast na blogu.

Czy masz jakieś systemy, które pomogą Ci zapamiętać swoje doświadczenia związane z programowaniem? Jaka jest twoja konfiguracja?

błyszczące światło
źródło
82
moja konfiguracja: 1.google 2. strona zakładki 3. zapomnij o zakładce 4.goto-> 1.
e-MEE
4
Użyj osobistej Wiki. Zanotuj każdy rozwiązany problem, abyś Ty i inni mogli zobaczyć go później. Po prostu rób to przez kilka miesięcy, a będziesz mieć mnóstwo informacji. Używam WikidPada i jego całkiem niezłego
Ubermensch
2
google jest fantastyczna pod względem odpowiedzi, ale nie sądzę, że naprawdę odpowiada na to pytanie dotyczące technik pamięci. Oczywiście to tylko komentarz.
Michael Durrant
4
Mój mózg to mój procesor i pamięć podręczna. Robię to, wkładając różne rzeczy do mojej pamięci podręcznej. Cała reszta mojej wiedzy znajduje się w innych miejscach, takich jak stary kod źródłowy, notatki i stackoverflow.com.
Distortum,
5
@ e-MEE: chociaż opisana sytuacja jest często używana, jest to zła praktyka i nie można na niej polegać. Jest to czasochłonne i zbędne. Możesz wykorzystać ten czas na budowanie niesamowitych funkcji, nie zmieniając kierownicy :)
Claudiu Constantin,

Odpowiedzi:

64

Zapominanie rzeczy jest normalne. Nie pamiętanie niektórych sztuczek, które pomogły ci w przeszłości, jest również normalne. To pierwszy krok, który należy potwierdzić. Istnieją zatem sposoby na „przechowywanie” wiedzy w celu dalszej rewizji:

  • Znajdź czas i bloguj o tym . Przyszłość - będziesz bardzo wdzięczny teraźniejszości - ty;
  • Pracuj z małymi prezentacjami i archiwizuj je w jakiś sposób. Z pewnością przejdziesz przez to archiwum wiele razy;
  • Skorzystaj z profilu wymiany stosów. Oznacz interesujące pytania / problemy / problemy / wskazówki / triki jako ulubione do dalszego badania;
  • Przechowywać robi zachować programowania. Im częściej korzystasz z określonej części frameworka, tym bardziej się z nim zapoznasz i tym więcej zapamiętasz.
Claudiu Constantin
źródło
5
+1 za część „rób dalej”, coś w rodzaju odświeżenia wiedzy.
tehnyit
Punkt 1 przypomina mi odcinek The Office ...
JBRWilkinson,
Zarejestrowałem się tutaj, aby głosować na twoją odpowiedź. Idealny
Martin.
3
+1 za wartość dziennika / pamiętnika. Rejestrowanie poprawia sukces diety, finansów, sprawności fizycznej i większości innych rzeczy ... ludzie, którzy nie poświęcają czasu na zapisywanie dziennika, uważają, że korzyścią z dziennika jest wyszukiwanie czegoś, ale prawdziwą wartością jest zmuszanie do myślenia w ostatnich wydarzeniach, krytycznie rozważ te wydarzenia i utwórz z nich historię. Ten proces wspomaga pamięć i powoduje, że pisarz myśli o przyszłości. Zaletą dziennika dla większości nie jest czytanie go po fakcie, ale z osobistej i rzeczywistej wartości podczas jego tworzenia.
Quaternion
Blog jest najlepszy. Prowadzę blog z niektórymi rzeczami, które robię - niektórymi wpisami o problemach, które napotykam (i rzadko o rzeczach, które lubię lub które mnie interesują). W ten sposób, gdy napotkam jakiś problem (jak ponownie zainstalować tu tę bibliotekę?), Przechodzę do mojego posta na blogu i idę dalej. Działa jak urok, a ponadto może kiedyś komuś pomóc.
MatthewRock
20

Mój klucz to

Różnorodność


Powtórzenie. Kiedyś może być ulotny. Widok 100. wydarzenia robi różnicę!

Pamięć palcami . Pamiętam kod znacznie lepiej, kiedy napisałem go kilka razy.

Biblioteka kodów - przechowuj osobisty zapas kodu i sztuczek, których używałeś i widziałeś.

Centralizacja. Trzymam 1 plik ze wszystkimi moimi nazwami użytkowników (setki) na 1 komputerze. Stosuję do tego zabezpieczenia.

Dyscyplina - wspomniałeś, że nie masz czasu / wysiłku na aktualizację własnego bloga itp. Musisz po prostu ciężej pracować i upewnić się, że to robisz.

Akceptacja - umiejętności i techniki oraz rzeczy, których nauczyłeś się w tygodniu, będą świeże. Niektóre rzeczy, które powiedziałeś 3 lata temu, będą trudne do zapamiętania. To normalne, ponieważ mózg robi miejsce na więcej.

Wiele zmysłów - czasami używam mnemoniki, czasem upuszczam obraz z kluczowymi pojęciami rysowanymi w charakterystyczny sposób. Czytam, słucham podcastów, oglądam filmy, używam kolorów w edytorach. Im więcej rozsądku używam, tym lepiej.

Mnemoniki , np. Polecenie css border Tarball (TaRBalL) TopRightBottomLeft. Używam też kolorów i kształtów do zapamiętywania słów i motywów. Często im bardziej dziwaczne, tym bardziej niezapomniane!

Kontynuacja użytkowania - jest to efekt „wykorzystaj lub strać”. Cała wiedza z czasem zanika. Czas ++ Zanikanie ++

Sieć wymiany stosów - używam przepełnienia stosu w wielu obszarach, aby próbować zachować tyle różnych umiejętności i technik, które są „aktualne” i „zapamiętane”, nawet jeśli nie używam ich w mojej obecnej pracy / projekcie.

Dropbox - przechowuję małe pliki z elementami związanymi z pamięcią

Książki - nadal lubię głupców i dotyk fizycznych książek. Mam też wiele rozpalaczy i innych książek technicznych on-line, do których mogę się odwołać w dowolnym miejscu. Oczywiście moja biblioteka techniczna może być dostępna w dowolnym miejscu, gdy jest cyfrowa, co jest ogromne.

Efekt Google - żadna lista elementów nie byłaby kompletna bez wspomnienia o tym. To więcej o tym, czego nie musisz pamiętać - ponieważ możesz google go znaleźć i go znaleźć. To także ważna uwaga. W miarę jak coraz więcej ludzi opanowuje ten sposób zdobywania wiedzy, spada potrzeba zapamiętywania danego faktu. Jest to jednak również „podniesienie poprzeczki” dla pracowników wiedzy, którzy odkrywają, że w obecnym środowisku konieczne jest głębokie zrozumienie pojęć. Oczywiście, które z CME !

Mój własny blog

Moja własna strona zakładek .

  • Jak mogę aktualizować mojego bloga i moje zakładki? Pod koniec dnia myślę, że to dyscyplina i spryt, tzn. tak, wymaga to pewnego poświęcenia. Jednak jeśli poszedłeś do szkoły na studia i zapłaciłeś 100 000 $ (a nawet 10 000 $) lub jesteś samoukiem, znasz znaczenie poświęcenia i wytrwałości. Nie inaczej jest. Sprytność lub „sprytny czynnik” polega na tym, że kiedy widzisz fajną stronę internetową z fajnym tutorialem lub techniką lub czymkolwiek innym, lub pokonujesz trudny problem, mówisz „hej, to sprytne!” - więc kiedy poczujesz to (lub cokolwiek, czego używasz), skojarz to teraz z „Muszę blogować lub nagrać tę zakładkę”. Istnieje duża szansa, że ​​nie jesteś przy komputerze, aktualizujesz swojego bloga w tym momencie, więc wyślij sobie e-mail, SMS, a nawet pocztę głosową lub nowe zadanie na liście zadań - cokolwiek działa dla Ciebie- aby sobie przypomnieć, aby to zrobić! Na przykład mój telefon z Androidem ma przydatną do tego celu aplikację zadań.
Michael Durrant
źródło
Dziękuję za twoją przemyślaną odpowiedź. Czy jesteś dyscyplinowany w zakresie aktualizowania swojego bloga? Myślę, że moim problemem jest albo lenistwo, albo nie publikuję czegoś, ponieważ nie sądzę, aby inni mogli na tym skorzystać.
Kyle Hayes
+1 za różnorodność. Naprawdę działa i doświadczyłem tego wiele razy.
Karthik Sreenivasan
Dobre pytanie Kyle'a, zaktualizowałem swoją odpowiedź. Jednak moja odpowiedź jest jeszcze bardziej o potrzebie być na bieżąco, a nie jak ja nadal zdyscyplinowany. W pewnym momencie sprowadza się to do osobistej motywacji.
Michael Durrant
7

W ciągu ostatniego roku Evernote stał się programem, bez którego nie mogłem się obejść. Kopiuję wszystko do Evernote. Fragmenty kodu, zrzuty ekranu, dane kontaktowe, historia wersji i tak dalej. Więc nie muszę pamiętać tylu szczegółów. Wiem, że gdzieś tam jest.

Podstawowa wersja jest darmowa. Więc spróbuj!

Holli
źródło
1
Więc co byś zrobił w dniu, w którym usługi Evernote przestały działać lub nie ma internetu (ponieważ na przykład twój operator został ostrzelany)? Nie polecam polegać na „chmurze” do przechowywania ważnych informacji.
Mister Smith
Obecnie używam Evernote, ale jeśli umieścisz tam wszystko, sekcja tagów będzie bardzo zagracona i zaczniesz z niej mniej korzystać. Jeśli masz na to fajne sztuczki, bardzo się przydałby! Dziękuję Ci!
lśniące światło
@danleadgy, zgadzam się z tagami. Musiałem być bardziej wybiórczy, co naprawdę nie powinno mnie martwić.
Kyle Hayes
Po zadaniu tego samego pytania na temat przepełnienia stosu zacząłem używać Evernote i działa bardzo dobrze. Oprócz informacji o programowaniu przechowuję również instrukcje. Na przykład, jak skonfigurować moją maszynę deweloperską od zera (instalacja systemu operacyjnego, instalacja oprogramowania, konfiguracja). To było bardzo przydatne. Możesz również uzyskać dostęp do tych samych informacji z dowolnego urządzenia. Możesz więc czytać na jednym komputerze lub tablecie i pracować na innym.
B Seven
6

Sherlock Holmes powiedział kiedyś coś w stylu: „Ludzki umysł jest jak strych. Jeśli wypełnisz go drobiazgami, nie będzie miejsca na nic naprawdę ważnego. Dla wszystkich tych szczegółów mamy encyklopedię”.

Jeśli nie masz pamięci fotograficznej i związanych z nią problemów, nie pamiętasz wszystkiego. Zbuduj zestaw zasobów, osobistą bibliotekę informacji i technik rozwiązywania problemów.

Możesz nie pamiętać odpowiedzi i możesz nawet nie pamiętać, gdzie jest zapisana odpowiedź. Ale jeśli wiesz, jak rozwiązać problem, zawsze możesz znaleźć odpowiedź ponownie. Mamy nadzieję, że obejmie to dokumentowanie rozwiązania w sposób umożliwiający wyszukiwanie i wielokrotnego użytku.

Spencer Rathbun
źródło
4

Cóż, może mój przypadek jest szczególny ... ale: Mam każdy kawałek oprogramowania, które napisałem od 76 na moim laptopie, programy, skrypty, konfiguracje itp. Z biegiem czasu (muszę wyznać) moje obciążenie pamięci zmieniło się z zapamiętywania „ rzeczy ”do zapamiętywania metadanych dotyczących rzeczy. Jasne, wiele z nich nie jest już istotnych, ale uważam, że trudność polega na posiadaniu pomysłów, a nie na ich wdrażaniu. Tak więc metadane są w zasadzie indeksem tego, jakie „pomysły” można znaleźć gdzie.

Kiedy uderzam w nową grę, obecnie mam tendencję do znajdowania dużej bazy kodu, która wykorzystuje nowe aspekty, i spędzam trochę czasu z bazą kodu. Studiuję go, staram się, aby działał w środowisku testowym, a następnie próbuję go rozszerzyć, aby móc wprowadzić nowe narzędzia (biblioteki, języki, technologie kompilacji itp.). Ten proces pozwala mi zmapować moje wzorce, pomysły na przykład. Może poświęcę trochę czasu na wykonanie kilku takich mini-projektów i jako odniesienie wybiorę ten, z którym najbardziej czuję się w domu. Kiedy to zrobię, w końcu zmienię przeznaczenie tej bazy kodu, aby zbudować szkielet moich własnych aplikacji.

Kiedy osobiste archiwa zawodzą, trafiam w sieć, do której ostatnio dodałem SO. Dostanę trafienie w „nowe” koncepcje (nowe z osobistego punktu widzenia) na SO przed Gaaglem. W rzeczywistości rzadko (obecnie) wracam do gaagle. Pierwsza odpowiednia odpowiedź tam jest zazwyczaj link do kilku interesujących pytań na temat SO.

YvesLeBorg
źródło
4

Podobnie jak inni, śledzę rzeczy za pomocą zakładek.

Kiedyś używałem Delicious, ale teraz przeniosłem się do Pinboard.

Ale nie używam tego w taki sposób, jak kiedyś. Wygląda na to, że każdy problem programistyczny, na jaki natrafiam, to niewielkie wyszukiwanie w Google. W ciągu ostatniego roku zacząłem używać Stackoverflow jako jednego z moich wyszukiwanych haseł!

Ilekroć przychodzę znaleźć pytanie SO dotyczące szczególnie trudnego problemu, lubię je śledzić, więc jest to kolejna forma zakładek.

ozz
źródło
W przeszłości używałem też pysznych, ale zrobili bałagan z tego projektu. Teraz używam Diigo do tworzenia zakładek i wyróżnień. Będę musiał sprawdzić Pinboard.
jmq
3

„Pamiętaj o obrazie, zapomnij o drobnych pociągnięciach”

To absolutnie normalne, aby nie pamiętać drobniejszych szczegółów. Jednak powinieneś się martwić zapominaniem o najważniejszych rzeczach. Jeśli naprawiłeś błąd, powinieneś mieć przynajmniej koncepcyjne wyobrażenie o tym, co było problemem.

Zakładki, blogi, zeszyty doskonale nadają się do przechowywania tych drobniejszych szczegółów. Ale ostatecznie nadal musisz pamiętać o większym „obrazie”. W przeciwnym razie ponowne odkrycie tych „drobniejszych” szczegółów będzie o wiele trudniejsze.

Ciemna noc
źródło
2

Zachowaj własne notatki, wyrażając rzeczy własnymi słowami. Twoja grupa docelowa to Ty , nikt inny, więc możesz pozwolić sobie na zwięzłość. (Wpis na blogu naprawdę musi być jednak czytelny i dobrze zredagowany, co jest czasochłonne). Jeśli znajdziesz dobre artykuły / posty na blogu, zapisz adres URL, ale nadal wyjaśniaj to własnymi słowami.

Prowadzę dużą hierarchię małych, krótkich plików o jednym temacie. Pliki są w większości dowolne, ale przechodzę do korzystania z Markdown. Szukaj za pomocą grep / find. Trzymam folder w moim DropBox, więc zawsze jest dla mnie dostępny.

Noach
źródło
Robiłem to również jako pliki takie jak ten, ale uważałem Evernote za dobre repozytorium również dla tego typu danych.
Kyle Hayes
1

Każdy może mieć swój własny styl, do którego jest przyzwyczajony. Dla mnie dzielę wiedzę na kategorie:

  • Książki

  • Artykuły

  • Kolekcje (rzeczy, które mnie interesują, ograniczone do kilku akapitów - faktycznie kopiuję informacje i czasami adnotuję źródło) - Na przykład: OODevelopment, Generics, ... itd.

  • Kod wielokrotnego użytku (tekst i fragmenty) - każdy w osobnym pliku w ramach dobrej organizacji drzewa. Np. Węzeł DataValidation zawierałby wiele technik sprawdzania poprawności różnych elementów danych, każdy w osobnym pliku

  • Zrealizowane projekty

  • Osobiste samouczki wideo (czasami nagrywam filmy wideo o tym, jak robić rzeczy, gdy w grę wchodzi zbyt wiele kroków).

  • Spinki do mankietów

Organizuję powyższe według tematów, przy czym każdy temat ma odpowiednią strukturę drzewa.

Czasami rzeczy się pokrywają, ale udaje mi się znaleźć to, czego chcę.

Ponadto za pomocą Google Desktop wyszukiwanie tekstu lub plików jest bardzo szybkie.

Bez szans
źródło
Byłoby interesujące zobaczyć twoje drzewo, gdybyś chciał się nim podzielić.
Kyle Hayes
@KyleHayes, może uda mi się dostarczyć próbkę
NoChance
0

Korzystam z OneNote. Mam wiele różnych języków programowania, z którymi pracuję, więc mam różne sekcje dla każdego języka i różne zakładki dla różnych typów notatek.

Teraz zaczynam także używać Stack Exchange.

Susan Kennedy
źródło
-1

Musisz zachować równowagę między pamięcią a „przechowywaniem”. Jeśli polegasz zbyt wiele lub na niewłaściwych rzeczach w pamięci, == problem, jeśli zbytnio polegasz na przechowywaniu wszystkiego == bezużyteczne.

Moje zasady:

-Nie upiększaj się! napisz ważne rzeczy, nawet jeśli rozmiar czcionki różni się w twoim dokumencie :)

-Nie przesadzaj. Przekonaj się, że orginalizacja myśli nie wymaga 10-poziomowej struktury drzewa

-Spędził CZAS, znajdując, co nagrać. możesz znaleźć 5 rozwiązań tego samego problemu. w momencie, gdy napiszesz je WSZYSTKO, stracisz. Zapisz 1-2, które NAPRAWDĘ Ci pomogą. NIE pozwól sobie powiedzieć, że teraz nie masz na to czasu. Jest to dość dziwne, ale dotyczy: „Spędził czas, aby uzyskać czas”

Nie lubię umieszczać tych rzeczy w jakimś „produkcie”, ponieważ chcę mieć pewność, że będzie istniał 20 lat później i nie chcę migrować na różne platformy.

Co więc zrobić?

Wszystko, co możesz uzyskać przy minimalnym wysiłku.

Na przykład zainstaluj phpBB i napisz do siebie. otrzymujesz funkcjonalność wyszukiwania od razu po wyjęciu z pudełka, możesz pobrać dane za pomocą prostych instrukcji SQL i umieścić je w plikach. możesz mieć cronjob eksportujący swoje myśli w plikach do archiwizacji. Więc jeśli kiedykolwiek będziesz chciał umieścić je w innym systemie, jesteś gotowy przy minimalnym wysiłku.

Innym problemem jest to, że nikt nie gwarantuje, że znalezione linki będą działać jutro (wyobraź sobie 5 lat później). Spróbuj więc powielić informacje:

-Pobierz film z pewnym rozszerzeniem przeglądarki i dołącz go na przykład do postu phpBB (lub wordpress lub cokolwiek innego).

Spójrz prawdzie w oczy: jesteś programistą i tworzysz aplikacje dla innych osób. Zrób prosty dla siebie i zostań Twoim najlepszym klientem.

mój 2c

e4rthdog
źródło
-1

Krótka odpowiedź:

Ćwicz, ćwicz, ćwicz.

Nie tak krótka odpowiedź:

Jak pamiętasz jak chodzić? Jak pamiętasz jak mówić? Przyznaję, że te umiejętności nie są dokładnie takie same i nie wymagają pozornie encyklopedycznej wiedzy (przynajmniej dla początkujących), ale używasz tego samego: pamięci.

Chociaż przyznaję, że dla początkujących programowanie może wydawać się niemożliwie dużym przedmiotem, gdy zaczniesz go studiować, stanie się jak każdy inny przedmiot, gdy opanujesz podstawy.

Gdy tylko to zrozumiałem, zacząłem rozkładać rzeczy na coraz mniejsze części (moja własna, osobista wersja abstrakcji). W ten sposób coś, co wydawało się trudne do zapamiętania, staje się łatwiejsze (przynajmniej u mnie tak jest).

Zapisywanie rzeczy pomaga bardziej niż myślisz (pracując w edukacji, wiem, że może to mieć ogromny pozytywny wpływ na retencję). Zwłaszcza, jeśli umiesz to wyrazić własnymi słowami - zamiast kopiować dosłownie. Jeśli możesz sparafrazować lub zrównać to z czymś, co już znasz, jeszcze lepiej.

Na przykład: W języku C # obiekty String są niezmienne. Oznacza to, że ilekroć każę mojemu programowi zmienić zawartość obiektu łańcuchowego, tak naprawdę dzieje się tak, że oryginalny łańcuch jest niszczony (technicznie jest on umieszczany na najniższym poziomie modułu wyrzucania elementów bezużytecznych). Dokładnie tak, jak gdy artysta popełnia błąd przy tworzeniu marmurowej rzeźby - nie można go zmienić, dlatego jest zniszczony i powstaje nowy.

To nie jest świetny przykład, ale pokazuje podstawy tego, o co mi chodzi.

Dokumentacja jakości również pomaga. Coś, co kiedyś powiedział mi mój wykładowca Programowania 101:

Spraw, aby twój komentarz był pełny. Nie do końca głupota, ale musisz umieć pisać komentarze, które zrozumie nie-programista. W ten sposób wiesz, że ktoś inny w projekcie może to doskonale zrozumieć. Wyobraź sobie, że spędzasz miesiące na wdrażaniu systemu, ale jesteś zaangażowany w jakiś okropny wypadek w drodze do pracy. Ktoś inny zostanie przydzielony do Twojej pracy - zwłaszcza jeśli zbliża się czas awarii - a jeśli nie będzie w stanie dowiedzieć się, co robi Twój kod, produkcja zostanie zatrzymana.

Dobre książki są również doskonałym źródłem. Kiedyś inny nauczyciel powiedział mi, że jeśli książka nie ma indeksu (a jest ich wiele, tam nie ma), to nie warto kupować.

Google może być niesamowitym zasobem, ale pamiętaj o programach do kopiowania i wklejania. Unikaj witryn, które zawierają tylko fragment kodu bez żadnego wyjaśnienia. Wolę czytać cały artykuł na temat małych bloków kodu, w ten sposób odchodzisz wiedząc dokładnie, co ma zrobić blok kodu, jak to robi i dlaczego programista napisał to w ten sposób.

Mam nadzieję, że to pomaga

Jamie Taylor
źródło