Quali sono le buone strategie da utilizzare per apprendere il funzionamento di sistemi più grandi? [duplicare]

0

Per ovvi motivi (sii uno sviluppatore migliore) desidero acquisire una comprensione più profonda non solo del mio codice, ma dei sistemi / framework / librerie con cui lavoro. Come senior-ish dev *, credo che dovrei avere più di un livello di comprensione a livello superficiale, tuttavia sto lottando per portarmi a quel livello di esperienza.

In termini più concreti. Ho lavorato con Android per ~ 5 anni. Conosco bene le API, ma recentemente ho riscontrato un bug. Sulla rotazione della seconda schermata FragmentManager non riesce a trovare il target Fragment dopo il ripristino, causando così il crash dell'applicazione.

Dopo aver fatto il solito

  • cerca overflow dello stack google
  • esegue il debug del codice mio passo dopo passaggio
  • leggere / eseguire il debug di sezioni di codice framework che sembrano pertinenti

Sono uscito vuoto quindi vado un passo oltre.

  • leggi la documentazione
  • guarda i talk tecnici su youtube

Se ciò non aiuta di solito, alla fine mi induce a tentare di leggere l'interezza di una o due classi di codice quadro nel tentativo di comprenderlo più pienamente. Questo è quasi sempre uno sforzo infruttuoso.

Non sembrare drammatico, ma può sembrare abbastanza senza speranza quando arrivo a questo punto e ancora non ho una soluzione. Ora sto leggendo intere classi di codice. Ma faccio fatica a mettere le informazioni nel loro contesto, oa coglierne il vero uso.

Come esempio Leggendo qualcosa come di seguito posso fare una specie di gork che ha qualcosa a che fare con il ripristino dei frammenti con i bambini ritenuti, ma è solo un pezzo di informazioni sconnesse e nebulose quando passo al membro o al metodo successivo.

// For use when restoring fragment state and descendant fragments are retained.
// This state is set by FragmentState.instantiate and cleared in onCreate.
FragmentManagerNonConfig mChildNonConfig;

Dopo aver letto l'intera classe, sto manipolando molti concetti apparentemente non correlati nel mio cervello, e ancora non ho idea di come interagiscano con se stessi e le altre classi.

A volte mi chiedo se sono troppo stupido per diventare uno sviluppatore senior. (È giusto dirlo se è vero. Non sto cercando di mettere i paraocchi qui e far finta che tutto sia OK se non lo è)

Se ce l'hai fatta fino a questo punto, grazie per aver sfiorato il mio vagabondare. Quello che immagino si riduca a è

Come ti avvicini alla comprensione di grandi sistemi interconnessi che non hai scritto?

* Sono stato un esperto di software professionale per quasi un decennio. Tuttavia ho commesso l'errore di trovare ruoli nei casi in cui A) Io lavoro da solo o B) c'è poca tolleranza per la crescita personale. Certamente faccio studi autodiretti e ho imparato molto durante la mia carriera, ma mi sento ancora in confronto a persone con posizioni simili che sono in ritardo. Spero davvero di trovare alcune strategie che mi aiuteranno ad elevarmi al livello successivo.

Un'altra nota a margine, sto lavorando per trovare un impiego in un team di sviluppo software appropriato in cui posso avere una revisione del codice e collaboratori per rimbalzare idee. Sono sicuro che mi aiuterà un po ', ma non sono sicuro che sarà un beneficio tanto quanto spero.

    
posta thermosiphon 12.07.2018 - 21:22
fonte

1 risposta

1

Tutto ciò che hai detto sembra ragionevole. Non c'è davvero un modo semplice per imparare qualcosa di complicato.

L'unica idea (che hai contattato) che incoraggerei ad andare oltre, è in esecuzione con il debugger.

Se riesci a far funzionare un debugger simbolico, con il codice sorgente per tutti i componenti nascosti del sistema (dipende molto dalla lingua e dagli strumenti che stai usando e se l'origine della libreria è tutto disponibile) - Ho trovato solo vagare attraverso il codice nel debugger è un ottimo strumento di apprendimento.

Tipicamente: scegli un'azione o un'operazione che intendi (dal punto di vista degli utenti che esegue il software) - e intervieni e segui il processo che segui. In ogni fase di debug, puoi decidere dove vuoi approfondire e capire più a fondo, e dove vuoi saltare e vedere cosa succede dopo.

    
risposta data 12.07.2018 - 21:32
fonte

Leggi altre domande sui tag