Quali tecniche aiutano a conservare le conoscenze di programmazione? [chiuso]


44

Come ricordi la programmazione di cose relative? Hai avuto la sensazione di aver riscontrato l'errore che hai davanti a te in questo momento, qualche anno fa e potresti giurare di conoscere la causa allora ma ora l'hai dimenticata?

Hai lavorato con l'analisi della stringa di xsl qualche tempo fa, ma ora non ricordi esattamente quali sono le funzioni di stringa del tutto da xsl e devi ricominciare da capo? O forse ti dimentichi di alcune funzionalità di Apache Commons come "filtrare una raccolta in base a un predicato" che sicuramente hai usato in passato.

Quindi come lo fai? Ho provato ad avere un blog ma quando sviluppo applicazioni non trovo mai il tempo di aggiornare il blog o scrivere delle mie esperienze. Inoltre, usare una wiki è una cosa carina, ma poi ho trovato difficile mantenere una separazione netta tra loro poiché molte volte avevo bisogno di cambiare un post sul blog per aggiungere nuove informazioni su quell'argomento. Questo mi ha fatto pensare che avrei dovuto inserire questo argomento nel wiki anziché nel blog.

Hai dei sistemi che ti aiutano a ricordare la tua esperienza di programmazione? Qual è la tua configurazione?


82
la mia configurazione: 1.google 2.bookmark pagina 3. dimentica il segnalibro 4.goto-> 1.
e-MEE,

4
Usa un Wiki personale. Annota ogni problema che hai risolto in modo che tu e gli altri possano vederlo in seguito. Fallo solo per un paio di mesi e hai una grande quantità di informazioni. Uso WikidPad ed è abbastanza carino
Ubermensch il

2
google è fantastico per le risposte ma non credo che affronti davvero questa domanda sulle tecniche di memoria. Ovviamente è solo un commento.
Michael Durrant,

4
Il mio cervello è la mia CPU e cache. Ho messo cose nella mia cache facendolo. Il resto della mia conoscenza è in altri luoghi come il vecchio codice sorgente, note e stackoverflow.com.
Distortum

5
@ e-MEE: mentre la situazione che hai descritto viene spesso utilizzata, è una cattiva pratica e non puoi fare affidamento su di essa. È tempo e ridondante. Puoi usare quel tempo per creare fantastiche funzionalità, non reinventare la ruota :)
Claudiu Constantin

Risposte:


64

Dimenticare le cose è normale. Anche non ricordare alcuni trucchi che ti hanno aiutato in passato è normale. Questo è il primo passo che uno dovrebbe riconoscere. Quindi ci sono alcuni modi in cui è possibile "archiviare" le conoscenze per ulteriori revisioni:

  • Trova tempo e blog su di esso . Il futuro-tu sarai molto grato al presente-te;
  • Lavora con piccole demo e archiviali in qualche modo. Sicuramente attraverserai questo archivio molte volte;
  • Usa il tuo profilo stackexchange . Segna domande / problemi / problemi / suggerimenti / trucchi interessanti come preferiti per ulteriori approfondimenti;
  • Continua a fare , continua a programmare. Più usi una certa parte di un framework, più ne conosci e più ricordi.

5
+1 per la parte di "continua a fare", un po 'come rinfrescare la conoscenza.
Tehnyit,

Il punto 1 mi ricorda un episodio di The Office ...
JBR Wilkinson,

Mi sono registrato qui solo per votare la tua risposta. Perfetto
Martin.

3
+1 per il valore di un registro / diario. La registrazione migliora il successo delle diete, della finanza, del fitness, quasi tutto davvero ... le persone che non si prendono il tempo di scrivere un registro pensano che il vantaggio di un registro sia cercare qualcosa ma il vero valore è costringervi a pensare negli ultimi eventi passati, considera criticamente quegli eventi e trasformali in una storia. Questo processo aiuta la memoria e induce lo scrittore a pensare al futuro. Il vantaggio di un registro per la maggior parte di allora, non sta nel leggerlo dopo il fatto, ma dal valore personale e reale durante la sua creazione.
Quaternion

Il blog è il migliore. Sto tenendo un blog di alcune cose che faccio - alcuni post sui problemi che incontro (e raramente su cose che mi piacciono o che trovo interessanti). In questo modo, quando incontro qualche problema (come installo di nuovo questa libreria qui?), Vado al mio post sul blog e vado avanti. Funziona come un incantesimo, inoltre potrebbe effettivamente aiutare qualcuno un giorno.
Matthew Rock

20

La mia chiave è

Varietà


Ripetizione. Una volta può essere fugace. Vedere la 100a occorrenza fa la differenza!

Memoria con le dita . Ricordo molto meglio il codice quando l'ho digitato alcune volte.

Libreria di codici - Mantieni una scorta personale di codice e trucchi che hai usato e visto.

Centralizzazione. Conservo 1 file con tutti i miei nomi utente (centinaia) su 1 PC. Applico la sicurezza ad esso.

Disciplina : hai menzionato che non hai tempo / sforzi per aggiornare il tuo blog, ecc. Che devi solo lavorare di più e assicurarti di farlo.

Accettazione : le abilità, le tecniche e le cose che hai imparato durante la settimana saranno nuove. Alcuni degli articoli che dici 3 anni fa saranno difficili da ricordare. È normale poiché il cervello fa spazio a qualcosa di più.

Sensi multipli - a volte uso la mnemonica, a volte lascio cadere un'immagine con concetti chiave disegnati in modi distintivi. Leggo, ascolto podcast, guardo video, uso il colore negli editor. Più senso uso, meglio è.

Mnemonici , ad es. Tarball ordine dei confini css (TaRBalL) TopRightBottomLeft. Uso anche colori e forme per ricordare parole e temi. Spesso più bizzarro, più memorabile!

Uso continuato - Questo è l'effetto 'usalo o perdilo'. Tutta la conoscenza svanisce nel tempo. Time ++ Fade ++

La rete di scambio di stack : sto utilizzando Stack Overflow in più aree per cercare di mantenere "attuali" e "ricordate" tutte le diverse competenze e tecniche anche se non le sto usando nel mio lavoro / progetto attuale.

Dropbox - Conservo piccoli file con elementi relativi alla memoria

Libri - Mi piace ancora la follia e la sensazione dei libri fisici. Ho anche più kindle e altri libri tecnici on-line a cui posso fare riferimento ovunque. Ovviamente la mia biblioteca tecnica può essere accessibile ovunque quando è digitale, il che è enorme.

Effetto Google : nessun elenco di elementi sarebbe davvero completo senza menzionarlo. Questo è più su ciò che non è necessario ricordare, perché puoi cercarlo su Google e trovarlo. Anche questa è una considerazione importante. Man mano che sempre più persone diventano più abili in questo modo di acquisire conoscenza, sta cadendo la necessità di memorizzare effettivamente un dato dato. Tuttavia, questo sta anche "alzando l'asticella" per i knowledge worker che stanno trovando sempre più che è necessaria una profonda comprensione concettuale per eseguire nell'attuale ambiente. Ovviamente per i CME !

Il mio blog

Il mio sito di segnalibri .

  • Come posso aggiornare il mio blog e i miei segnalibri? Bene, alla fine della giornata penso che sia disciplina e astuzia, cioè sì, è necessaria una certa dedizione. Tuttavia, se sei andato a scuola per una laurea e hai pagato $ 100.000 (o anche $ 10.000) o sei autodidatta, conosci il significato di dedizione e perseveranza. Questo non è diverso. L'astuzia, o "fattore ingegnoso" è che quando vedi un sito Web interessante con un tutorial o una tecnica interessante o qualsiasi altra cosa, o quando superi un difficile problema spinoso, vai "ehi, è bello!" - quindi quando senti questo (o qualunque frase che usi), ora associalo a "Devo blog o registrare quel segnalibro". Ci sono buone probabilità che tu non sia su un PC, aggiornando il tuo blog proprio in quel momento, quindi inviati una e-mail, o un messaggio di testo o anche un messaggio vocale o una nuova attività nell'elenco delle attività - qualunque cosa funzioni per te- per ricordarti di farlo! Ad esempio il mio telefono Android ha un'app per le attività utile per questo.

Grazie per la tua risposta premurosa. Rimani disciplinato sull'aggiornamento del tuo blog? Penso che il problema che ho sia o la pigrizia, o non pubblichi qualcosa perché non penso che altri ne trarrebbero beneficio.
Kyle Hayes,

+1 per varietà. Funziona davvero e l'ho provato molte volte.
Karthik Sreenivasan,

Kyle bella domanda, ho aggiornato la mia risposta. Tuttavia la mia risposta è ancora più sulla necessità di rimanere aggiornato piuttosto che su come rimango disciplinato. Ad un certo punto si riduce alla motivazione personale.
Michael Durrant,

7

Nell'ultimo anno Evernote è diventato un programma di cui non potevo fare a meno. Copio tutto in Evernote. Frammenti di codice, schermate, dati di contatto, cronologia delle versioni e così via. Quindi non devo ricordare tanti dettagli. So solo che è lì da qualche parte.

La versione base è gratuita. Quindi provalo!


1
Quindi, cosa faresti il ​​giorno in cui i servizi di evernote sono inattivi o non c'è internet (perché il tuo operatore è stato bannato per esempio)? Non consiglio di fare affidamento sul "cloud" per archiviare importanti know how.
Mister Smith,

Attualmente sto usando Evernote ma se metti tutto lì, la sezione dei tag diventerà molto ingombra e inizierai a usarla meno. Se hai dei bei trucchi su questo, sarebbe molto utile condividere! Grazie!
splendente luce

@danleadgy, sono d'accordo con i tag. Ho dovuto essere più selettivo di cui non avrei dovuto preoccuparmi.
Kyle Hayes,

Dopo aver posto la stessa domanda su Stack Overflow, ho iniziato a usare Evernote e funziona molto bene. Oltre alle informazioni di programmazione, memorizzo i processi how-to. Ad esempio, come impostare da zero la mia macchina di sviluppo (installa SO, installa software, configura). È stato estremamente utile. Inoltre, puoi accedere alle stesse informazioni da qualsiasi dispositivo. Quindi puoi leggere su un computer o tablet e lavorare su un altro.
B 7

6

Sherlock Holmes una volta disse qualcosa come "La mente di un uomo è come una soffitta. Se la riempi di banalità, non c'è spazio per qualcosa di veramente importante. Per tutti questi dettagli, abbiamo l'enciclopedia".

A meno che tu non abbia una memoria fotografica e i relativi problemi, non ricorderai tutto. Costruire un insieme di risorse, una biblioteca personale di informazioni e tecniche di risoluzione dei problemi.

Potresti non ricordare la risposta e potresti nemmeno ricordare dove è scritta la risposta. Ma se sai come risolvere il problema, puoi sempre trovare di nuovo la risposta. Speriamo che questo includa la documentazione della soluzione in modo ricercabile e riutilizzabile.


4

Bene, forse il mio caso è particolare ... ma: ho ogni frammento di software che ho scritto dal 76 sul mio laptop, programmi, script, configurazioni, ecc. Quindi nel tempo (devo confessare), il mio carico di memoria si è spostato dal ricordare " cose "per ricordare i metadati sulle cose. Certo, molto non è più rilevante, ma quello che trovo che la parte difficile è avere le idee, non effettivamente implementarle. Quindi i metadati sono fondamentalmente un indice di quali "idee" si possono trovare dove.

Oggi, quando raggiungo il nuovo territorio, tendo a trovare una base di codice di grandi dimensioni che utilizza i nuovi aspetti e trascorro un po 'di tempo con la base di codice. Lo studio, provo a farlo funzionare in un ambiente di test, quindi provo ad aumentarlo in modo da poter accedere a nuovi strumenti (librerie, linguaggi, tecnologia di costruzione, ecc ...). Questo processo mi consente di mappare i miei modelli, idee, su un esempio. Potrei prendere del tempo per fare alcuni di questi mini-progetti e scegliere come riferimento quello con cui mi sento maggiormente a casa. Una volta fatto ciò, alla fine rielaborerò quella base di codice per creare lo scheletro delle mie app.

Quando gli archivi personali falliscono, ho colpito la rete, a cui ho recentemente aggiunto SO. Avrò un successo su concetti "nuovi" (nuovi da un punto di vista personale) su SO prima del gaagle. In effetti, raramente (al giorno d'oggi) torno al guaio. La prima risposta pertinente è in genere un collegamento ad alcune domande interessanti su SO.


4

Come altri, tengo traccia delle cose usando i segnalibri.

Usavo Delicious, ma ora sono passato a Pinboard.

Ma non uso così tanto come una volta. Sembra che ogni problema di programmazione che incontro sia una piccola ricerca su Google. E nell'ultimo anno o giù di lì, ho iniziato a usare Stackoverflow come uno dei miei termini di ricerca!

Ogni volta che mi imbatto in una domanda SO per un problema particolarmente difficile, preferisco seguirlo, quindi questa è un'altra forma di bookmarking.


Ho usato anche delizioso in passato, ma hanno fatto un casino con quel progetto. Ora uso Diigo per i segnalibri e le luci. Dovrò dare un'occhiata a Pinboard.
jmq

3

"Ricorda il dipinto, dimentica i tratti sottili"

È assolutamente normale non ricordare i dettagli più fini. Tuttavia, ciò di cui dovresti preoccuparti è dimenticare le cose più importanti. Se hai corretto un bug dovresti almeno avere un'idea concettuale di quale fosse il problema.

Segnalibri, blog, quaderni vanno bene per la memorizzazione di quei dettagli più fini. Ma alla fine devi ancora ricordare la "foto" più grande. Altrimenti riscoprire quei dettagli "più fini" sarà molto più difficile.


2

Conserva le tue note, esprimendo le cose con parole tue. Il tuo pubblico di riferimento sei tu , nessun altro, quindi puoi permetterti di essere conciso. (Un post sul blog deve comunque essere chiaro e ben modificato, il che richiede molto tempo.) Se trovi buoni articoli / blogposts, registra l'URL, ma spiega comunque le cose con parole tue.

Tengo una grande gerarchia di file piccoli, brevi e a tema singolo. I file sono per lo più in formato libero, ma sto passando all'utilizzo di Markdown. Cerca usando grep / find. Tengo la cartella nel mio DropBox, quindi è sempre disponibile per me.


Lo facevo anche come file come questo, ma ho trovato Evernote un buon repository per questo tipo di dati.
Kyle Hayes,

1

Ognuno può avere il suo stile a cui è abituato, per me, ho separato la conoscenza in categorie:

  • Libri

  • articoli

  • Collezioni (cose che trovo interessanti limitate a pochi paragrafi - copio effettivamente le informazioni e talvolta annoto la fonte) - Ad esempio: OODevelopment, Generics, ... etc.

  • Codice riutilizzabile (testo e frammenti): ciascuno su un file separato in una buona organizzazione ad albero. Ad esempio, il nodo DataValidation conterrebbe molte tecniche per convalidare diversi elementi di dati, ciascuno in un file separato

  • Progetti completati

  • Tutorial video personali (a volte registro video su come fare le cose quando sono coinvolti troppi passaggi).

  • link

Organizzo quanto sopra per soggetto, con ogni soggetto in una struttura ad albero appropriata.

Alcune volte ci sono cose sovrapposte ma riesco a trovare quello che voglio.

Inoltre, utilizzando Google Desktop, trovare testo o file è molto veloce.


Sarebbe interessante vedere il tuo albero se tu fossi disposto a condividere.
Kyle Hayes,

@KyleHayes, potrei essere in grado di fornire un campione
NoChance,

0

Uso OneNote. Ho molti linguaggi di programmazione diversi con cui lavoro, quindi ho sezioni diverse per ogni lingua e diverse schede per diversi tipi di note.

Ora sto iniziando a usare anche Stack Exchange.


-1

Devi essere bilanciato tra memoria e "memoria". Se fai troppo affidamento o per cose sbagliate nella memoria, == problema, se fai troppo affidamento sulla memorizzazione di tutto == inutile.

Le mie regole:

-Non abbellire troppo! scrivi le cose importanti anche se la dimensione del carattere varia nel tuo documento :)

-Non esagerare con l'orginizzazione. Convinciti che originare i tuoi pensieri non ha bisogno di una struttura ad albero a 10 livelli

- Trascorrere del tempo nel trovare cosa registrare. potresti trovare 5 soluzioni per lo stesso problema. nel momento in cui li scrivi TUTTI, perdi. Scrivi 1-2 che VERAMENTE ti aiuteranno. NON lasciarti dire che non hai tempo per questo adesso. È piuttosto strano ma si applica: "Ho trascorso del tempo per ottenere il tempo"

Non mi piace mettere queste cose in un "prodotto" perché voglio essere sicuro che esisterà 20 anni dopo e non voglio migrare su varie piattaforme.

Quindi che si fa?

Tutto ciò che è possibile ottenere le informazioni con il minimo sforzo.

Ad esempio, installa phpBB e scrivi a te stesso. ottieni funzionalità di ricerca pronta all'uso, è gratuita e puoi estrarre i dati con semplici istruzioni SQL e inserirli in file. puoi avere un cronjob che esporta i tuoi pensieri in file per l'archiviazione. Quindi, se mai hai bisogno di metterli in un altro sistema, sei pronto con il minimo sforzo.

Un altro problema è che nessuno garantisce che i link che trovi funzioneranno domani (immagina 5 anni dopo). Quindi prova a duplicare le informazioni:

-Scarica il video con un po 'di estensione del browser e allegalo ad esempio al tuo post phpBB (o wordpress o altro).

Ammettilo: sei un programmatore e crei app per altre persone. Creane uno semplice per te stesso e diventa il TUO miglior cliente.

il mio 2c


-1

Risposta breve:

Pratica, pratica, pratica.

Risposta non così breve:

Come ricordi come camminare? Come ricordi come parlare? Concesso che queste abilità non sono esattamente le stesse e non richiedono una conoscenza apparentemente enciclopedica (almeno per i principianti), ma stai usando la stessa cosa: la memoria.

Mentre ammetto che, per i principianti, la programmazione può sembrare una materia incredibilmente grande quando inizi a studiarla, diventa come qualsiasi altra materia una volta che hai imparato le basi.

Non appena l'ho capito, ho iniziato a scomporre le cose in pezzi sempre più piccoli (la mia versione personale dell'astrazione). In questo modo, qualcosa che sembrava difficile da ricordare diventa più facile (almeno con me lo fa).

Annotare le cose aiuta più di quanto si pensi (avendo lavorato nell'istruzione, so che questo può avere enormi effetti positivi sulla conservazione). Soprattutto se riesci a metterlo in parole tue - piuttosto che copiarlo alla lettera. Se puoi parafrasare o equipararlo a qualcosa che già conosci, ancora meglio.

Ad esempio: in C #, gli oggetti String sono immutabili. Ciò significa che ogni volta che dico al mio programma di modificare il contenuto di un oggetto stringa, ciò che effettivamente accade è che la stringa originale viene distrutta (tecnicamente viene posizionata al livello più basso del Garbage Collector). Esattamente come quando un artista commette un errore durante la creazione di una scultura in marmo: non può essere modificata, quindi viene distrutta e ne viene creata una nuova.

Non è un grande esempio, ma mostra le basi di ciò a cui sto arrivando.

Anche la documentazione di qualità aiuta. Qualcosa che il mio professore di programmazione 101 una volta mi ha detto bloccato con me:

Rendi verbale il tuo commento. Non al punto di stupidità, ma devi essere in grado di scrivere commenti che un non programmatore potrebbe capire. In questo modo, sai che qualcun altro nel progetto può capirlo, perfettamente. Immagina di impiegare mesi a implementare un sistema ma che eri coinvolto in una specie di orribile incidente sulla strada del lavoro. A qualcun altro verrà assegnato il tuo lavoro, specialmente se è vicino al momento critico e se non riescono a capire cosa sta facendo il tuo codice, la produzione si interrompe.

Anche i buoni libri sono una risorsa eccellente. Un tutor diverso una volta mi disse che se un libro non ha un indice (e ce ne sono molti, là fuori che non ce l'hanno), allora non vale la pena acquistarlo.

Google può essere una risorsa straordinaria, ma fai attenzione ai codificatori copia-incolla. Stai lontano dai siti che ti danno solo un blocco di codice senza spiegazioni. Preferisco leggere un intero articolo su piccoli blocchi di codice, in questo modo vai via sapendo esattamente cosa deve fare il blocco di codice, come lo fa e perché il programmatore lo ha scritto in quel modo.

spero che sia d'aiuto

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.