Uno sviluppatore dovrebbe essere costretto a memorizzare i dettagli? [chiuso]


33

Molte volte dimentico le cose sulla mia applicazione. Non memorizzo i nomi delle tabelle o ciò che ha fatto una query e cerco di ottenere ciò che desidero. Il mio team leader mi ha detto che dovrei memorizzare i nomi delle tabelle che uso.

Lo sviluppatore è tenuto a memorizzare i nomi delle tabelle nel database, i nomi delle classi ecc.? E se la risposta è "Sì, sempre", cosa dovrei fare per ricordare quelle cose?


27
Vorrei poterli dimenticare.
JeffO,

6
Digli che dovrebbe scrivere con la mano sinistra (che è estremamente facile per alcuni e abbastanza difficile per altri).
Giobbe

4
“Costretto a memorizzare i nomi delle tabelle” ??? WTF !? “Tutti devono imparare questi diecimila nomi di colonne entro la fine della settimana! Quindi ci sarà un test; chiunque non ottenga il 100% sarà alimentato forzatamente prima dal mio orgoglio privato di leoni rabbiosi !!! Bwahahahahaa !!!!! ”
Donal Fellows,

4
Quando ero uno studente in cooperativa, ho lavorato con un ragazzo che mi ha chiesto esattamente questo, mi ha detto che stavo "perdendo tempo" quando ho cercato le cose, ha detto "hai detto che avresti studiato questo!" quando non potevo recitare i nomi delle tabelle (e il loro contenuto) dalla memoria e usavo la mia mancanza di impegno nel memorizzare i nomi delle tabelle come una scusa per smettere del tutto di farmi da mentore. L'ho salvato nel mio rapporto sulla cooperazione.
user16764

2
Non memorizzare, memoize.
Tylermac,

Risposte:


63

Non dovresti aver bisogno di memorizzare esplicitamente queste cose. Con questo intendo sedermi e impararli come faresti con un elenco di parole per un test di ortografia. In primo luogo i nomi dovrebbero essere memorabili e rilevabili in modo da poterli ritrovare senza troppi sforzi.

Dovresti anche avere accesso agli strumenti che ti aiutano qui con il completamento automatico e simili.

In un grande sistema di oltre 100 tabelle non c'è modo di aspettarsi di ricordare ogni nome di tabella e ogni nome di colonna, tuttavia, con nomi memorabili, rilevabili e un uso regolare dovresti ritrovarti a ricordare i dettagli più importanti e quelli che usi ogni giorno.


6
Avendo lavorato in un'app con tabelle 4K, posso attestare l'utilità di questo consiglio. La memorizzazione non aiuta, le convenzioni del progetto lo fanno (specialmente quando vengono applicate; in caso contrario, devi fare affidamento sulla tua memoria).
Vineet Reynolds,

1
Per aiutare la rilevabilità, crea cheat-sheet e / o diagrammi (modello) delle cose di cui hai bisogno. In questo modo, dovrai solo guardare il tuo documento o documento / immagine e puoi cercare i nomi delle tabelle e delle colonne di cui hai bisogno.
Kissaki,

34

Einstein ha detto "non memorizzare mai ciò che puoi cercare [nei libri]", e sono completamente d'accordo.

Usa la tua memoria per cose astratte (tecniche e principi di sviluppo) e non fatti che puoi trovare quando ne hai bisogno.


sì ... non memorizzarlo, arriverà mentre usi le informazioni. Tieni sempre a portata di mano i documenti di riferimento per questo.
Newtopian,

17

Imbarazzante da ammettere - uso C da quasi 30 anni ormai, ma non ricordo mai come dichiarare i puntatori a funzione - devo sempre uscire da K&R per verificare la sintassi.

Ancora più imbarazzante, devo pensare molto a come funziona typedef - è:

 typedef foo int;

o

 typedef int foo;

Questi sono i miei punti ciechi personali. Non mi preoccuperei se ne hai di simili.


2
+1: Ho iniziato a programmare C nel 1985 e devo ancora cercare come dichiarare i puntatori a funzione. L'altro giorno mi sono preso una pugnalata e ha funzionato, ed ero abbastanza soddisfatto di me stesso. (Ricordo come fare i typedef ... :-)
Bob Murphy l'

2
Sono felice che nel linguaggio con cui lavoro (C #) l'equivalente dei puntatori a funzioni sia effettivamente analizzabile dagli umani, non solo dal compilatore.
svick,

@svick Oh, non ho problemi a leggere i puntatori a funzione, sta ricordando come scriverli con cui ho problemi.
Neil Butterworth,

3
Non ho deliberatamente memorizzato le tabelle di precedenza C o C ++. Li ho a portata di mano per un riferimento immediato se ne ho bisogno, e davvero non voglio scrivere codice che confonderà qualcun altro che non li abbia memorizzati.
David Thornley,

Il codice che dipende da regole di precedenza non ovvie è un codice errato.
Gort il robot il

9

I computer sono bravi a ricordare esattamente le cose. I computer sono anche bravi a trovare cose che hanno ricordato in precedenza.

Quindi l'abilità chiave è usare il computer come estensione della tua memoria. Scrivi codice pulito, documenti, impara a utilizzare gli strumenti di ricerca in modo efficace, imposta il tuo ambiente di sviluppo in modo che sia facile trovare cose, ecc.

Un piacevole effetto collaterale è che renderai anche più facile per gli altri leggere il tuo codice.


5

La memoria è importante

Un forte ricordo è davvero uno dei migliori talenti che uno sviluppatore può avere; in realtà che chiunque può avere. È davvero una cosa speciale e invidio e ammiro coloro che ne sono benedetti. Può sicuramente aiutare una persona a essere uno sviluppatore, un avvocato, un meccanico più forte o (inserire un lavoro di scelta qui).

Quanto dovrebbe essere richiesto?

Ma non credo sia un requisito equo richiedere la memorizzazione di tutte le cose. Credo che inizierai a impegnare le cose nella memoria come parte naturale del fare le cose. Ecco perché leggere un libro su una lingua e usarlo in un ambiente di produzione non è la stessa cosa. Mentre lavori quotidianamente con qualcosa (alcuni chiamerebbero questa "pratica") inizierai a rendere alcune cose una seconda natura.

Come per gli altri poster, credo che la memorizzazione di parti chiave dell'applicazione sia di aiuto. Tuttavia, non sono sicuro che investire nella memorizzazione di tutto ciò valga la pena di essere investito quando puoi trarre vantaggio da funzionalità come l'intellisense, che è sempre più comune negli strumenti moderni.

Come puoi migliorare?

Non sono un esperto di memoria, ma alcuni credono che tu possa davvero migliorare la memoria attraverso esercizi mentali come giochi di cervello (parole crociate, sudoku, puzzle, ecc.). La teoria è che il tuo cervello è come un muscolo e se lo usi in diversi modi e lo eserciti, puoi rafforzarlo.

Sarebbe interessante vedere studi su come cose come fare giochi di cervello, programmazione e attività interattive influenzerebbero un cervello nel tempo. Queste cose potrebbero aiutare a combattere l'inizio della perdita di memoria causata dall'età o dalla demenza?


5

Da dove vengo, c'è un vecchio detto che recita in inglese in questo modo: "Un pazzo memorizza, un uomo intelligente annota". Fondamentalmente, non importa quanto sia bella la tua memoria, dimenticherai . Sei solo umano. E questo, di conseguenza, fa affidamento sulla memoria umana ... beh, inaffidabile. Anche se pensi di ricordare quei nomi di tabella, puoi esserne sicuro al 100%? Ti bastano pochi secondi per cercare i nomi delle tabelle, ma potresti aver bisogno di ore o addirittura giorni per rintracciare i bug causati dall'ortografia errata.

In conclusione, no, è un requisito ridicolo, specialmente su grandi progetti, che possono avere migliaia di tabelle e classi.


3

Se è in qualcosa su cui stai lavorando ed è un compito a lungo termine, allora sì, dovresti lavorare per l'apprendimento ed essere in grado di ricordare vari nomi di tabelle e colonne, classi, variabili e metodi. Questo è qualcosa che verrà attraverso il tempo mentre lavori con loro. Non li imparerai tutti dall'oggi al domani, ma dovresti cercare di conoscere il più possibile il sistema su cui stai lavorando. Inoltre, in un sistema di grandi dimensioni, non c'è modo di memorizzare tutto, ma non c'è motivo di non imparare e ricordare il più possibile.

Dover cercare tutto in ogni momento è solo un successo per la produttività - se stai lavorando su un compito e devi fermarti e cercare le cose ogni pochi minuti, è una pausa nella concentrazione. Usa gli strumenti appropriati per aiutarti e impara / memorizza ciò che puoi. Migliorerà notevolmente la tua produttività.


1
Non sono assolutamente d'accordo con il ricordare i dettagli. Dovresti ricordare concetti e funzioni. Cioè, sapere cosa può fare il sistema e sapere come si trova il metodo esatto / nome variabile / colonna.
edA-qa mort-ora-y

1
Non mi aspetto che tu sappia tutto, ma mi aspetto che chiunque lavori su un particolare sottosistema conoscerà quel sottosistema dentro e fuori. Considererei quella conoscenza attenta al tuo lavoro.
Thomas Owens

3

È utile memorizzare i nomi esatti delle classi? Io non la penso così.

Ha senso sapere quale tipo di termini il progetto usa nei nomi delle classi, in modo da poterli cercare più velocemente? Decisamente.


2

Non sono d'accordo sul fatto che dovresti memorizzare i nomi delle tabelle, ma dovrebbero essere facili da indovinare. Per renderlo facile da indovinare, sii coerente. In questo modo, non ti chiederai "Hmm .. è il foo table plurale o singolare? È l'ID della chiave primaria o RID o FooRID?"


2

Non so come si possa interrogare un database in qualsiasi momento senza conoscere i principali nomi delle tabelle e i nomi delle colonne critiche (ma certamente non tutto). Conosco le persone che conoscono queste cose senza doverle capire ogni volta che diventano più preziose per l'organizzazione e diventano le "persone" quando gli altri sono bloccati.

Trovo che spesso quando le persone non iniziano a imparare queste cose, commettono errori nelle query senza rendersene conto. Errori che rilevo spesso all'istante nelle revisioni del codice perché capisco la struttura del nostro database e il modo in cui le tabelle si relazionano tra loro e quali sono le regole aziendali fondamentali senza doverle cercare.

Personalmente trovo che le persone che non si preoccupano di apprendere la struttura spesso rimangono a livello principiante nell'interrogare quel particolare database. Inoltre tendono a non sopravvivere ai licenziamenti. Penso che il tuo capo stia cercando di farti un favore per farti prestare maggiore attenzione.


1

Più che la forte memoria, quella che aiuta molto è la progettazione guidata dal dominio e il fatto di seguire convenzioni semplici come nomi di tabelle e nomi di classi per essere lo stesso. Se il proprietario dell'azienda ti parla del requisito, i termini specifici del dominio da lui utilizzati dovrebbero essere presenti nel codice. In questo caso non dobbiamo ricordare le mappature tra termini commerciali e nomi nel codice. Questa abitudine richiede un po 'di tempo per prendere piede, ma è molto utile in quanto riduce anche gli errori di traduzione avanti e indietro tra i proprietari e gli sviluppatori.

Insieme a questo se la durata del progetto è molto lunga, familiarizzare con la base di codice per un periodo di tempo aiuterà inconsciamente la memoria.


mi scusi, potresti spiegare qual è il significato di domain driven design?
Anyname Donotcare l'

1
@just_name Ho iniziato con questo martinfowler.com/bliki/EvansClassification.html
Vinod R
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.