Sono un ingegnere informatico in erba (ora al secondo anno, specialista in CS) e faccio davvero fatica a capire i programmi degli altri. Voglio sapere se questa abilità (o mancanza) può essere un handicap per me, e se sì, come posso svilupparla?
Sono un ingegnere informatico in erba (ora al secondo anno, specialista in CS) e faccio davvero fatica a capire i programmi degli altri. Voglio sapere se questa abilità (o mancanza) può essere un handicap per me, e se sì, come posso svilupparla?
Risposte:
Il modo in cui lo sviluppi è scrivendo il tuo codice (molto) e sì, cercando di leggere il codice di altre persone.
Il problema, ovviamente, è che non tutti pensano come fai tu. Sono stato in una classe Java del primo anno molto tempo fa e ci è stato assegnato un incarico. Contrariamente a ciò che credevo (che era che le risposte sarebbero convergute su tre o quattro soluzioni comuni), tutti in classe avevano una soluzione unica per il compito.
Ne consegue che dovresti leggere un buon codice.
Questo è uno dei motivi per cui i motivi di design sono diventati così popolari e perché dovresti studiarli. I pattern di progettazione forniscono un vocabolario comune per i programmatori con cui comunicare e sintonizzano la tua mente per modi "migliori" per risolvere i problemi di elaborazione.
Dovresti anche studiare algoritmi e strutture dati.
Corollario: dovresti sempre sforzarti di scrivere codice che altri sviluppatori possano facilmente comprendere.
È molto importante
Una volta laureato e uscito nel mondo, la maggior parte dei progetti su cui lavorerai avrà già il codice fornito da altri. Lucky è il programmatore che riesce a passare tutto il suo tempo in progetti greenfield!
È un'abilità che si acquisisce attraverso la pratica e pazienza, e in molti casi, si tratta di una capacità che molte persone in realtà non ottengono molto opportunità di lavorare su fino a quando , dopo la laurea e ottenere quel primo lavoro. Rilassare!
(anche se la tua scuola ha un programma cooperativo, questo ti darebbe esperienza pre-laurea lavorando a grandi progetti scritti principalmente da altre persone E ti farà ottenere crediti accademici! Qualcosa da esaminare, se disponibile)
È un'abilità importante , a seconda delle specifiche di dove lavori, potrebbe persino essere più importante della scrittura del codice stesso.
Come altre abilità, la pratica rende perfetti! Prova a leggere il codice di un altro programmatore, esegui il debug e ciò che mi aiuta personalmente, è il refactoring o il miglioramento di piccoli frammenti di codice e l'espansione da lì.
Esistono competenze distinte sia nel codice di lettura che in quello di scrittura.
Per quanto riguarda la lettura contro la scrittura. Sì, la lettura è essenziale.
Alcune massime che aiutano molti di noi a farlo sono:
OK. Quindi è tutto fantastico. Ora giù a quello che probabilmente stai vivendo.
Oh mio Dio, questa enorme base di codice con decine di migliaia di righe di codice sorgente e classi lunghe centinaia di righe con dipendenze folli e ogni volta che provo a seguire qualcosa devo mantenere 10 livelli nella mia testa, ecc. ecc.
Familiarità ? Si. Respiro profondo. Rilassare. È normale. È ciò di cui sono fatti i sistemi di produzione. Le persone sopravvivono (e fioriscono) in queste situazioni apparentemente incomprensibili perché:
La maggior parte di queste risposte si concentra sull'importanza della lettura del codice per l'auto-miglioramento. Sono pienamente d'accordo e lo approvo.
C'è un altro aspetto da tenere a mente: anche se tu fossi un prodigio che non poteva trarre beneficio dalla lettura di altri approcci (impossibile, ma per ragioni di argomento ....), avresti comunque bisogno di sapere come leggere il codice a causa di un concetto che fondamentalmente non esiste in ambito universitario: la stragrande maggioranza dei progetti del settore sono progetti a campo bruno (ovvero all'interno o integrazione con una base di codice preesistente).
La necessità di leggere il codice solo per comprendere la base di codice e i processi esistenti è reale. È sempre possibile porre domande ad un altro sviluppatore sul codice, ma ciò può richiedere solo così tanto tempo. Le persone se ne vanno, cambiano progetto o il tempo passa semplicemente. I dettagli di basso livello svaniscono dalla memoria e i programmatori di manutenzione applicano patch. Ad un certo punto, non esiste un'unica fonte di verità tranne il codice stesso.
Una buona igiene del codice, guide di stile, revisioni del codice e documentazione aiutano, ma a un certo punto il codice è la fonte della verità per ciò che accade e l'unico modo per trovare la risposta sarà andare a prenderlo da soli. A parte i suoi usi nello sviluppo personale, la capacità di leggere il codice è un'abilità distintamente separata dalla sua scrittura.
Comprendere il codice degli altri è qualcosa a cui non puoi sfuggire, poiché molto probabilmente lavorerai in gruppo anche se non in gruppo dovrai cercare cose diverse su Google e dovrai capire il codice di esempio. Quindi sì, è un must.
Quello che sento è che tutti hanno questa sensazione che potrebbe essere un po 'meno di altri appositamente all'inizio, capisci il tuo codice meglio di altri codice mentre passi molto più tempo con il tuo codice di quello di qualcun altro mentre leggi non solo leggi ma scrivi e struttura nella tua mente. Se inizi a passare più tempo con il codice degli altri e provi prima a vedere quale tipo di struttura / flusso viene utilizzato, questo ti farà sicuramente capire meglio il codice.
Per rendere il mio punto ancora più convincente se hai del codice che hai scritto un anno fa, prova a capirlo di nuovo e posso dire con certezza che ci vorrà più tempo ma meno del codice di altri poiché hai idea di come strutturi il tuo codice.
Spero che questo aiuto, non rimanere deluso sia perfettamente normale. Trascorri più tempo con il codice e alla fine lo otterrai.
Bene, mi è appena stato dato un progetto con circa 100.000 righe di codice scritto da un team in un altro paese e devo apportare alcune modifiche molto significative a una copia del loro codice nei prossimi mesi, lasciando così tanto codice in comune il più possibile.
Mi dici come posso fare il mio lavoro senza la capacità di leggere velocemente il codice di altre persone. Se non riesci a leggere il codice di altre persone, sei completamente, completamente bloccato.