Credo che tu stia facendo la domanda sbagliata qui, e se mi permetti un po 'di psicologia ingiustificata, penso che sia perché sei afflitto da un po' di insicurezza e scarsa fiducia in se stessi.
Smetti di paragonarti ampiamente agli altri
Prima di tutto, non puoi confrontarti a livello generale con altri programmatori. Anche le rock star alle quali potresti guardare in questo momento probabilmente hanno problemi (sciatteria, Yet Another Way Of Doing Things e problemi di atteggiamento), quindi non preoccuparti se ti confronti. Invece, il tuo approccio dovrebbe essere quello di acquisire quanti più mentori puoi, raccogliere tutte le conoscenze possibili e migliorare guardando e imitando gli esperti.
Imparare a imparare
Inoltre, l'approccio migliore per diventare un programmatore e uno studente migliori in generale non è l'apprendimento di cose specifiche o la comprensione mediante la memoria. IMO, la memorizzazione automatica è la forma più bassa di apprendimento. È come un programma a cui manca il passaggio cruciale di "elaborazione" di Input-> Process-> Output. Insegna a te stesso concetti come quelli che hai menzionato nella tua domanda. L'ampia comprensione della programmazione è quella in cui offri il massimo valore. Imparare una nuova lingua all'interno di paradigmi con cui hai familiarità è un gioco da ragazzi rispetto all'apprendimento della risoluzione dei problemi.
E ora, per qualche consiglio scarso da qualcuno solo un po 'più grande di te
Uno dei più grandi errori che ho commesso da giovane è stato quello di aver preso le decisioni di tutti gli altri assumendo che non fossi abbastanza bravo e che il mio tempo e il mio talento non valessero il loro tempo e denaro. Sottolineo costantemente le mie capacità e il mio talento, per quanto scarso possa essere stato in quel momento. Questo è stato un errore enorme.
Quello che devi capire è che anche un programmatore moderatamente decente sembra un mago per la media di tutti i giorni. Potrebbero odiarti, potrebbero ammalarsi di dover sempre chiedere a un secchione locale come accendere il computer, ma poiché mancano di comprensione e comprensione di ciò che fai, non importa quanto ti sembri banale e semplice, è impossibile a loro.
Le persone ti pagheranno per il tuo tempo, il tuo talento e la tua energia. Ci sono abbastanza programmatori assolutamente terribili nel nostro settore che stanno uccidendo semplicemente perché possono sedersi su un sedile e (probabilmente) scrivere programmi di base. Gioca bene le tue carte sviluppando un po 'di fiducia in te stesso attraverso i risultati, esercita il tuo linguaggio e il linguaggio del corpo, continua a padroneggiare il tuo mestiere cercando sempre cose che non conosci e corri verso quelle cose per cercare più comprensione, e infine: smetti di minimizzare le abilità che hai sviluppato.