i have trouble seeing the logic in code sometimes
Questo è comune, non ti preoccupare. Capire il codice che non ti è familiare è come cercare di capire come pensa qualcun altro. Di solito ottenere una soluzione dettagliata di tutta la porzione (non dell'intero sistema poiché potrebbe far esplodere la testa se l'intero sistema è abbastanza grande) dell'architettura di sistema aiuta molto. Una volta compresa la soluzione generale, la logica nei blocchi di codice specifici può iniziare a dare un senso un po 'più.
Mi sembra che tu abbia bisogno di esercitarti nell'architettura di sistema. La prossima volta che stai affrontando un problema, dimentica il codice . Innanzitutto, capisci perfettamente il problema con cui stai trattando . Naturalmente, se non si capisce perfettamente un dato problema, la soluzione ingegneristica sarà al massimo difficile. Successivamente, dai un'occhiata per vedere se c'è un'implementazione per quel problema disponibile (OS), o se c'è un modello di progettazione che può essere applicato ad esso ( Wikipedia ha una lista decente). In caso contrario, inizia a desigare una soluzione (ancora non pensandoci nemmeno al codice - tutto questo dovrebbe essere design astratto).
Una volta terminato il progetto, quindi inizia la codifica.
Naturalmente, studiando schemi e algoritmi di progettazione (e progettazione / analisi degli algoritmi) sicuramente ti ti aiuto nella tua conquista qui, ma la pratica è altrettanto importante (indipendentemente dal fatto che tu realizzi i tuoi progetti o non è accanto al punto).
Fare questo abbastanza volte aiuterà a stimolare la soluzione dei problemi astratti pensando che tu stia riscontrando problemi.
E non mai dimentica: non importa quanto tu pensi di essere bravo, sempre essere qualcuno (o un numero di qualcuno) che è più veloce / migliore / più luminoso di te. Utilizza per aiutarti a migliorare, non lasciare che le loro abilità ti frustrino.