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.